Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

如何实现function call

Answer

实现 Function Call 主要有以下几种方式和要点:

  1. 方式:
    • Json Output:通过 Prompt 让模型输出 JSON 格式内容,但 Prompt 麻烦,输出不稳定,串业务成本高。
    • Json Mode:官方 Json Output,与 Tools 适用场景不同,JSON mode 为输出 JSON 存在,Tools 为 Call API 存在。
    • Function Calling 和 Tools:从可控角度推荐使用。
  2. 要点:
    • 放弃 JSON mode:模型输出 JSON 仍可能出错,模型厂家对 Function Calling 有微调优化。
    • 降低 System prompt 依赖,化繁为简:System prompt 内容多,不能保证模型遵循,能在 Tools 里写的尽量写在里面。
    • API Response 增强 Prompt:Tools 调用结果返回给模型时,可增加约束和提示,准确率高。
    • 尽量让模型做选择,而不是填空:将确定答案做成选项,如用 Enum 方式,减少 token 输出,提高速度和准确率。
    • 利用 Tools 来做 Route,构建 Multi Agent:一个不行就增加数量,术业有专攻。

此外,OpenAI 发布函数调用及其他 API 更新,开发人员可向 gpt-4-0613 和 gpt-3.5-turbo-0613 描述函数,让模型智能输出包含调用函数所需参数的 JSON 对象,这是连接 GPT 能力与外部工具和 API 的新方法。例如在本地写函数执行查询,根据 GPT 返回的函数名和参数来操作,也可将函数改为更灵活的 SQL 查询。在实际业务中,可根据需求选择函数查询或 SQL 查询。另外,LangChain 内置的 openapi-function call 也可用于相关开发,实际业务中可能需结合内置业务流程,如判断用户问题是否相关、引导式提问等。

Content generated by AI large model, please carefully verify (powered by aily)

References

AI Agent产品经理血泪史(一):一年来我摸过的那些石头【Tools篇】

上面讲到了4种实现Function Calling的方式:Json Output:通过Prompt的方式让模型输出JSON格式内容优劣势:Prompt麻烦,输出不稳定,串业务成本高Json Mode:官方Josn Output,1106与Tools同期推出优劣势:JSON格式稳定,但实际上它与Tools的适用场景是不同的,JSON mode是为了输出JSON存在的,而Tools是为了Call API存在的Function Calling和Tools就不再赘述但是从可控的角度来说,还是会推荐Function Calling和Tools来实现。1、放弃JSON mode:随着模型能力提升,模型能够准确地输出JSON,但是它还是会出错,不能保证100%正确;模型厂家对Function Calling是有微调优化的,也有说法是专门的MOE专家,但是无从验证;2、降低System prompt依赖,化繁为简S yste m prompt里面写的东西太多了,你不能保证模型能很好地遵循它;能在Tools里面去写的东西,尽量写在Tools里面3、API Response增强Prompt:其实所有输入给模型的内容,都可以算作是Pormpt。同理,Tools调用的结果也就是API Response也会被返回给到模型。可以在这一步增加一些给大模型的约束和提示,这里的准确率非常高,毛估估95%以上。4、尽量让模型做选择,而不是填空把确定的答案做成选项给到模型,比如用Enum的方式。一方面减少token的输出,提高速度;另一方面,准确率高5、利用Tools来做Route,构建Multi Agent一个不行就上两,两个不行就上四。术业有专攻,Agent的世界也一样。

ChatGPT 助力数据分析:实际案例与技巧

