Function Calling:连接大模型与业务系统的自然语言接口机制
Function Calling 技术通过让大模型输出函数调用请求,实现了与大模型外部工具及业务系统的连接。文章阐述了该机制的定义、工作流程及国产大模型的支持情况,对比了 OpenAI Actions 与 GPTs 的实现差异。内容涵盖代码示例、常见陷阱分析及高级配置建议,旨在帮助开发者构建自然语言驱动的认知系统,解决大模型知识滞后与逻辑幻觉问题,提升实际业务场景中的应用效果。

Function Calling 技术通过让大模型输出函数调用请求,实现了与大模型外部工具及业务系统的连接。文章阐述了该机制的定义、工作流程及国产大模型的支持情况,对比了 OpenAI Actions 与 GPTs 的实现差异。内容涵盖代码示例、常见陷阱分析及高级配置建议,旨在帮助开发者构建自然语言驱动的认知系统,解决大模型知识滞后与逻辑幻觉问题,提升实际业务场景中的应用效果。

本文重点介绍 Function Calling 的机制和应用,阐述其原理以及为何会出现 Plugin、GPTs 等概念。
接口经历了多个版本的进化:从命令行到 GUI,再到 API,最后到自然语言接口。在这个过程中,媒介发生变化,但都需要约定和规划。面对 ChatGPT 等大模型,我们面对的是自然语言接口。思维上首先要转变的就是要把计算机当成一个人。
大模型有自身的能力缺陷:
因此,需要连接外部世界,对接真实逻辑系统。
函数调用(Function Calling)允许模型输出一个请求调用函数的消息,包含函数信息和参数。这是将 GPT 能力与外部工具/API 连接的新方式。支持函数调用的新模型,可以根据用户输入自行判断何时调用哪些函数,并生成符合要求的请求参数。
import openai
# 定义函数描述
functions = [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location"]
}
}
]
# 模拟调用流程
messages = [{"role": "user", "content": "What's the weather in Beijing?"}]
response = client.chat.completions.create(model="gpt-3.5-turbo", messages=messages, functions=functions)
# 处理 function_call 逻辑...
tools 参数。Actions 内置到 GPTs 中,解决落地场景问题。配置 API 描述信息(OpenAPI 3.1.0 格式)即可。
openapi: 3.1.0
info:
title: 高德地图
description: 获取 POI 的相关信息
# ... 其他配置
无需编程定制对话机器人,可接入知识库(RAG),对接专有数据。推荐平台如字节跳动 Coze(扣子),支持免费使用部分服务,功能强大。但自有开发仍有优势:针对业务需求极致调优,集成更灵活。
大模型需要连接外部世界,Function Calling 增强了模型功能、数据准确性及用户体验。随着技术发展,Function Calling 应用场景将更广泛。在实际落地场景中,开发者应关注输入整合与输出增强,以达成业务目的。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online