Function calling流程总结 和 用于构建Agent的Function calling流程

Function calling流程总结的步骤如下:

  1. 自定义函数:根据用户需求,自定义函数chen_ming_algorithm,用于处理特定的任务。
  2. 创建字典:根据自定义函数,创建一个字典chen_ming_function,其中包含自定义函数的信息。
  3. 创建functions参数:将多个包含不同函数字典的list放入一个名为functions的参数中,以便后续使用。
  4. 判断是否需要调用外部函数:根据用户提供的messages和functions参数,判断是否需要调用外部函数。
  • 如果需要调用外部函数,执行以下操作:
    • 输出assistant_message_content:根据function_call提供的信息挑选合适的函数。
    • 将function call中的函数参数信息传递给函数。
    • 获取函数返回结果function_response。
    • 将输出结果包装为一条function message,添加到messages1中。
    • 将messages1和assistant_message合并成messages2。
    • 将messages2发送给外部函数库,获取second_response。
    • 根据second_response生成Final message,作为最终输出结果。
  • 如果不需 要调用外部函数,将messages直接发送给模型,得到second_response。
    • 根据second_response生成Final message,作为最终输出结果。

用于构建Agent的function calling流程

1. **主函数get_chat_response的流程:**
   - 输入用户需求messages的对象。
   - 判断是否是text_response。
     - 如果是text_response:
       - 创建text_answer_message。
       - 返回text_answer_message。
     - 如果不是text_response:
       - 创建function_call_message。
       - 返回function_call_message。

2. **创建text answer message的流程:**
   - 输入text answer message。
   - 通过is_text_response_valid函数判断是否是开发模式。
     - 如果是开发模式:
       - 引导用户进行审查。
       - 执行修改步骤(根据用户的反馈进行修改)。
     - 如果不是开发模式:
       - 执行不修改步骤。
       - 返回new_messages。

3. **创建function call message的流程:**
   - 输入function call message。
   - 通过is_code_response_valid函数判断解析是否成功。
     - 如果解析失败:
       - 返回修改后的messages。
     - 如果解析成功:
       - 打印模型编写代码。
       - 通过is_text_response_valid函数判断是否是开发模式。
         - 如果是开发模式:
           - 引导用户进行审查。
           - 执行修改步骤(根据用户的反馈进行修改)。
         - 如果不是开发模式:
           - 执行不修改步骤。
           - 返回new_messages。

4. **创建function call message流程(继续):**
   - 通过check_get_final_function_response函数解析JSON类型的函数参数。
   - 将function_call_message加入到初始messages中。
   - 判断function_response_message是否包含报错信息。
     - 如果包含报错信息:
       - 在增强模式下启动深度debug模式。
         - 创建多轮for循环,引导模型进行深度debug。
         - 在原始messages中添加prompt,并将messages带入get_chat_response并做出回答。
       - 在其他模式下启动有效debug模式。
         - 创建单次for循环,引导模型进行有效debug。
         - 在原始messages中添加prompt,并将messages带入get_chat_response并做出回答。
     - 如果不包含报错信息:
       - 返回new_messages。

这个流程描述了如何根据用户输入的消息来创建和返回不同的类型的消息,包括文本回答消息和函数调用消息。同时,它还描述了在开发模式下如何引导用户进行审查和修改,以及在出现报错时如何启动不同的debug模式来解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/420642.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为 OD 一面算法原题

2.2 亿彩票公布调查结果 昨天,闹得沸沸扬扬的《10 万中 2.2 亿》的彩票事件,迎来了官方公告。 简单来说,调查结果就是:一切正常,合规合法。 关于福利彩票事件,之前的推文我们已经分析过。 甚至在后面出现《…

云上攻防-云服务篇弹性计算服务器云数据库实例元数据控制角色AK控制台接管

知识点: 1、云服务-弹性计算服务器-元数据&SSRF&AK 2、云服务-云数据库-外部连接&权限提升 章节点: 云场景攻防:公有云,私有云,混合云,虚拟化集群,云桌面等 云厂商攻防:阿里云&am…

Kepler 参数化查询优化方法

写在前面 本文主要介绍了发布于 2023 年 SIGMOD 的论文《Kepler: Robust Learning for Faster Parametric Query Optimization》,该文章针对参数化查询,将参数化查询优化与查询优化结合,旨在减少查询规划时间的同时提高查询性能。 为此&…

【Java项目介绍和界面搭建】拼图小游戏——添加图片

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

C++ 补充之常用排序算法

C 补充之常用排序算法 常用的排序算法主要包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序,下面简单介绍一下它们的概念和原理: 冒泡排序(Bubble Sort): 冒泡排序是一种基础的排序算法,它重…

作业1-224——P1015 [NOIP1999 普及组] 回文数

