forked from Archives/langchain
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
931 B
Python
26 lines
931 B
Python
from langchain.output_parsers import ResponseSchema, StructuredOutputParser
|
|
from langchain.schema import OutputParserException
|
|
|
|
|
|
def test_parse() -> None:
|
|
response_schemas = [
|
|
ResponseSchema(name="name", description="desc"),
|
|
ResponseSchema(name="age", description="desc"),
|
|
]
|
|
parser = StructuredOutputParser.from_response_schemas(response_schemas)
|
|
|
|
# Test valid JSON input
|
|
text = '```json\n{"name": "John", "age": 30}\n```'
|
|
expected_result = {"name": "John", "age": 30}
|
|
result = parser.parse(text)
|
|
assert result == expected_result, f"Expected {expected_result}, but got {result}"
|
|
|
|
# Test invalid JSON input
|
|
text = '```json\n{"name": "John"}\n```'
|
|
try:
|
|
parser.parse(text)
|
|
except OutputParserException:
|
|
pass # Test passes if OutputParserException is raised
|
|
else:
|
|
assert False, f"Expected OutputParserException, but got {parser.parse(text)}"
|