Skip to content

OpenAI 函数调用(Function Calling) API 文档

概念介绍

函数调用(Function Calling)是AI大模型的一种能力。允许大语言模型在对话过程中调用外部函数/工具。当用户提问需要实时数据(如天气、股票等)时,模型会返回函数调用请求,开发者可以在后端执行相应函数并返回结果。

接口地址

https://www.dmxapi.cn/v1/chat/completions

请求示例

python
"""
DMXAPI Function Calling 示例
功能:演示如何使用 DMXAPI 的函数调用功能查询天气信息
"""

import http.client
import json

# ========== 第一步:建立连接 ==========
# 创建到 DMXAPI 服务器的 HTTPS 安全连接
conn = http.client.HTTPSConnection("www.dmxapi.cn")

# ========== 第二步:构造请求数据 ==========
payload = json.dumps({
    # 模型配置
    "model": "gpt-5-mini",              # 使用的 AI 模型
    "max_tokens": 16384,              # 限制返回的最大 token 数量
    "temperature": 1,             # 控制生成文本的随机性(0-2,越高越随机)
    "stream": False,                # 是否使用流式输出(False 为一次性返回)
    
    # 对话消息
    "messages": [{
        "role": "user",             # 消息角色:用户
        "content": "上海今天几度?"  # 用户的问题内容
    }],
    
    # 工具定义(Function Calling)
    "tools": [{
        "type": "function",         # 工具类型:函数
        "function": {
            # 函数基本信息
            "name": "get_current_weather",        # 函数名称(模型会调用此函数)
            "description": "获得天气信息",         # 函数功能描述(帮助模型理解何时调用)
            
            # 函数参数结构定义
            "parameters": {
                "type": "object",                 # 参数类型为对象
                "properties": {
                    # 参数1: 地点(必填)
                    "location": {
                        "type": "string",
                        "description": "上海, 中国" # 位置描述
                    },
                    # 参数2: 温度单位(可选)
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"]  # 枚举值:摄氏度或华氏度
                    }
                },
                "required": ["location"]          # 声明 location 为必填参数
            }
        }
    }]
})

# ========== 第三步:设置请求头 ==========
headers = {
    "Accept": "application/json",                           # 接受 JSON 格式响应
    "Authorization": "Bearer sk-************************",  # DMXAPI 密钥认证(请替换为你的真实密钥)
    "Content-Type": "application/json"                      # 请求体为 JSON 格式
}

# ========== 第四步:发送 POST 请求 ==========
# 向 /v1/chat/completions 端点发送请求
conn.request("POST", "/v1/chat/completions", payload, headers)

# ========== 第五步:接收并处理响应 ==========
res = conn.getresponse()            # 获取响应对象
data = res.read()                   # 读取响应数据(字节格式)

# ========== 第六步:输出结果 ==========
# 将字节数据解码为 UTF-8 字符串并格式化输出 JSON
response_data = json.loads(data.decode("utf-8"))
print(json.dumps(response_data, indent=2, ensure_ascii=False))

返回示例

json
{
  "id": "chatcmpl-CZEX9yYU5w2C97QyimOkQR0tjr3ID",
  "object": "chat.completion",
  "created": 1762513383,
  "model": "gpt-5-mini-2025-08-07",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "refusal": null,
        "tool_calls": [
          {
            "function": {
              "arguments": "{\"location\":\"上海, 中国\",\"unit\":\"celsius\"}",
              "name": "get_current_weather"
            },
            "id": "call_Syfqyc3RXs1XNjjhUfDUwH76",
            "type": "function"
          }
        ],
        "annotations": []
      },
      "logprobs": null,
      "finish_reason": "tool_calls"
    }
  ],
  "usage": {
    "prompt_tokens": 146,
    "completion_tokens": 96,
    "total_tokens": 242,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 64,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "system_fingerprint": null
}

© 2025 DMXAPI OpenAI 函数调用

一个 Key 用全球大模型