题目描述 思路 首先此题为一道高精度题,然后本题按照题目意思模拟即可。我们可以开两个数组来记录高精度数字,这样方便我们处理。判断“该数组是否回文”、“c翻转存入d再做cd”可以写成两个单独的函数。然后主程序组织一下他们即可。注意好退出循环的…

CSC联合培养博士生需要特别关注的几点问题

国家留学基金委(CSC)的联合培养博士生的申请方法、申报流程等,我们以往做过多次介绍,但因为在读博士本身的特殊性,申请时还应考虑其它因素,本篇知识人网小编谈谈联培博士生需要特别关注的问题。 一、注意安…

VIT速记

VIT架构 【ViT论文逐段精读【论文精读】】 【精准空降到 30:29】 https://www.bilibili.com/video/BV15P4y137jb/?share_sourcecopy_web&vd_sourcef09504571c3138e9e610217797aba3a4&t1829 首先把图片分为几个Patch,比如我们此时输入的图片为224*224*3&…

渗透测试靶场环境搭建

1.DVWA靶场 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,包含了OWASP TOP10的所有攻击漏洞的练习环境,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,同时…

判断闰年(1000-2000)

判断规则&#xff1a;1.能被4整除&#xff0c;不能被100整除是闰年,2.能被400整除是闰年 #include <stdio.h>int is_leap_year(int n){if((n % 400 0)||((n % 4 0)&&(n % 100 ! 0)))return 1;elsereturn 0; } int main() {int i 0;int count 0;for(i 1000;…

【C++精简版回顾】15.继承派生

1.继承派生的区别 继承&#xff1a;子继父业&#xff0c;就是子类完全继承父类的全部内容 派生&#xff1a;子类在父类的基础上发展 2.继承方式 1.public继承为原样继承 2.protected继承会把public继承改为protect继承 3.private继承会把public&#xff0c;protected继承改为pr…

179基于matlab的2D-VMD处理图像

基于matlab的2D-VMD处理图像&#xff0c;将图片进行VMD分解&#xff0c;得到K个子模态图&#xff0c;将每个模态图进行重构&#xff0c;得到近似的原图。可以利用这点进行图像去噪。程序已调通&#xff0c;可直接运行。 179 2D-VMD 图像分解重构 图像处理 (xiaohongshu.com)

什么是VR古迹探索|VR设备购买|VR文化旅游

VR古迹探索是利用虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;技术来探索和体验历史古迹的方法。通过VR技术&#xff0c;人们可以在虚拟环境中逼真地模拟历史遗迹、古迹或文化遗产的场景&#xff0c;以全新的视角进行互动和探索。 通过VR古迹探索&#…

“智慧代码阁”千聊知识店铺成立了

前两天我在千聊上注册了知识店铺“智慧代码阁” 欢迎大家来购买更加精品的代码 点击这里进入知识店铺 非常感谢大家&#xff01;&#xff01;&#xff01; 欢迎来到“智慧代码阁”——您的专属知识宝库&#xff0c;专注于为代码爱好者和专业人士提供前沿、实用、系统的编程知…

、JMETER与它的组件们

os进程取样器 这个取样器可以让jmeter直接调用python写的测试数据 这样就可以调用python写的测试数据给到jmeter进行调用 注意&#xff1a;1建议python返回转json格式dumps一下&#xff1b;2py文件中需要把结果打印出来&#xff0c;可以不用函数直接编写 传到jmeter之后可以用…

手机备忘录导到电脑上有什么方法简单点

在这个信息爆炸的时代&#xff0c;我们每天都在处理海量的信息和待办事项。手机备忘录里记录着重要的灵感、会议安排、待购物品清单……但每次想在电脑上继续编辑或查看时&#xff0c;我都感到无比头疼。难道就没有一种简单的方法&#xff0c;能让手机备忘录和电脑轻松同步吗&a…

41、网络编程/TCP.UDP通信模型练习20240301

一、编写基于TCP的客户端实现以下功能&#xff1a; 通过键盘按键控制机械臂&#xff1a;w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 1.基于TCP服务器的机械臂…

fly-barrage 前端弹幕库(3):滚动弹幕的设计与实现

项目官网地址&#xff1a;https://fly-barrage.netlify.app/&#xff1b; &#x1f451;&#x1f40b;&#x1f389;如果感觉项目还不错的话&#xff0c;还请点下 star &#x1f31f;&#x1f31f;&#x1f31f;。 Gitee&#xff1a;https://gitee.com/fei_fei27/fly-barrage&a…

力扣-多数元素

问题 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 解答 class Solution {public int majorityElement(int[] nums) {Arrays…

Mathtype安装时word启动显示“文件未找到:MathPage.WLL”

背景 由于老板布置的临时工作&#xff0c;需要安装Mathtype&#xff0c;但尝试了3个不同的版本后&#xff08;每次都卸载干净了&#xff09;&#xff0c;均未能成功安装&#xff0c;出现的报错3个版本各不相同&#xff1a; ①解压安装过程中失败&#xff08;这个版本不再尝试…