可以发现为了让ChatGPT返回符合要求的JSON格式,prompt的定制就尤为重要和复杂。好消息是,在当地时间6月13日,OpenAI发布函数调用及其他API更新。现在开发人员可以向gpt-4-0613和gpt-3.5-turbo-0613描述函数,并让模型智能地选择输出一个包含调用这些函数所需参数的JSON对象。这是一种更可靠地将GPT的能力与外部工具和API连接起来的新方法。传送门:[Function calling and other API updates](https://openai.com/blog/function-calling-and-other-api-updates)官网有很详细的例子,这里就不再描述代码了。我用本文案例总结大致流程:有个好处是不需要让ChatGPT生成SQL了,减少SQL注入的风险。本地写一个函数执行this.app.mysql.select(table,condition),根据GPT返回的函数名、参数(字段和where)来查询数据,更为安全。但这个方法又有局限性,事先定义函数查询不如SQL查询来的灵活,所以这里也可以让函数改为SQL查询this.app.mysql.query(sql),GPT的函数调用改为:getSqlQuery(sql:string),函数名getSqlQuery,参数:sql,更为灵活。总结:让GPT与函数调用结合,本地控制返回JSON格式,prompt的定制更为简单,AI的输出更为可控。根据实际业务需求采用函数查询或SQL查询,值得一试![heading2]SQL分析示例[content]注:以下SQL分析的数据均是在数据库中伪造的数据,仅供测试。分析每种图表的使用情况分析图表类型是柱状图的创建时间和数量

开发:LangChain应用开发指南-不用向量也可以RAG

运行LLM的代理。我们需要运行LLM的代理,让用户可以与之进行交互,将LLM的代理部署到不同的平台和渠道,例如Web、微信、Telegram等,并提供统一的接口和方法,让用户可以方便地与LLM的代理进行交互。餐饮生活助手本文直接通过Langchain内置的openapi-function call来实现,代码仅作为演示,实际业务情况可能得结合代码内置业务流程来实现。比如通过function call解析用户问题之前还需要判断用户的问题是否与餐厅咨询相关,当解析到的查询维度太少时,需要引导式提问等等。

Others are asking
function call
Function Calling 是一种将 AI 模型(如 ChatGPT、谷歌 Gemini 等)的能力与外部工具和 API 连接起来的方法。 在 ChatGPT 中: 为让 ChatGPT 返回符合要求的 JSON 格式,prompt 的定制重要且复杂。 OpenAI 发布函数调用及其他 API 更新后,开发人员可向 gpt40613 和 gpt3.5turbo0613 描述函数,让模型智能输出包含调用函数所需参数的 JSON 对象。 本地写函数执行查询操作,如 this.app.mysql.select,函数名 getSqlQuery,参数:sql,更灵活。 在谷歌 Gemini 中: 讲解了 Function Calling 是什么及具体用法。 以从事金融业务为例,如搜索欧元兑美元的当前汇率,使用前需做好配置,可使用 Gemini 1.5 Flash 模型。 函数调用带来了多个优势,包括简化用户体验、减少错误发生可能性、为更高级自动化开辟道路,能处理如酒店预订或制定旅行计划等复杂操作,重新定义了人与技术的互动方式。
2025-03-31
function calling是什么
Function Calling 是一种在自然语言处理和人工智能模型中的技术和概念。 在金融业务场景中,例如搜索欧元兑美元的当前汇率,使用前需要做好配置,如使用 Gemini 1.5 Flash 模型。 对于 ChatGPT 而言,为了让其返回符合要求的 JSON 格式,prompt 的定制尤为重要和复杂。OpenAI 发布函数调用及其他 API 更新后,开发人员可以向 gpt40613 和 gpt3.5turbo0613 描述函数,并让模型智能地选择输出一个包含调用这些函数所需参数的 JSON 对象,这是将 GPT 的能力与外部工具和 API 连接起来的新方法。例如,本地写函数执行 this.app.mysql.select,使操作更灵活。 对于 OpenAI 的 GPT 模型,Chat completions API 允许在请求中传递一系列函数描述,模型能据此生成函数参数并以 JSON 格式返回,可用于执行函数调用,函数调用的结果还能在后续请求中反馈给模型形成交互循环。想深入了解可查看 GPT 入门指南里的函数调用部分和 OpenAI Cookbook 里的用例。 需要注意的是,模型生成的代码不一定都正确和安全,运行代码前要确保环境安全,最好在沙盒里。
2025-03-26
Function Calling 是什么
Function Calling 是一种在自然语言处理和人工智能领域中的技术和概念。 在金融业务场景中,例如搜索欧元兑美元的当前汇率,使用前需要做好配置,如使用 Gemini 1.5 Flash 模型。 对于 ChatGPT 而言,为了让其返回符合要求的 JSON 格式,prompt 的定制尤为重要和复杂。OpenAI 发布函数调用及其他 API 更新后,开发人员可以向 gpt40613 和 gpt3.5turbo0613 描述函数,并让模型智能地选择输出一个包含调用这些函数所需参数的 JSON 对象,这是将 GPT 的能力与外部工具和 API 连接起来的新方法。例如,本地写函数执行 this.app.mysql.select,这样使得 prompt 的定制更为简单,AI 的输出更为可控。 在 OpenAI 的相关实践中,Chat completions API 允许在请求时附带一系列函数描述,模型可据此产生函数参数,API 以 JSON 格式返回参数用于执行函数调用,函数调用的结果还可反馈给模型形成交互循环。想深入了解可查看 GPT 入门指南里的函数调用部分和 OpenAI Cookbook 里的用例。但需注意,模型生成的代码不一定都正确和安全,使用前要确保环境安全。
2025-03-14
实现一个简单的 function calling agents ,要求小白可以看懂
以下是一个关于实现简单的 function calling agents 的指导,以便小白能够理解: 实现原理: 提示词工程主要由提示词注入和工具结果回传两部分代码组成。提示词注入用于将工具信息及使用工具的提示词添加到系统提示中,它包含 TOOL_EAXMPLE、tools_instructions 和 REUTRN_FORMAT 三个部分。TOOL_EAXMPLE 用于提示 LLM 如何理解和使用工具,编写时应注意用无关紧要的工具作示例避免混淆。tools_instructions 是将通用工具字典转换成 LLM 可读的工具列表,实际使用时可动态调整。REUTRN_FORMAT 定义了调用 API 的格式。工具结果回传阶段利用正则表达式抓取输出中的“tool”和“parameters”参数,对于 interpreter 工具使用另一种正则表达式提取 LLM 输出的代码,通过识别 LLM 返回的调用工具的字典提取对应值传入工具函数,将工具返回结果以 observation 角色返回给 LLM,对于不接受相关角色的 LLM 接口可改为回传给 user 角色。 实现方式的比较与建议: 1. JSON Output:通过 Prompt 方式让模型输出 JSON 格式内容,但 Prompt 麻烦,输出不稳定,串业务成本高。 2. JSON Mode:官方 JSON Output,与 Tools 适用场景不同,JSON mode 为输出 JSON 存在,Tools 为 Call API 存在。 3. 从可控角度推荐 Function Calling 和 Tools 实现: 放弃 JSON mode,模型输出 JSON 仍可能出错,模型厂家对 Function Calling 有微调优化。 降低 System prompt 依赖,能在 Tools 里写的尽量写在里面。 API Response 增强 Prompt,准确率高。 尽量让模型做选择而非填空,减少 token 输出,提高速度和准确率。 利用 Tools 做 Route,构建 Multi Agent,术业有专攻。 此外,在初级菜鸟学习 Langchain 做简单 RAG 方面: 1. 没有用 Langchain 做 table 和 text 的 RAG: Table 表格:包括读入表格 markdown 格式嵌入 template 和直接使用 function call 两种方法。 Text 文字:包括文字相似度检索过程,涉及读入文字、清洗、切分、向量化、计算相似度等步骤。 2. 用 Langchain 做 table 和 text 的 RAG:包括运用 Agent 和 Chain 等方式。 3. 使用 Agent 把文本多种文档组合起来。 相关代码和示例可参考相应的链接。
2025-03-11
function calling 这是什么?
Function Calling 是一种在自然语言处理和人工智能模型中的技术。 在金融业务场景中,例如搜索欧元兑美元的当前汇率,使用前需要做好配置,如使用 Gemini 1.5 Flash 模型。 对于 ChatGPT 而言,为了让其返回符合要求的 JSON 格式,prompt 的定制尤为重要和复杂。OpenAI 发布函数调用及其他 API 更新后,开发人员可以向 gpt40613 和 gpt3.5turbo0613 描述函数,并让模型智能地选择输出一个包含调用这些函数所需参数的 JSON 对象,这是将 GPT 的能力与外部工具和 API 连接起来的新方法。例如,本地写函数执行 this.app.mysql.select。 对于 OpenAI 的 GPT 模型,Chat completions API 允许在请求中传递一系列函数描述,使模型能够根据提供的模式生成函数参数,API 以 JSON 格式返回生成的函数参数,可用于执行函数调用,函数调用的输出还可在后续请求中反馈给模型形成交互循环。想深入了解可查看 GPT 入门指南里的函数调用部分和 OpenAI Cookbook 里的用例。 需要注意的是,模型生成的代码不一定都是正确和安全的,在运行代码前要确保环境安全,最好在沙盒中进行。
2025-03-06
Function Calling
Function Calling 是一种将 AI 模型(如 ChatGPT、谷歌 Gemini 等)的能力与外部工具和 API 连接起来的方法。 对于 ChatGPT: 为让其返回符合要求的 JSON 格式,prompt 的定制重要且复杂。 OpenAI 发布函数调用及其他 API 更新,开发人员可向 gpt40613 和 gpt3.5turbo0613 描述函数,让模型智能输出包含调用函数所需参数的 JSON 对象。 好处是减少 SQL 注入风险,可本地写函数执行查询,也可让函数改为 SQL 查询,使 GPT 与函数调用结合,本地控制返回 JSON 格式,prompt 定制更简单,AI 输出更可控。 对于谷歌 Gemini: 在金融业务用例中,可用于搜索欧元兑美元的当前汇率,使用前需做好配置,如使用 Gemini 1.5 Flash 模型。 函数调用带来多个优势,包括简化用户体验、减少错误发生可能性、为更高级自动化开辟道路,能处理如酒店预订或制定旅行计划等复杂操作,重新定义了人与技术的互动方式。
2025-03-05
帮我写一篇用步进电机实现分拣的有关论文
很抱歉,目前没有关于用步进电机实现分拣的相关论文内容供参考。但我可以为您提供一个论文大纲的示例,您可以根据这个大纲来撰写论文: 标题:基于步进电机的分拣系统设计与实现 摘要:简述研究背景、目的、方法和主要成果。 一、引言 1. 介绍分拣系统在工业中的重要性。 2. 阐述步进电机在分拣系统中的应用优势。 二、步进电机的工作原理与特点 1. 详细解释步进电机的工作原理。 2. 分析其特点,如精度、速度控制等。 三、分拣系统的总体设计 1. 描述系统的整体架构和工作流程。 2. 确定所需的硬件设备和软件控制。 四、硬件设计 1. 选择合适的步进电机型号。 2. 介绍相关的驱动电路和传感器。 五、软件控制算法 1. 阐述控制步进电机运动的算法。 2. 描述如何实现精确的分拣动作。 六、系统调试与优化 1. 介绍调试过程中遇到的问题及解决方法。 2. 说明如何对系统进行优化以提高性能。 七、实验结果与分析 1. 展示实验数据和结果。 2. 分析系统的性能指标,如分拣准确率、速度等。 八、结论 1. 总结研究成果。 2. 展望未来的改进方向和应用前景。 希望以上内容对您有所帮助,祝您顺利完成论文!
2025-04-11
RAG对话 摘要总结 功能实现
LangChain 和 RAG 的结合具有以下优势: 1. 灵活性:可根据需求和数据源选择不同组件和参数定制 RAG 应用,也能使用自定义组件(需遵循接口规范)。 2. 可扩展性:能利用 LangChain 的云服务部署和运行,无需担忧资源和性能限制,还可借助分布式计算功能加速应用,发挥多个节点并行处理能力。 3. 可视化:通过 LangSmith 可视化工作流程,查看各步骤输入输出及组件性能状态,用于调试和优化,发现并解决潜在问题和瓶颈。 其应用场景多样,包括: 1. 专业问答:构建医疗、法律、金融等专业领域的问答应用,从专业数据源检索信息辅助大模型回答问题,如从医学文献中检索疾病诊治方案回答医疗问题。 2. 文本摘要:构建新闻或论文摘要应用,从多个数据源检索相关文本帮助大模型生成综合摘要,如从多个新闻网站检索同一事件报道生成全面摘要。 3. 文本生成:构建诗歌、故事生成等应用,从不同数据源检索灵感协助大模型生成更有趣和创意的文本,如从诗歌、歌词或小说中检索相关文本生成作品。 此外,还介绍了本地部署资讯问答机器人的实现方式,即基于用户问题从向量数据库检索相关段落并按阈值过滤,让模型参考上下文信息回答,还创建了网页 UI 并进行评测,对不同模型的测试表现进行了对比,得出 GPT4 表现最佳等结论,并总结了使用 Langchain 和 Ollama 技术栈在本地部署资讯问答机器人及相关要点,即上下文数据质量和大模型性能决定 RAG 系统性能上限。
2025-04-11
如何用rpa来实现读取本地excel表格里的内容进行筛选,提取某些数据值后,再自动化填写到飞书的多维表格去。怎么来实现这个功能
要使用 RPA 实现读取本地 Excel 表格内容进行筛选,并将提取的数据值自动化填写到飞书的多维表格,可参考以下步骤: 1. 关于扣子:“”(Coze)是字节跳动在 2024 年上线的新一代一站式 AI Bot 开发平台,也被称为“字节版 GPTs”。它是一个低门槛的 AI 应用开发平台,其核心目标是让没有编程基础的用户也能够轻松参与到 AI 生态的建设中。 2. 登录后,在左侧功能列表的工作空间中,点击右上角“+字段”创建工作流,自行输入名称和描述。 3. 已做好工作流后,逐步拆解每个节点的配置: 开始节点:此节点不需要做任何配置,没有输入以及输出。 读取飞书表格内容节点:点击开始节点后面的“+”,搜索“飞书多维表格”,选择“search_record”功能。添加后,点击该节点的配置,在界面右侧的参数框中,需要填写 app_token、field_names。filter 是对数据的筛选条件,没有筛选需求可直接忽略。其中,app_token 是多维表格的唯一标识符,即表格 URL 中的一段;field_names 则是要读取的具体字段,比如“标题”、“内容”,以作为后续操作的输入。该节点运行后,就能将多维表格中的内容提取出来。
2025-04-09
飞书智能伙伴创建平台 RAG实现
飞书智能伙伴创建平台(英文名:Aily)是飞书团队旗下的企业级 AI 应用开发平台,能提供简单、安全且高效的环境,帮助企业构建和发布 AI 应用,推动业务创新和效率提升,为企业探索大语言模型应用新篇章、迎接智能化未来提供理想选择。 在飞书智能伙伴创建平台上实现 RAG 相关应用有多种方式: 1. 利用飞书的知识库智能问答技术,引入 RAG 技术,通过机器人帮助用户快速检索内容。 2. 可以使用飞书的智能伙伴功能搭建 FAQ 机器人,了解智能助理的原理和使用方法。 3. 本地部署资讯问答机器人,如通过 Langchain + Ollama + RSSHub 实现 RAG,包括导入依赖库、从订阅源获取内容、为文档内容生成向量等步骤。例如使用 feedparse 解析 RSS 订阅源,ollama 跑大模型(使用前需确保服务开启并下载好模型),使用文本向量模型 bgem3(如从 https://huggingface.co/BAAI/bgem3 下载,假设放置在某个路径 /path/to/bgem3,通过函数利用 FAISS 创建高效向量存储)。 使用飞书智能伙伴创建平台的方式: 1. 在 WaytoAGI 飞书知识库首页找到加入飞书群的链接(二维码会定期更新,需在找到最新二维码),点击加入,直接@机器人。 2. 在 WaytoAGI.com 的网站首页,直接输入问题即可得到回答。 创建问答机器人的原因: 1. 知识库内容庞大,新用户难以快速找到所需内容。 2. 传统搜索基于关键词及相关性,存在局限性。 3. 需要用更先进的 RAG 技术解决问题。 4. 在群中提供快速检索信息的方式,使用更便捷。 2024 年 2 月 22 日的会议介绍了 WaytoAGI 社区的成立愿景和目标,以及其在飞书平台上的知识库和社区情况,讨论了相关技术和应用场景,并介绍了企业级 agent 方面的实践。
2025-04-08
我已经有了论文大纲,需要生成技术路线图,哪个AI可以实现
以下是一些可以帮助您生成技术路线图的 AI 工具和方法: 1. 利用 AI 写作助手生成课题的大纲,包括引言、文献综述、方法论、结果和讨论等部分。 2. 使用 AI 文本分析工具来分析收集到的资料,提取关键信息和主要观点。 3. 对于生成“延伸思考”的问题,可以让 AI 根据特定的参照(比如之前的产出或是新增的参考文案)输出具备更高关联度的内容。 4. 可以用同一段提示词对比不同模型的输出,择优深挖。 5. 在满意的内容节点上添加“文本编辑器显示”,对文本进行精加工。 6. 先确定整个调研报告的大纲目录,例如通过手机识别示例报告的目录截图。 7. 让 AI 总结语言风格,如将范文交给 Claude 2 总结语言风格。 8. 让 GPT4 按照目录逐步生成章节内容,设置循环结构,根据情况决定是否调用 webpolit 插件查询相关信息。 9. 在需要搜索网络信息的章节处打上标签,让 GPT4 自主搜索信息再来生成内容。 需要注意的是,AI 工具可以作为辅助,但不能完全替代您的专业判断和创造性思维。在使用 AI 进行相关工作时,应保持批判性思维,并确保成果的质量和学术诚信。
2025-04-08
我们是搜索团队的产品经理,团队定位倾向于“对于插件的建设与调用”定位,现在要做AI相关的产品规划,请以通俗易懂的方式对以下问题做出回答 1、请通过流程图的方式,介绍【插件/工具】能力在大模型生态架构中的环节、定位、实现流程是什么 2、调研下对于我们搜索团队而言,插件应该做什么,可以做什么 3、思考对于大模型来说,有哪些(通用或垂类)的模块/功能/插件是无法绕开的,或高频使用的,作为我们团队后续争取的发力点(如搜索推荐对于传统综合搜索结果页)
以下是为您提供的关于 AI 相关产品规划的回答: 一、插件/工具能力在大模型生态架构中的环节、定位、实现流程 从 2023 年 3 月份 OpenAI 宣布插件计划开始,到 5 月份上线,其中包括联网、代码、画图三个插件。其实现流程大致为: 1. 经过对模型的微调,检测何时需要调用函数(取决于用户的输入)。 2. 使用符合函数签名的 JSON 进行响应。 3. 在接口层面声明可调用的工具。 4. 使用函数和用户输入调用模型。 5. 使用模型响应调用 API。 6. 将响应发送回模型进行汇总。 二、对于搜索团队,插件可以做和应该做的事 目前没有直接针对搜索团队插件具体可做和应做事项的明确内容,但可以参考 OpenAI 的插件计划,例如开发与搜索相关的特定功能插件,或者探索如何将现有的搜索推荐功能与大模型更好地结合。 三、对于大模型无法绕开或高频使用的模块/功能/插件 目前没有直接指出对于大模型无法绕开或高频使用的具体模块、功能或插件。但从相关信息中可以推测,例如与数据获取和处理相关的插件(如联网)、与技术开发相关的插件(如代码)以及与内容生成相关的插件(如画图)可能是较为重要和高频使用的。对于搜索团队来说,可以考虑在这些方向上寻找发力点,结合搜索推荐等传统功能,开发出更具竞争力的插件。
2025-04-08