diff --git a/libs/community/langchain_community/tools/render.py b/libs/community/langchain_community/tools/render.py index 668c643c6793b..983b33aae4f30 100644 --- a/libs/community/langchain_community/tools/render.py +++ b/libs/community/langchain_community/tools/render.py @@ -1,44 +1,12 @@ -"""Different methods for rendering Tools to be passed to LLMs. - -Depending on the LLM you are using and the prompting strategy you are using, -you may want Tools to be rendered in a different way. -This module contains various ways to render tools. -""" -from langchain_core.tools import BaseTool - -from langchain_community.utils.openai_functions import ( - FunctionDescription, - ToolDescription, - convert_pydantic_to_openai_function, +from langchain_community.tools.convert_to_openai import ( + format_tool_to_openai_function, + format_tool_to_openai_tool, ) -def format_tool_to_openai_function(tool: BaseTool) -> FunctionDescription: - """Format tool into the OpenAI function API.""" - if tool.args_schema: - return convert_pydantic_to_openai_function( - tool.args_schema, name=tool.name, description=tool.description - ) - else: - return { - "name": tool.name, - "description": tool.description, - "parameters": { - # This is a hack to get around the fact that some tools - # do not expose an args_schema, and expect an argument - # which is a string. - # And Open AI does not support an array type for the - # parameters. - "properties": { - "__arg1": {"title": "__arg1", "type": "string"}, - }, - "required": ["__arg1"], - "type": "object", - }, - } - - -def format_tool_to_openai_tool(tool: BaseTool) -> ToolDescription: - """Format tool into the OpenAI function API.""" - function = format_tool_to_openai_function(tool) - return {"type": "function", "function": function} +# backward compatibility +def __getattr__(name): + if name == "format_tool_to_openai_function": + return format_tool_to_openai_function + if name == "format_tool_to_openai_tool": + return format_tool_to_openai_tool