Tool Use (工具调用) 开发教程

Tool Use(在 OpenAI 中也称为 Function Calling)是让大模型连接外部世界的桥梁。通过这个功能,AI 不再只是一个只会聊天的机器,而是能联网搜索、查询数据库、操作软件的智能体(Agent)。

5分钟
2025-12-26
AI教程Tool

Tool Use (工具调用) 开发教程

Tool Use(在 OpenAI 中也称为 Function Calling)是让大模型连接外部世界的桥梁。通过这个功能,AI 不再只是一个只会聊天的机器,而是能联网搜索、查询数据库、操作软件的智能体(Agent)。

1. 原理流程

传统的对话是:用户 -> AI -> 回答。 Tool Use 的对话是:

  1. 用户:"查一下北京现在的天气。"
  2. AI (思考):"我无法直接知道天气,但我有一个 get_weather 的工具。" -> 输出 JSON{"tool": "get_weather", "args": {"city": "Beijing"}}
  3. 你的代码:拦截到这个 JSON,在后台调用真实的天气 API,得到结果 "25度,晴"
  4. 你的代码:将结果发回给 AI:"查询结果是 25度,晴。"
  5. AI (最终回答):"北京现在天气不错,25度,晴天。"

2. 代码实现 (OpenAI 示例)

from openai import OpenAI
import json

client = OpenAI()

# 1. 定义工具
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "获取指定城市的天气",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "城市名称,如 Beijing"}
            },
            "required": ["city"]
        }
    }
}]

# 2. 发送请求
messages = [{"role": "user", "content": "上海天气怎么样?"}]
response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    tools=tools
)

tool_calls = response.choices[0].message.tool_calls

# 3. 处理工具调用
if tool_calls:
    for tool_call in tool_calls:
        function_name = tool_call.function.name
        args = json.loads(tool_call.function.arguments)
        
        if function_name == "get_weather":
            # 模拟API调用结果
            weather_data = "上海,阴天,20度" 
            print(f"调用函数 {function_name},参数 {args},结果 {weather_data}")
            
            # 将结果追加到对话历史
            messages.append(response.choices[0].message)
            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": weather_data
            })

# 4. 获取最终回答
final_response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages
)
print(final_response.choices[0].message.content)

3. 最佳实践

  • 描述要精准:工具的 description 是写给 AI 看的“说明书”。写得越清楚(例如:“只在用户明确询问天气时使用”),AI 调用越准确。
  • 容错处理:AI 输出的 JSON 偶尔可能格式错误,代码中要做好 try-catch 异常处理。
  • 安全风险:不要让 AI 直接执行敏感操作(如删除文件、转账),除非有二次确认机制。

掌握了 Tool Use,你就掌握了开发 Agent 的核心钥匙。

AI导航助手

Powered by DeepSeek

你好!我是AI导航助手,由DeepSeek驱动。

我可以帮你: • 推荐适合你的AI模型 • 解答AI相关问题 • 直接带你跳转到相关页面

试试点击下方问题,或直接输入你的问题!

快捷提问:

哪个AI模型最好?有免费的AI吗?写代码用哪个?API怎么接入?

点击按钮可直接跳转到相关页面