Documentation Index
Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
Use this file to discover all available pages before exploring further.
概念定义
函数调用是LLM通过结构化接口调用外部工具、API和函数的能力,实现与真实世界系统的交互和任务执行。
详细解释
函数调用(Function Calling)是2025年LLM最重要的能力之一。它让模型从”只会说话”进化到”能够行动”,通过调用预定义的函数来执行实际任务,如查询数据库、控制设备、调用API等。
技术演进历程:
- 2023:OpenAI首次引入,单一函数调用
- 2024:并行调用、错误重试机制成熟
- 2025:MCP协议统一、实时流式调用、智能编排
核心优势:
- 精确执行:避免幻觉,基于真实数据
- 实时性:获取最新信息,突破训练时间限制
- 可扩展:轻松集成新功能,无需重训练
- 安全可控:权限管理、审计追踪
工作原理
JSON Schema定义
{
"name": "search_database",
"description": "搜索产品数据库",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "搜索关键词"
},
"filters": {
"type": "object",
"properties": {
"category": {"type": "string"},
"price_range": {
"type": "object",
"properties": {
"min": {"type": "number"},
"max": {"type": "number"}
}
}
}
},
"limit": {
"type": "integer",
"default": 10
}
},
"required": ["query"]
}
}
调用流程
# 1. 用户请求
user_message = "帮我找价格在1000-2000元的笔记本电脑"
# 2. 模型决策
response = llm.chat(
messages=[{"role": "user", "content": user_message}],
tools=[search_database_tool]
)
# 3. 函数执行
if response.tool_calls:
tool_call = response.tool_calls[0]
result = execute_function(
name=tool_call.name,
arguments=tool_call.arguments
)
# 4. 结果整合
final_response = llm.chat(
messages=[
{"role": "user", "content": user_message},
{"role": "assistant", "tool_calls": [tool_call]},
{"role": "tool", "content": result}
]
)
并行执行优化
2025年的突破性进展,实现智能并行调用:
# 传统串行:8秒
weather = get_weather("Beijing") # 2s
news = get_news("Beijing") # 3s
events = get_events("Beijing") # 3s
# 并行优化:3秒
results = await asyncio.gather(
get_weather("Beijing"),
get_news("Beijing"),
get_events("Beijing")
)
性能提升:
- 并行度:5倍提升
- 执行时间:减少70%
- 能耗:降低40%
MCP协议统一
Model Context Protocol成为2025年行业标准:
// MCP工具定义
{
"tool": {
"name": "database_query",
"description": "Query SQL database",
"inputSchema": {
"type": "object",
"properties": {
"sql": {"type": "string"},
"database": {"type": "string"}
}
}
}
}
主要优势:
- 跨平台兼容:OpenAI、Anthropic、Google通用
- 标准化接口:统一的工具描述和调用方式
- 生态丰富:数千个开源MCP工具
安全与错误处理
权限控制
@require_permissions(["read:database", "write:logs"])
def sensitive_function(params):
# 执行前验证权限
if not check_user_permissions(current_user, required_perms):
raise PermissionError("Insufficient permissions")
# 记录审计日志
audit_log.record(user=current_user, action="database_query", params=params)
# 执行实际操作
return execute_query(params)
错误处理策略
- 输入验证:JSON Schema自动验证
- 超时控制:设置合理的执行时限
- 重试机制:指数退避算法
- 降级方案:功能不可用时的替代方案
- 错误报告:详细的错误信息返回
实际应用案例
1. 智能客服系统
tools = [
check_order_status, # 查询订单
process_refund, # 处理退款
update_shipping_address, # 更新地址
escalate_to_human # 转人工
]
2. 数据分析助手
tools = [
query_database, # SQL查询
create_visualization, # 生成图表
export_report, # 导出报告
schedule_analysis # 定时分析
]
3. DevOps自动化
tools = [
deploy_application, # 部署应用
rollback_version, # 版本回滚
check_system_health, # 健康检查
alert_oncall_team # 告警通知
]
最佳实践
-
工具设计原则
- 单一职责:每个函数只做一件事
- 清晰命名:函数名直观表达功能
- 详细描述:帮助模型理解使用场景
-
性能优化
- 批量操作:减少调用次数
- 缓存结果:避免重复计算
- 异步执行:提高并发能力
-
安全考虑
- 最小权限:只授予必要权限
- 输入净化:防止注入攻击
- 审计日志:记录所有操作
相关概念
延伸阅读