From 730c551819caa2f93a13a53fe750740a5c013a9b Mon Sep 17 00:00:00 2001 From: ccurme Date: Tue, 25 Jun 2024 14:40:42 -0400 Subject: [PATCH] core[patch]: export tool output parsers from langchain_core.output_parsers (#23305) These currently read off AIMessage.tool_calls, and only fall back to OpenAI parsing if tool calls aren't populated. Importing these from `openai_tools` (e.g., in our [tool calling docs](https://python.langchain.com/v0.2/docs/how_to/tool_calling/#tool-calls)) can lead to confusion. After landing, would need to release core and update docs. --- libs/core/langchain_core/output_parsers/__init__.py | 8 ++++++++ libs/core/langchain_core/output_parsers/openai_tools.py | 2 +- libs/core/tests/unit_tests/output_parsers/test_imports.py | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/core/langchain_core/output_parsers/__init__.py b/libs/core/langchain_core/output_parsers/__init__.py index e896193cc15..7a75c667729 100644 --- a/libs/core/langchain_core/output_parsers/__init__.py +++ b/libs/core/langchain_core/output_parsers/__init__.py @@ -24,6 +24,11 @@ from langchain_core.output_parsers.list import ( MarkdownListOutputParser, NumberedListOutputParser, ) +from langchain_core.output_parsers.openai_tools import ( + JsonOutputKeyToolsParser, + JsonOutputToolsParser, + PydanticToolsParser, +) from langchain_core.output_parsers.pydantic import PydanticOutputParser from langchain_core.output_parsers.string import StrOutputParser from langchain_core.output_parsers.transform import ( @@ -47,4 +52,7 @@ __all__ = [ "XMLOutputParser", "JsonOutputParser", "PydanticOutputParser", + "JsonOutputToolsParser", + "JsonOutputKeyToolsParser", + "PydanticToolsParser", ] diff --git a/libs/core/langchain_core/output_parsers/openai_tools.py b/libs/core/langchain_core/output_parsers/openai_tools.py index f79bac5e283..370afe2195a 100644 --- a/libs/core/langchain_core/output_parsers/openai_tools.py +++ b/libs/core/langchain_core/output_parsers/openai_tools.py @@ -5,7 +5,7 @@ from typing import Any, Dict, List, Optional, Type from langchain_core.exceptions import OutputParserException from langchain_core.messages import AIMessage, InvalidToolCall -from langchain_core.output_parsers import BaseCumulativeTransformOutputParser +from langchain_core.output_parsers.transform import BaseCumulativeTransformOutputParser from langchain_core.outputs import ChatGeneration, Generation from langchain_core.pydantic_v1 import BaseModel, ValidationError from langchain_core.utils.json import parse_partial_json diff --git a/libs/core/tests/unit_tests/output_parsers/test_imports.py b/libs/core/tests/unit_tests/output_parsers/test_imports.py index fb164d41403..40478bf7559 100644 --- a/libs/core/tests/unit_tests/output_parsers/test_imports.py +++ b/libs/core/tests/unit_tests/output_parsers/test_imports.py @@ -15,6 +15,9 @@ EXPECTED_ALL = [ "XMLOutputParser", "JsonOutputParser", "PydanticOutputParser", + "JsonOutputToolsParser", + "JsonOutputKeyToolsParser", + "PydanticToolsParser", ]