What is 函数调用?
一种能力,允许语言模型生成带有适当参数的结构化函数调用,使其能够与外部工具和API交互。
Definition
函数调用(也称为工具使用)是一种能力,语言模型生成代表对外部函数或API调用的结构化输出,包括函数名称和正确类型的参数。模型不是产生自由文本回复,而是输出结构化的调用——通常为JSON格式——应用程序可以解析并针对实际系统执行,将结果返回给模型以纳入其回复。
这种能力将LLM从对话式文本生成器转变为能够在现实世界中采取行动的编排引擎。具有函数调用能力的模型可以查询数据库、调用天气API、执行代码、发送邮件或更新CRM系统——全部通过根据用户的自然语言请求生成适当的函数调用。应用层处理执行;模型处理意图理解和参数提取。
函数调用由OpenAI的API推广,此后已在整个LLM生态系统中被采用。Llama 3、Mistral和Qwen等开源模型现在通过在函数调用数据集上进行指令调优来包含函数调用能力。函数调用的质量——正确选择函数、从模糊的自然语言中提取参数以及处理多步工具链——在不同模型之间差异显著,并从在领域特定函数模式上的微调中受益很大。
Why It Matters
函数调用是智能体AI应用的基础。没有它,LLM只能生成文本——有了它,它们可以与数据库、API、文件系统和业务流程交互。这种能力使得AI助手能够从回答问题转变为实际代替用户完成任务。
对于企业应用,函数调用使LLM能够与现有系统集成。组织无需围绕AI重建业务流程,而是可以将现有API作为模型可以调用的函数暴露出来。这大幅减少了将AI能力添加到现有工作流所需的集成工作,并确保AI在既有系统的约束内运行。
How It Works
函数调用通过应用程序和模型之间的协议工作。应用程序向模型提供可用函数列表,每个函数由名称、描述和参数的JSON Schema描述。当用户的请求需要函数调用时,模型生成包含JSON格式的函数名和参数的结构化响应。
应用程序解析函数调用,根据schema验证参数,执行函数,并将结果返回给模型。模型随后将结果纳入其回复。对于复杂任务,这个循环可能重复多次——模型可能调用搜索函数,使用结果构建数据库查询,然后汇总合并的信息。训练模型进行函数调用涉及在自然语言请求与正确函数调用配对的数据集上进行指令调优。
Example Use Case
一个内部帮助台机器人连接了三个函数:search_knowledge_base(query)、create_ticket(title, priority, description)和check_ticket_status(ticket_id)。当员工说'我无法连接VPN,需要紧急修复'时,模型调用search_knowledge_base('VPN访问问题')找到相关解决方案并呈现给用户,如果用户说方案没有效果,就调用create_ticket('VPN访问故障', 'high', '员工无法连接VPN...')来升级——全部通过自然对话完成。
Key Takeaways
- 函数调用允许模型从自然语言请求生成结构化的API调用。
- 它将LLM从文本生成器转变为能在现实世界中采取行动的编排引擎。
- 应用程序提供函数schema;模型生成调用;应用程序执行调用。
- 函数调用质量因模型而异,从领域特定的微调中显著受益。
- 它是智能体AI和工具使用型AI助手的基础能力。
How Ertas Helps
Ertas Studio支 持专门针对函数调用的模型微调,通过在自然语言与正确工具调用配对的数据集上训练,提高模型为领域特定工具集选择函数和提取参数的准确性。
Related Resources
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.