From 398e4cd2dc46a079071bf4fcd458c790b3796ad6 Mon Sep 17 00:00:00 2001 From: Shotaro Kohama Date: Wed, 28 Jun 2023 21:57:41 -0700 Subject: [PATCH] Update `langchain.chains.create_extraction_chain_pydantic` to parse results successfully (#6887) - Description: - The current code uses `PydanticSchema.schema()` and `_get_extraction_function` at the same time. As a result, a response from OpenAI has two nested `info`, and `PydanticAttrOutputFunctionsParser` fails to parse it. This PR will use the pydantic class given as an arg instead. - Issue: no related issue yet - Dependencies: no dependency change - Tag maintainer: @dev2049 - Twitter handle: @shotarok28 --- langchain/chains/openai_functions/extraction.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/langchain/chains/openai_functions/extraction.py b/langchain/chains/openai_functions/extraction.py index e9286825e1a..ec4ab46a89d 100644 --- a/langchain/chains/openai_functions/extraction.py +++ b/langchain/chains/openai_functions/extraction.py @@ -78,9 +78,9 @@ def create_extraction_chain_pydantic( class PydanticSchema(BaseModel): info: List[pydantic_schema] # type: ignore - openai_schema = PydanticSchema.schema() + openai_schema = pydantic_schema.schema() openai_schema = _resolve_schema_references( - openai_schema, openai_schema["definitions"] + openai_schema, openai_schema.get("definitions", {}) ) function = _get_extraction_function(openai_schema)