Skip to main content

OpenAI 工具调用示例

以下示例展示如何使用OpenAI兼容接口进行Function Calling(工具调用),让AI能够调用外部函数来获取信息或执行操作。

快速开始

只需要替换 <API-KEY> 为你的实际API密钥即可运行。
curl -X POST "https://model-api.skyengine.com.cn/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API-KEY>" \
  -d '{
    "model": "gpt-5-2025-08-07",
    "messages": [
      {
        "role": "user",
        "content": "北京今天的天气怎么样?"
      }
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "get_weather",
          "description": "获取指定城市的天气信息",
          "parameters": {
            "type": "object",
            "properties": {
              "city": {
                "type": "string",
                "description": "城市名称"
              },
              "unit": {
                "type": "string",
                "enum": ["celsius", "fahrenheit"],
                "description": "温度单位"
              }
            },
            "required": ["city"]
          }
        }
      }
    ],
    "tool_choice": "auto"
  }'

工具调用的工作流程

  1. 定义工具: 在请求中定义可用的函数及其参数
  2. AI决策: AI根据用户输入决定是否需要调用工具
  3. 函数调用: AI生成函数调用请求
  4. 执行函数: 客户端执行相应的函数
  5. 返回结果: 将函数结果发送回AI
  6. 生成回复: AI基于函数结果生成最终回复

工具定义格式

{
  "type": "function",
  "function": {
    "name": "function_name",
    "description": "函数的描述",
    "parameters": {
      "type": "object",
      "properties": {
        "param1": {
          "type": "string",
          "description": "参数1的描述"
        }
      },
      "required": ["param1"]
    }
  }
}

应用场景

  • 信息查询: 天气、股票、新闻等实时信息
  • 数据计算: 数学计算、数据分析
  • 系统操作: 文件操作、数据库查询
  • 外部API: 调用第三方服务
  • 业务逻辑: 执行特定的业务流程

最佳实践

  1. 清晰的函数描述: 提供准确的函数和参数描述
  2. 参数验证: 在函数中进行输入参数验证
  3. 错误处理: 妥善处理函数执行中的错误
  4. 安全考虑: 避免执行危险的操作
  5. 性能优化: 对于耗时操作考虑异步处理

注意事项

  • 工具调用需要两次API请求(决策+生成回复)
  • 确保函数执行的安全性,避免恶意代码注入
  • 合理设置 tool_choice 参数控制工具使用
  • 函数返回结果应该是JSON可序列化的格式