【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 度。" ✅
posted @ 2026-04-14 21:50  Jwwind  阅读(8)  评论(0)    收藏  举报