当前位置: 首页 > news >正文

OpenAI ChatGPT-4开发笔记2024-04:Chat之Tool之2:multiple functions

从程序员到ai Expert

  • 1 定义参数和函数
  • 2 第一轮chatgpt
  • 3 第一轮结果和function定义全部加入prompt再喂给chatgpt
  • 4 大结局
  • 7 参考资料

上一篇解决了调用一个函数的问题。这一篇扩展为调用3个。n个自行脑补。

1 定义参数和函数

#1.设定目标
import json
import openai#1.定义parameters for text completion
ai_prompt = [{"role": "user", "content": f"汇总3个function的aiXpert的结果"}
]#2.定义self-function,3个
def search_baidu(keyword):return f"{keyword}是一个技术博主"def search_google(keyword):return f"{keyword}很牛"def search_bing(keyword):return f"{keyword}喜欢水鱼"#3.设置参数
ai_function = [{"type": "function","function": {"name": "search_baidu","parameters": {"type": "object","properties": {"keyword": {"type": "string",}},"required": ["keyword"],},}},    {"type": "function","function": {"name": "search_google","parameters": {"type": "object","properties": {"keyword": {"type": "string",}},"required": ["keyword"],},}},        {"type": "function","function": {"name": "search_bing","parameters": {"type": "object","properties": {"keyword": {"type": "string",}},"required": ["keyword"],},}}
]available_functions = { "search_baidu": search_baidu, "search_google": search_google, "search_bing": search_bing } #4.define function to call ChatGPT 
def chat_completions(parameter_message):response = openai.chat.completions.create(model   ="gpt-3.5-turbo-1106",messages=parameter_message,tools   =ai_function,tool_choice="auto", )return response.choices[0].message

2 第一轮chatgpt

#5.发起首次请求,告诉gpt要做什么,已经有哪些函数可以调动
first_response = chat_completions(ai_prompt)
tool_calls = first_response.tool_calls

3 第一轮结果和function定义全部加入prompt再喂给chatgpt

# 第一轮chat completions的结果加入prompt,再把function参数加入prompt,然后一起喂给chatgptif tool_calls:ai_prompt.append(first_response)  # 第一轮chat completions的结果加入prompt,# 将所有函数调用的结果拼接到消息列表里for tool_call in tool_calls:function_name = tool_call.function.namefunction_to_call = available_functions[function_name]function_args = json.loads(tool_call.function.arguments)function_response = function_to_call(**function_args)ai_prompt.append({"tool_call_id": tool_call.id,"role": "tool","name": function_name,"content": function_response,}) print(chat_completions(ai_prompt))

4 大结局

ChatCompletionMessage(content='根据三个搜索引擎的结果,"AIxPert" 是一个技术博主,非常牛,也喜欢水鱼。', role='assistant', function_call=None, tool_calls=None)

在这里插入图片描述

7 参考资料

  1. OpenAI的多函数调用(Multiple Function Calling)简介
  2. OpenAI API

相关文章:

OpenAI ChatGPT-4开发笔记2024-04:Chat之Tool之2:multiple functions

从程序员到ai Expert 1 定义参数和函数2 第一轮chatgpt3 第一轮结果和function定义全部加入prompt再喂给chatgpt4 大结局7 参考资料 上一篇解决了调用一个函数的问题。这一篇扩展为调用3个。n个自行脑补。 1 定义参数和函数 #1.设定目标 import json import openai#1.定义para…...

14:00面试,14:07就出来了,问的问题有点变态。。。

前言 刚从小厂出来,没想到网盘我在另一家公司又寄了。 在这家公司上班,每天都要加班,但看在钱给的比较多的份上,也就不太计较了。但万万没想到一纸通知,所有人不准加班了,不仅加班费没有了,薪…...

206. 反转链表(Java)

