【Agent初认识】你懂工具调用Tool Use么?
核心概念:Function Calling
Function Calling = 让 AI 能够调用外部函数的能力
就像你写代码时调用 print()、len() 一样,现在 AI 也能调用你定义的函数。
工具调用的完整流程
@tool 装饰器做了什么?
它把你的函数变成一个"可以被 AI 调用"的对象:
@tool
def get_weather(city: str) -> str:
"""获取城市天气"""
return "晴天,26度"
告诉 AI 有什么工具(System Prompt)
("system", """你有以下工具:
- get_weather(city: str): 获取城市天气
输入:城市名称,如"北京"
返回:该城市的当前天气
""")
关键问题:AI 怎么知道怎么用这个工具?
靠两个东西:
工具名称 → AI 知道"有这个东西"
工具描述(docstring) → AI 知道"什么时候用它、怎么用"
AI 生成调用指令
用户:北京今天天气怎么样?
AI 思考:
"用户问天气,我需要调用 get_weather 工具,参数是 city='北京'"
AI 输出(OpenAI 标准格式):
{
"name": "get_weather",
"arguments": {
"city": "北京"
}
}
解析并执行工具
# 收到 AI 的输出
ai_output = {
"name": "get_weather",
"arguments": {"city": "北京"}
}
# 1. 根据名称找到对应工具
tool = tool_map["get_weather"]
# 2. 传入参数,执行工具
result = tool.invoke({"city": "北京"})
# 返回:晴天,26度
# 3. 把结果告诉 AI,让它继续思考
messages.append(("user", f"工具返回:晴天,26度"))
AI 给出最终答案
AI 看到:
- 用户问:北京天气
- 工具返回:晴天,26度
AI 回答:
"根据查询结果,北京今天天气晴朗,温度 26 度。" ✅

浙公网安备 33010602011771号