Source code for langchain_core.tools.render

from __future__ import annotations

from inspect import signature
from typing import Callable

from langchain_core.tools.base import BaseTool

ToolsRenderer = Callable[[list[BaseTool]], str]


[docs] def render_text_description(tools: list[BaseTool]) -> str: """Render the tool name and description in plain text. Args: tools: The tools to render. Returns: The rendered text. Output will be in the format of: .. code-block:: markdown search: This tool is used for search calculator: This tool is used for math """ descriptions = [] for tool in tools: if hasattr(tool, "func") and tool.func: sig = signature(tool.func) description = f"{tool.name}{sig} - {tool.description}" else: description = f"{tool.name} - {tool.description}" descriptions.append(description) return "\n".join(descriptions)
[docs] def render_text_description_and_args(tools: list[BaseTool]) -> str: """Render the tool name, description, and args in plain text. Args: tools: The tools to render. Returns: The rendered text. Output will be in the format of: .. code-block:: markdown search: This tool is used for search, args: {"query": {"type": "string"}} calculator: This tool is used for math, \ args: {"expression": {"type": "string"}} """ tool_strings = [] for tool in tools: args_schema = str(tool.args) if hasattr(tool, "func") and tool.func: sig = signature(tool.func) description = f"{tool.name}{sig} - {tool.description}" else: description = f"{tool.name} - {tool.description}" tool_strings.append(f"{description}, args: {args_schema}") return "\n".join(tool_strings)