dspy.Tool
dspy.Tool(func: Callable, name: str | None = None, desc: str | None = None, args: dict[str, Any] | None = None, arg_types: dict[str, Any] | None = None, arg_desc: dict[str, str] | None = None)
基类:Type
工具类。
该类用于简化在LLM中创建工具调用(函数调用)的工具。目前仅支持函数。
初始化工具类。
用户可以选择指定name、desc、args和arg_types,或者让dspy.Tool
自动从函数中推断这些值。对于用户指定的值,将不会对它们执行自动推断。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
func
|
Callable
|
被工具包装的实际函数。 |
必填 |
name
|
Optional[str]
|
工具的名称。默认为 None。 |
None
|
desc
|
Optional[str]
|
工具的说明。默认为None。 |
None
|
args
|
Optional[dict[str, Any]]
|
工具的参数及其模式,表示为从参数名到参数json模式的字典。默认为None。 |
None
|
arg_types
|
Optional[dict[str, Any]]
|
工具的参数字典类型,表示为从参数名到参数类型的映射。默认为None。 |
None
|
arg_desc
|
Optional[dict[str, str]]
|
每个参数的描述,表示为从参数名到描述字符串的字典。默认为None。 |
None
|
示例:
def foo(x: int, y: str = "hello"):
return str(x) + y
tool = Tool(foo)
print(tool.args)
# Expected output: {'x': {'type': 'integer'}, 'y': {'type': 'string', 'default': 'hello'}}
Source code in dspy/adapters/types/tool.py
函数
__call__(**kwargs)
Source code in dspy/adapters/types/tool.py
acall(**kwargs)
async
Source code in dspy/adapters/types/tool.py
description() -> str
classmethod
extract_custom_type_from_annotation(annotation)
classmethod
从注解中提取所有自定义类型。
这用于从字段的注解中提取所有自定义类型,而注解可以具有任意层级的嵌套。例如,我们检测到Tool在list[dict[str, Tool]]中。
Source code in dspy/adapters/types/base_type.py
format_as_litellm_function_call()
Source code in dspy/adapters/types/tool.py
from_langchain(tool: BaseTool) -> Tool
classmethod
从LangChain工具构建一个DSPy工具。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
tool
|
BaseTool
|
要转换的LangChain工具。 |
必填 |
返回:
| 类型 | 描述 |
|---|---|
Tool
|
一个工具对象。 |
示例:
import asyncio
import dspy
from langchain.tools import tool as lc_tool
@lc_tool
def add(x: int, y: int):
"Add two numbers together."
return x + y
dspy_tool = dspy.Tool.from_langchain(add)
async def run_tool():
return await dspy_tool.acall(x=1, y=2)
print(asyncio.run(run_tool()))
# 3
Source code in dspy/adapters/types/tool.py
from_mcp_tool(session: mcp.client.session.ClientSession, tool: mcp.types.Tool) -> Tool
classmethod
基于MCP工具和ClientSession构建一个DSPy工具。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
session
|
ClientSession
|
要使用的MCP会话。 |
必填 |
tool
|
Tool
|
要转换的MCP工具。 |
必填 |
返回:
| 类型 | 描述 |
|---|---|
Tool
|
一个工具对象。 |
Source code in dspy/adapters/types/tool.py
:::