Function Calling 与大模型(介绍篇)

一、函数调用与工具使用简介

在这篇文章中,我们将探讨人工智能模型如何从“仅仅说”到“实际操作”。我们将解释function calling的工作原理、其在现实世界中的应用,在下一篇文章中我们将通过使用像Ollama和Llama 3.2这样的工具来实现它。无论你是一个开发者,想要构建AI驱动的应用,还是对AI如何改变我们与API互动的方式感到好奇,这篇指南都会带你了解所有你需要知道的内容。

1、人工智能模型如何从“仅仅说”到“实际操作”

function calling使大型语言模型(LLM)能够根据用户的输入与外部工具、API和功能进行互动。它不仅仅是生成文本,LLM可以判断出需要执行特定操作,然后请求外部功能来执行该操作。

function calling让用户可以通过自然语言与复杂系统进行互动,而LLM则处理底层的功能执行。因此,LLM可以专注于解决实际问题,而不仅仅是生成文本。

例如,如果用户询问天气,模型可以调用天气API来获取实时数据,而不是仅仅生成一个通用的回答。它还可以提醒你带伞,如果有下雨的可能性。

2、function calling过程解释

让我们来分解一下LLM内部是如何实现function calling的:

  1. 用户查询:
    过程从用户提出问题或请求操作开始(例如,“我CRM中的潜在客户有哪些?”或“检查产品X是否有库存?”)。

  2. LLM处理:
    LLM分析查询,识别出需要外部数据或操作来完成请求。例如:

  • 如果用户询问CRM中的潜在客户,LLM会识别出需要获取实时数据。

  • 如果用户要求查看库存信息,它会触发数据库查询。

  1. 函数调用决策:
    LLM决定执行function calling,可能是以下两种之一:
  • API调用: 连接到外部服务(例如,调用CRM API从Salesforce中获取实时商机数据)。

  • 自定义函数: 访问内部工具或数据库(例如,查询库存以检查产品的库存情况)。

  1. 数据检索:
    函数检索所需的数据(例如,从Salesforce API获取潜在客户,从仓库数据库获取产品的可用性信息)。

  2. 数据集成:
    检索到的数据被发送回LLM,LLM处理这些数据,并为用户生成一个上下文准确的回应。

好的,这是使用 Markdown 格式输出的文本:

二、函数调用用例及其如何提高性能

通过能够调用函数,LLM 不再仅仅局限于文本生成。它可以执行诸如检索实时数据或与其它软件交互等操作。这使得模型在实际应用中更加动态和有用。例如:

  • 提供最新的信息:如果模型能够通过函数调用获取最新的信息,它就能提供更准确的答案。例如,在不使用函数调用的情况下回答有关时事的问题可能会导致信息过时,但是通过访问新闻 API,答案就能保持最新。

  • 自动化重复性任务:函数调用可以自动化重复性任务。例如,如果用户想要安排会议,LLM 可以调用日历 API 自动添加事件。这节省了时间,并减少了手动输入的需要。

  • 连接其他服务:LLM 可以成为更大生态系统的一部分,连接数据库、CRM 或其他企业系统。这使得它们在专业环境中更加通用。

  • 处理复杂的工作流程:LLM 不仅可以回答单个问题,还可以协调多个函数调用来解决多步骤问题。例如,通过检查航班可用性、预订酒店以及通过不同的 API 租车来规划旅行。

  • 无需重新训练即可更新信息:当新的函数或 API 可用时,可以更新 LLM 以使用它们,而无需重新训练整个模型。这使得系统能够以最小的努力保持最新。

1、函数调用的一些例子

如果您使用过 ChatGPT 市场中的任何 GPT,您可能已经看到或体验过函数调用。这些 GPT 执行自定义函数,让人们可以创建像待办事项列表构建器、提示增强器、应用程序连接器和问答机器人这样的专用工具。ChatGPT 中的内置“Tasks”功能也使用了这个——它可以通过在特定时间触发函数来设置提醒。

