openai_tools.py — langchain Source File
Architecture documentation for openai_tools.py, a python file in the langchain codebase. 12 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 7d2ea6eb_ed7a_3052_c920_cb5cdc943964["openai_tools.py"] e874d8a4_cef0_9d0b_d1ee_84999c07cc2c["copy"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> e874d8a4_cef0_9d0b_d1ee_84999c07cc2c 73622474_3901_c3da_bce7_e7f2cbdfa6c6["json.py"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 73622474_3901_c3da_bce7_e7f2cbdfa6c6 2a7f66a7_8738_3d47_375b_70fcaa6ac169["logging"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 2a7f66a7_8738_3d47_375b_70fcaa6ac169 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 00fb336c_8832_626d_1bf9_f4f07a04d663["pydantic.py"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 00fb336c_8832_626d_1bf9_f4f07a04d663 75137834_4ba7_dc43_7ec5_182c05eceedf["langchain_core.exceptions"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 75137834_4ba7_dc43_7ec5_182c05eceedf d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> d758344f_537f_649e_f467_b9d7442e86df 552bc7bf_c1ac_965d_e157_ee750ab1993c["langchain_core.messages.tool"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 552bc7bf_c1ac_965d_e157_ee750ab1993c 5d37c56a_542f_e309_4416_d58ad5f08a28["langchain_core.output_parsers.transform"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 5d37c56a_542f_e309_4416_d58ad5f08a28 ac2a9b92_4484_491e_1b48_ec85e71e1d58["langchain_core.outputs"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> ac2a9b92_4484_491e_1b48_ec85e71e1d58 78c5ca66_f675_3ca1_fdb7_d5a994dcf4bf["langchain_core.utils.json"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 78c5ca66_f675_3ca1_fdb7_d5a994dcf4bf 1014fe78_cb2c_fde4_a624_ae899aa7ca8e["langchain_core.utils.pydantic"] 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 --> 1014fe78_cb2c_fde4_a624_ae899aa7ca8e style 7d2ea6eb_ed7a_3052_c920_cb5cdc943964 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Parse tools for OpenAI tools output."""
import copy
import json
import logging
from json import JSONDecodeError
from typing import Annotated, Any
from pydantic import SkipValidation, ValidationError
from langchain_core.exceptions import OutputParserException
from langchain_core.messages import AIMessage, InvalidToolCall
from langchain_core.messages.tool import invalid_tool_call
from langchain_core.messages.tool import tool_call as create_tool_call
from langchain_core.output_parsers.transform import BaseCumulativeTransformOutputParser
from langchain_core.outputs import ChatGeneration, Generation
from langchain_core.utils.json import parse_partial_json
from langchain_core.utils.pydantic import (
TypeBaseModel,
is_pydantic_v1_subclass,
is_pydantic_v2_subclass,
)
logger = logging.getLogger(__name__)
def parse_tool_call(
raw_tool_call: dict[str, Any],
*,
partial: bool = False,
strict: bool = False,
return_id: bool = True,
) -> dict[str, Any] | None:
"""Parse a single tool call.
Args:
raw_tool_call: The raw tool call to parse.
partial: Whether to parse partial JSON.
strict: Whether to allow non-JSON-compliant strings.
return_id: Whether to return the tool call id.
Returns:
The parsed tool call.
Raises:
OutputParserException: If the tool call is not valid JSON.
"""
if "function" not in raw_tool_call:
return None
arguments = raw_tool_call["function"]["arguments"]
if partial:
try:
function_args = parse_partial_json(arguments, strict=strict)
except (JSONDecodeError, TypeError): # None args raise TypeError
return None
# Handle None or empty string arguments for parameter-less tools
elif not arguments:
function_args = {}
// ... (325 more lines)
Domain
Subdomains
Dependencies
- copy
- json.py
- langchain_core.exceptions
- langchain_core.messages
- langchain_core.messages.tool
- langchain_core.output_parsers.transform
- langchain_core.outputs
- langchain_core.utils.json
- langchain_core.utils.pydantic
- logging
- pydantic.py
- typing
Source
Frequently Asked Questions
What does openai_tools.py do?
openai_tools.py is a source file in the langchain codebase, written in python. It belongs to the OutputParsing domain, StreamingParsers subdomain.
What functions are defined in openai_tools.py?
openai_tools.py defines 3 function(s): make_invalid_tool_call, parse_tool_call, parse_tool_calls.
What does openai_tools.py depend on?
openai_tools.py imports 12 module(s): copy, json.py, langchain_core.exceptions, langchain_core.messages, langchain_core.messages.tool, langchain_core.output_parsers.transform, langchain_core.outputs, langchain_core.utils.json, and 4 more.
Where is openai_tools.py in the architecture?
openai_tools.py is located at libs/core/langchain_core/output_parsers/openai_tools.py (domain: OutputParsing, subdomain: StreamingParsers, directory: libs/core/langchain_core/output_parsers).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free