- 调用函数(Function Calling)
- 并行执行多个工具
- 处理复杂的多步骤工作流(Multi-step Workflow)
基础工具定义
请求头
复制
询问AI
curl -X POST https://aihubmix.com/v1/responses \
-H "Authorization: Bearer YOUR_AIHUBMIX_API_KEY" \
-H "Content-Type: application/json" \
请求体
复制
询问AI
{
"model": "claude-sonnet-4-6",
"input": [
{
"type": "message",
"role": "user",
"content": [
{
"type": "input_text",
"text": "What is the weather in San Francisco?"
}
]
}
],
"tools": [
{
"type": "function",
"name": "get_weather",
"description": "Get the current weather at a location",
"strict": null,
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
],
"tool_choice": "auto",
"max_output_tokens": 5000
}
工具调用策略
tool_choice 参数用于控制模型何时以及如何调用工具。
| 参数 | 说明 |
|---|---|
| auto | 由模型自动决定是否调用工具 |
| none | 禁止模型调用任何工具 |
多工具定义
在复杂任务中,可以定义多个工具,让模型根据用户需求选择合适的工具。复制
询问AI
import requests
# 天气工具
weather_tool = {
"type": "function",
"name": "get_weather",
"description": "Get current weather information for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The name of the city"
}
},
"required": ["city"]
}
}
# 计算器工具
calculator_tool = {
"type": "function",
"name": "calculate",
"description": "Perform mathematical calculations",
"parameters": {
"type": "object",
"properties": {
"expression": {
"type": "string",
"description": "The mathematical expression to evaluate"
}
},
"required": ["expression"]
}
}
response = requests.post(
"https://aihubmix.com/v1/responses",
headers={
"Authorization": "Bearer AIHUBMIX_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "glm-5",
"input": [
{
"type": "message",
"role": "user",
"content": [
{
"type": "input_text",
"text": "What is 25 * 4?"
}
]
}
],
"tools": [weather_tool, calculator_tool],
"tool_choice": "auto",
"max_output_tokens": 5000
}
)
print(response.json())
含有工具调用的响应
复制
询问AI
{
"id": "resp_09b8eb7c272559fc0069affbaab5cc8194a5005746b80f3b57",
"object": "response",
"created_at": 1773140906,
"completed_at": 1773140908,
"status": "completed",
"background": false,
"error": null,
"model": "gpt-54",
"service_tier": "default",
"temperature": 1.0,
"top_p": 1.0,
"frequency_penalty": 0.0,
"presence_penalty": 0.0,
"max_output_tokens": 5000,
"max_tool_calls": null,
"parallel_tool_calls": true,
"tool_choice": "auto",
"truncation": "disabled",
"store": true,
"previous_response_id": null,
"prompt_cache_key": null,
"prompt_cache_retention": null,
"instructions": null,
"safety_identifier": null,
"user": null,
"metadata": {},
"reasoning": {
"effort": "none",
"summary": null
},
"content_filters": [
{
"blocked": false,
"source_type": "completion",
"content_filter_raw": [],
"content_filter_results": {},
"content_filter_offsets": {
"start_offset": 0,
"end_offset": 1289,
"check_offset": 0
}
}
],
"text": {
"format": {
"type": "text"
},
"verbosity": "medium"
},
"output": [
{
"id": "fc_09b8eb7c272559fc0069affbabb0288194b63aa879435c7cd0",
"type": "function_call",
"status": "completed",
"name": "calculate",
"call_id": "call_PFtWscQ3pAyfSaotwujhT0sn",
"arguments": {
"expression": "25*4"
}
}
],
"tools": [
{
"type": "function",
"name": "get_weather",
"description": "Get current weather information for a city",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The name of the city"
}
},
"required": ["city"],
"additionalProperties": false
}
},
{
"type": "function",
"name": "calculate",
"description": "Perform mathematical calculations",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"expression": {
"type": "string",
"description": "The mathematical expression to evaluate"
}
},
"required": ["expression"],
"additionalProperties": false
}
}
],
"usage": {
"input_tokens": 86,
"output_tokens": 25,
"total_tokens": 111,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens_details": {
"reasoning_tokens": 0
}
}
}
使用建议
- 清晰的描述:提供详细的功能描述和参数解释。
- 正确的模式:参数应使用有效的 JSON。
- 错误处理:处理工具可能无法调用的情况。
- 并行执行:尽可能设计能够独立运行的工具。
- 对话流程:在后续请求中包含工具响应以提供背景信息。