题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 输入: head [1,2,3,4,5] 输出: [5,4,3,2,1] 代码实现: 1.根据题意创建一个结点类: public class ListNode {int val…...

LeetCode 2807. 在链表中插入最大公约数【链表,迭代,递归】1279

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

Hive之set参数大全-3

D 是否启用本地任务调试模式 hive.debug.localtask 是 Apache Hive 中的一个配置参数,用于控制是否启用本地任务调试模式。在调试模式下,Hive 将尝试在本地模式下运行一些任务,以便更容易调试和分析问题。 具体来说,当 hive.de…...

Golang拼接字符串性能对比

g o l a n g golang golang的 s t r i n g string string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去。主要有以下几种拼接方式 拼接方式介绍 1.使用 s t r i n g string string自带的运算符 ans ans s2. 使用…...

【问题解决】web页面html锚点定位后内容被遮挡问题解决【暗锚】

正常的锚点跳转 a标签的href填写目标元素的id即可 <a href"#my_target">to div1</a> <div id"my_target">div1</div> 内容被顶栏遮挡示例 但是当id所在元素被嵌套多层flex和relative布局之后&#xff0c;跳转后部分内容会被遮挡…...

easyui datagrid无数据时显示无数据

这里写自定义目录标题 需求解决办法 需求 使用datagrid显示记录时&#xff0c;结果查询记录数为0&#xff0c;此时需要显示无数据。 示例代码 <table id"dg"></table>$(#dg).datagrid({url:datagrid_data.json,columns:[[{field:code,title:Code,widt…...

动态规划python简单例子-斐波那契数列

def fibonacci(n):dp [0, 1] [0] * (n - 1) # 初始化动态规划数组for i in range(2, n 1):dp[i] dp[i - 1] dp[i - 2] # 计算斐波那契数列的第 i 项print(dp)return dp[n] # 返回斐波那契数列的第 n 项# 示例用法 n 10 # 计算斐波那契数列的第 10 项 result fibonac…...

免 费 搭 建 多模式商城:b2b2c、o2o、直播带货一网打尽

鸿鹄云商 b2b2c产品概述 【b2b2c平台】&#xff0c;以传统电商行业为基石&#xff0c;鸿鹄云商支持“商家入驻平台自营”多运营模式&#xff0c;积极打造“全新市场&#xff0c;全新 模式”企业级b2b2c电商平台&#xff0c;致力干助力各行/互联网创业腾飞并获取更多的收益。从消…...

Python AttributeError: ‘NoneType‘ object has no attribute ‘shape‘如何解决

Python AttributeError: ‘NoneType‘ object has no attribute ‘shape‘ 运行出现上述错误&#xff0c;这个错误表示某个图像对象为 NoneType &#xff0c;没有 shape 属性。通常情况下&#xff0c;这是因为 OpenCV 没有能够正确地加载图像&#xff0c;导致无法访问图像数据。…...

vue3自定义确认密码匹配验证规则

// 自定义确认密码匹配验证规则 const matchPassword (rules:any, value:any, callback:any) > {if (value ! addData.payPwd) {callback(new Error(两次密码输入不一致&#xff01;))} else {callback()} }const rules reactive({payPwd: [{ required: true, message: &q…...

岗位所处定位,岗位职责

电子产品所需岗位&#xff1a;pcb设计电路板,fpga&#xff0c;嵌入式&#xff0c;应用层&#xff08;前后端&#xff0c;移动端&#xff09;。 PCB 岗位职责&#xff1a;1.负责器件.工程或者项目与技术验证类的PCB板设计工作&#xff1b;2.协助项目中部分模块的PCB&#xff08…...

2024阿里云服务器配置推荐方案

阿里云服务器配置怎么选择合适&#xff1f;CPU内存、公网带宽和ECS实例规格怎么选择合适&#xff1f;阿里云服务器网aliyunfuwuqi.com建议根据实际使用场景选择&#xff0c;例如企业网站后台、自建数据库、企业OA、ERP等办公系统、线下IDC直接映射、高性能计算和大游戏并发&…...

OceanBase原生分布式数据库

1.历史背景 在Java Web项目中&#xff0c;常常使用免费开源的MySQL数据库存储业务数据&#xff0c;按业界经验MySQL单库超过多大数据体量&#xff0c;或单表超过几百万条数据后就会出现查询变慢的情况&#xff0c;单实例数据库只能扩展物理资源(CPU、内存)&#xff0c;来提升查…...

首次使用go-admin

go-admin 1.1 拉取 拉去后端代码 git clone https://github.com/go-admin-team/go-admin.git拉取前端代码 git clone gitgithub.com:go-admin-team/go-admin-ui.git 1.2 编译 cd ./go-admingo mod tidygo build1.3 配置文件的修改 这里可以可以根据自己的需要进行自定义两…...

软件工程概论---内聚性和耦合性

目录 一.耦合性 1.内容耦合 2.公共耦合 4.控制耦合 5.标记耦合&#xff08;特征耦合&#xff09; 6.数据耦合 7.非直接耦合 二.内聚性 1.偶然内聚 2.逻辑内聚 3.时间内聚 4.过程内聚 5.通信内聚 6.顺序内聚 7.功能内聚 一.耦合性 耦合性是指软件结构中模块相互…...

纯血鸿蒙「扩圈」100天,酝酿已久的突围

坦白讲&#xff0c;去年参加华为开发者大会看到HarmonyOS NEXT&#xff08;仅运行鸿蒙原生应用&#xff0c;所以也称作「纯血鸿蒙」&#xff09;的时候&#xff0c;小雷也没料想到鸿蒙原生应用生态的发展速度会如此之快。 9月25日&#xff0c;华为正式对外宣布启动HarmonyOS NE…...

UICollection Compositional Layout全详解

本文字数&#xff1a;8325字 预计阅读时间&#xff1a;45分钟 01 Collection View Layout全详解 UICollectionView在iOS中是构建复杂布局的强大工具。iOS13中引入的 UICollectionViewCompositionalLayout为创建自定义布局提供了全新的可能性。本文将深入探讨Compositional Lay…...

单例模式的模板

参考了网上的一些单例模式&#xff0c;自己也写一个模板。 要点&#xff1a; 线程安全性单例对象的唯一性 #include <mutex> //在模板类 Singleton 中&#xff0c;可以定义单例模式的实现细节 template <typename T> class Singleton { public://通过删除拷贝构造…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...