12. Function Call实践

本文主要讲解大模型的function call能力,包括使用国内外在线模型和本地模型,以及如何微调以增强大模型的function call能力。

回顾下大模型学习思路:

1. 环境准备

1.1 平台上【模型调试】中创建

2. 调用国内外大模型测试

2.1 调用GPT-4

代码位于/code/gpt-4_weather_query.ipynb

Star平台暂时没有代理,调用GPT-4需要自行解决下网络问题。

2.2 调用GLM4-plus

代码位于/code/glm-4_weather_query.ipynb

参考:智谱AI开放平台

2.3 注意⚠️

【在平台上进行练习时】,打开新的终端准备运行代码调用线上模型之前设置代理以连接到互联网,设置命令如下

# 终端输入命令
export http_proxy=http://10.10.9.50:3000
export https_proxy=http://10.10.9.50:3000
export no_proxy=localhost,127.0.0.1

此外还需要设置对应的api-key,使用自己的api-key替换

3. 本地开源模型部署部署使用

如果是在自己的环境,需要安装以下python包;

平台上相关环境已经准备好

3.1 安装fastchat

# 这里是在设置【平台专属网络代理】,只有在平台上使用时才有效,
# 其他环境使用会出错
export http_proxy=http://10.10.9.50:3000
export https_proxy=http://10.10.9.50:3000
export no_proxy=localhost,127.0.0.1

# 这一步是在安装fschat,环境需要连接互联网
pip3 install fschat[model_worker] -i https://mirrors.ustc.edu.cn/pypi/web/simple

3.2 启动模型服务

打开三个终端,分别依次在各终端执行如下命令:

