函数调用允许你定义自定义工具,模型可以根据用户请求自主决定何时调用这些工具。 当定义工具时,xAI 模型始终生成严格遵循工具输入 JSON Schema 的工具调用参数 (strict 标志隐式始终为 true)。
定义工具
工具使用 JSON Schema 定义参数格式:
Python (OpenAI)
from openai import OpenAI
import json
client = OpenAI(api_key=os.getenv("XAI_API_KEY"), base_url="https://api.x.ai/v1")
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["city"]
}
}
}]
response = client.responses.create(
model="grok-4.5",
input="北京今天天气怎么样?",
tools=tools,
)工具调用流程
- 模型接收用户请求和可用工具定义
- 模型决定是否需要调用工具,并生成工具调用参数
- 你的代码执行工具调用,返回结果给模型
- 模型使用工具结果生成最终响应
工具 Schema 支持
工具 Schema 遵循与结构化输出相同的 JSON Schema 支持规则。支持以下类型:
string,number,integer,boolean,nullenum,constarray,objectanyOf,oneOf,allOf$ref/$defs(仅非循环引用)
多工具调用
模型可以在一次响应中调用多个工具。你的代码需要处理多个工具调用结果, 并将所有结果返回给模型以生成最终响应。