Claude 的模型上下文协议 (MCP) 也做了类似的事情。借助 Sonnet 3.5,Claude 可以激活诸如 Brave Search 的网络搜索工具,利用其图记忆系统,或链接到其他应用程序。这两个系统都展示了 AI 现在如何使用这些“函数调用”将其核心智能连接到现实世界的工具。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

<think>好的,用户现在想了解如何通过函数调用的方式大型语言模型进行交互,也就是Function Calling的方法和示例。首先,我需要回忆一下相关的知识,确保信息准确。Function Calling允许大模型执行外部函数,比如获取实时数据或数据库交互,这扩展了模型的能力。 首先,应该解释Function Calling的基本概念,可能引用已有的参考资料,比如用户提供的引用[1]和[2]。然后,分步骤说明如何实现,比如定义函数、构建提示、解析响应和执行函数。用户可能需要具体的示例,所以需要准备一个代码示例,比如获取天气的函数。要注意代码的正确性,使用Python,并且语法正确。 另外,用户的问题可能还涉及到应用场景和注意事项,比如错误处理、权限控制等。需要确保回答结构清晰,分点说明,每个步骤都有例子或说明。同时,生成的相关问题要围绕Function Calling的扩展,比如优化方法、安全措施等。 检查是否遵循了系统级指令,比如数学公式的格式是否正确,使用中文回答,引用标识是否正确添加。最后,确保回答真实可靠,没有编造的信息,引用来源正确。</think>### 通过函数调用大模型交互的方法 #### 1. **核心原理** 函数调用(Function Calling)通过将外部工具能力大模型结合,扩展其功能边界。大模型根据用户输入**自动判断何时调用函数**,并将自然语言参数转换为结构化请求,例如: - 用户输入:“北京今天气温多少?” - 模型响应:触发`get_weather(location: str)`函数调用,参数为`{"location": "北京"}`[^2] #### 2. **实现步骤** ##### 步骤1:定义函数清单 ```python functions = [ { "name": "get_stock_price", "description": "获取指定股票实时价格", "parameters": { "type": "object", "properties": { "symbol": {"type": "string", "description": "股票代码,如 AAPL"} }, "required": ["symbol"] } } ] ``` ##### 步骤2:构建提示词 系统提示需包含函数描述: ``` 你是一个财经助手,可以调用以下功能: - get_stock_price:输入股票代码,返回实时价格 ``` ##### 步骤3:解析模型响应 当模型返回函数调用请求时,提取结构化参数: ```json { "function_call": { "name": "get_stock_price", "arguments": "{\"symbol\": \"AAPL\"}" } } ``` ##### 步骤4:执行函数并反馈 ```python def execute_function(function_name, arguments): if function_name == "get_stock_price": return fetch_api(f"https://api.stocks.com/{arguments['symbol']}") ``` #### 3. **完整交互示例** ```python import openai response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "苹果公司当前股价是多少?"}], functions=functions, function_call="auto" ) if response.choices[0].message.get("function_call"): func_args = json.loads(response.choices[0].message.function_call.arguments) result = execute_function(response.function_call.name, func_args) # 将结果返回给模型生成最终回复 ``` #### 4. **关键应用场景** - **实时数据查询**:股票/天气/交通信息 - **业务系统集成**:CRM系统客户数据查询 - **复杂计算委托**:将微积分计算交给SymPy等数学库 - **多模态扩展**:调用图像生成API实现文生图 #### 5. **注意事项** - **错误处理**:需捕获API调用超时/参数错误 - **权限控制**:敏感函数需进行身份验证 - **成本优化**:通过函数描述压缩减少token消耗 - **参数校验**:对模型输出的参数进行类型检查 $$ \text{交互流程} = \text{用户输入} \rightarrow \text{模型解析} \rightarrow \text{函数调用} \rightarrow \text{结果反馈} \rightarrow \text{最终输出} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值