# 按顺序依次执行
# 新建终端,输入如下命令
python -m fastchat.serve.controller --host 0.0.0.0
# 新建终端,输入如下命令
python -m fastchat.serve.model_worker --mo
<think>嗯,用户现在问的是“大模型 function call”,也就是大模型如何调用函数。首先我需要理解“大模型”在这里指的是像GPT-4、PaLM这类大型语言模型。Function call可能指的是让这些模型在生成文本的过程中调用外部函数或工具,以完成更复杂的任务,比如获取实时数据、进行计算或者访问数据库等。 接下来,我要回顾之前的对话历史。用户之前询问过DeepSeek Prompt,是关于如何优化提示工程来提升模型输出的。现在这个问题可能是在探索如何让大模型不仅仅是生成文本,还能与外部系统交互,执行具体功能。这可能涉及到模型的功能扩展和应用场景的拓展。 需要确定用户的具体需求。他们可能想知道大模型如何调用函数,比如在开发聊天机器人时,让模型在回答用户问题时调用天气API获取实时数据。或者,他们可能对实现这种调用的技术细节感兴趣,比如API设计、模型训练方法等。 接下来,我应该分几个部分来介绍:首先定义什么是大模型function call,然后说明其工作原理,应用场景,常用方法,挑战与解决方案,最后结合实际例子,比如OpenAI的Function Calling功能,或者DeepSeek的可能实现方式。 需要注意的是,用户可能对技术细节有一定了解,但需要更系统的解释。因此,解释时需要平衡技术术语和通俗语言,确保不同背景的读者都能理解。同时,要避免过于冗长,但又要覆盖关键点,比如模型如何决定何时调用函数、如何传递参数、如何处理返回结果等。 另外,用户可能关心实际应用中的问题,比如安全性、效率、错误处理等,这些也应该在回答中提到。例如,模型调用外部API时的权限管理,错误回退机制,以及如何保证调用的准确性和可靠性。 最后,检查是否有遗漏的重要点,比如现有的框架或工具支持,如LangChain等库如何处理function call,或者企业级解决方案中的最佳实践。确保回答全面且结构清晰,帮助用户全面理解大模型function call的概念和应用。</think>以下是关于**大模型 Function Call(函数调用)**的详细介绍: --- ### **1. 核心概念** **大模型 Function Call** 指大型语言模型(如GPT-4、PaLM等)通过调用外部函数或工具,完成文本生成之外的复杂任务(如计算、数据查询、API交互等)。其本质是让模型具备**“决策+调用”**能力,即: - **理解用户需求** → **决定是否需要调用函数** → **生成调用参数** → **整合外部结果生成最终回复**。 --- ### **2. 工作原理** 1. **任务识别**:模型分析用户输入,判断是否需要调用函数(例如“北京天气如何?”需调用天气API)。 2. **参数生成**:模型根据需求生成函数调用所需的参数(如时间、地点、格式等)。 3. **执行函数**:系统调用外部工具或API,获取结果(如实时天气数据)。 4. **结果整合**:模型将外部结果与自身生成内容结合,输出最终回答。 --- ### **3. 典型应用场景** - **实时数据查询**:调用天气、股票、新闻等API。 - **复杂计算**:使用计算器、数据库或专业工具(如数学求解器)。 - **多模态扩展**:生成图像时调用文生图模型(如DALL·E),或处理语音时调用ASR(语音识别)。 - **自动化流程**:通过调用函数实现邮件发送、日程管理等功能。 --- ### **4. 实现方法** #### **a. 基于提示工程(Prompting)** - **显式指令**:要求模型返回函数调用格式(如JSON)。 ``` 用户:计算3的平方根。 系统:请以 { "function": "math_sqrt", "input": 3 } 格式返回调用需求。 ``` - **示例引导**:通过Few-Shot示例教会模型如何调用函数。 #### **b. 微调(Fine-tuning)** - 在训练数据中加入函数调用示例,让模型学习何时调用、如何传参。 - 例如:OpenAI的Function Calling功能通过微调模型识别调用需求。 #### **c. 框架支持** - **LangChain**:通过`Tools`模块将大模型与外部函数连接。 - **OpenAI Function Calling**:直接通过API定义函数,模型自动生成调用请求。 ```python # OpenAI示例:定义函数并调用 functions = [{ "name": "get_current_weather", "parameters": {"location": {"type": "string"}} }] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "北京天气如何?"}], functions=functions ) ``` --- ### **5. 技术挑战与解决方案** | **挑战** | **解决方案** | |-------------------------|-----------------------------------------------------------------------------| | 模型误判调用需求 | 设置置信度阈值,或提供备用回复逻辑(如“是否需要查询实时数据?”)。 | | 参数格式错误 | 后置校验逻辑(如JSON语法检查),或要求模型重新生成参数。 | | 外部工具响应延迟或失败 | 超时重试机制,或返回降级结果(如“暂时无法获取数据,以下是历史信息”)。 | | 安全风险(如敏感API调用)| 权限分级控制,仅允许白名单函数被调用。 | --- ### **6. 实例说明** **用户提问**: “帮我预订明天从北京到上海的高铁,下午出发。” **模型Function Call流程**: 1. **识别意图** → 调用“订票系统API”。 2. **生成参数** → `{出发地: "北京", 目的地: "上海", 日期: "2023-10-25", 时段: "下午"}`。 3. **API返回结果** → 获取车次列表(如G123、G456)。 4. **整合回复** → “找到以下车次:G123(14:00)、G456(15:30),是否需要预订?” --- ### **7. 与提示工程的关系** - **互补性**:Function Call依赖提示工程引导模型生成调用请求,同时扩展了模型能力边界。 - **差异**: - **提示工程**:优化模型自身的文本生成逻辑。 - **Function Call**:连接模型与外部工具,突破纯文本生成的局限。 --- ### **8. 企业级应用(如DeepSeek)** 若涉及特定厂商(如深度求索的DeepSeek-R1模型),其Function Call可能支持: - **私有化工具集成**:对接企业内部数据库或工具链。 - **领域定制化**:针对金融、医疗等场景预置专用函数库。 - **低代码配置**:通过可视化界面定义函数与调用规则。 --- 通过Function Call大模型从“文本生成器”升级为“智能代理”,成为连接用户需求与现实世界的桥梁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApiChain

扔个包子砸我一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值