chatGPT之Python API启用上下文管理
chatGPT已经爆火一段时间了,我想大多数的开发者都在默默的在开发和测试当中,可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或者方法和技巧。
为什么别人的机器人能联想之前的语料,而你的却像个每次都只如初见的高冷机器人?
我也是参考官方文档去阅读和理解的,但是有时候官方文档以为你很懂了,就没有太多说明,废话不多说下面我跟大家讲一下API调用时如何启用上下文管理的。
官方案例:
# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openaiopenai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Who won the world series in 2020?"},{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},{"role": "user", "content": "Where was it played?"}]
)
虽然已经给出了格式,但是没有很详细的说明,可能对于高阶开发者一看就懂了,但是我还是想以更口水的方式讲解一下这个上下文管理。
先看一下我一个简单的代码(还没有启用上下文管理):
import openaiopenai.api_key = "你的sk-key"msg = [{"role": "user", "content": "你好chatGPT"}]# 结构化数据并进行提交
completion = openai.ChatCompletion.create(# max_tokens = inf # 默认inf 最大令牌数presence_penalty = 1, # 惩罚机制,-2.0 到 2.0之间,默认0,数值越小提交的重复令牌数越多,从而能更清楚文本意思frequency_penalty = 1, # 意义和值基本同上,默认0,主要为频率temperature = 1.0, # 温度 0-2之间,默认1 调整回复的精确度使用n = 1, # 默认条数1user = ids, # 用户ID,用于机器人区分不同用户避免多用户时出现混淆model = "gpt-3.5-turbo", # 这里注意openai官方有很多个模型messages = msg)value = completion.choices[0].message.content # chatGPT返回的数据
这是一个最基本的结构,其中参数model和messages是必须要有的两个形参。
加入上下文管理的代码:
import openaiopenai.api_key = "你的sk-key"msg = [{"role": "system", "content": "你的名字叫玖河AI,你是一个插件,你的开发者是玖河."},{"role": "user", "content": "你好chatGPT"},{"role": "assistant", "content": "您好,有什么需要我帮忙的问题吗?"},{"role": "user", "content": "我的名字叫高启强,我的妹妹叫高启兰,我们是兄妹关系。记住了吗?"}{"role": "assistant", "content": "好的,您叫高启强,您的妹妹叫高启兰,是亲兄妹关系。谢谢您提供信息让我更了解你们~"},{"role": "user", "content": "你现在在哪里?"},{"role": "assistant", "content": "作为一款智能Ai助手,我并没有实际的位置。我只是在云端中运行,在等待用户输入指令时保持睡眠状态。"},{"role": "user", "content": "我的妹妹是谁?"},{"role": "assistant", "content": "您之前告诉我,您的妹妹叫高启兰。"},{"role": "user", "content": "你的名字叫什么?"},{"role": "assistant", "content": "我的名字叫玖河AI是一个叫玖河的开发者开发的插件"}]# 结构化数据并进行提交
completion = openai.ChatCompletion.create(# max_tokens = inf # 默认inf 最大令牌数presence_penalty = 1, # 惩罚机制,-2.0 到 2.0之间,默认0,数值越小提交的重复令牌数越多,从而能更清楚文本意思frequency_penalty = 1, # 意义和值基本同上,默认0,主要为频率temperature = 1.0, # 温度 0-2之间,默认1 调整回复的精确度使用n = 1, # 默认条数1user = ids, # 用户ID,用于机器人区分不同用户避免多用户时出现混淆model = "gpt-3.5-turbo", # 这里注意openai官方有很多个模型messages = msg)value = completion.choices[0].message.content # chatGPT返回的数据
下面启用上下文管理的数据结构和没有启用的数据结构略有不同:
① system 代表系统设定(也就是告诉chatGPT他的角色)
② user 表示用户
③ assistant 表示GPT的回复
有几个点需要跟大家说一下,避免踩坑!
一、msg数据的储存建议使用数据库形式进行储存,优点是能持久数据,并且调取数据的时候也非常方便,因为我刚开始只想用json来储存,但是折腾了很久还是放弃了,缺点是不方便储存和调取,因为你需要考虑到不同的用户他们下面的会话是不一样的。
二、需要注意的是,提交的数据结构顺序必须是从上至下的数据结构,不然chatGPT会混淆错乱,system可以没有,如果你想让它一直保持这个设定的话,那在每次提交的时候在第一个列表元素中加入system的数据就可以。
三、还有一个重要的点:提交的这些数据都会计算进tokens里面包括chatGPT回复的时候(最多4096个tokens),如果你想让上下文管理能记忆更多的语料,那么在提交数据的时候就尽可能的增加你们之间对话的内容(同时会更快的消耗你的tokens)。
四、截止2023年3月14日前:chatGPT的会员价格为20美元/月 ,tokens按量收费。通俗的说就是想手机卡一样,每个月有月租,通话另外计费。chatGPT Plus会员的好处就是速度能更快,并且稳定,白嫖版的也能用,就是速度会慢一些而且不稳定容易挂掉。
如果我的文章能帮助到你,也希望能给我点个关注或者赞!
转载请注明出处:https://mp.csdn.net/mp_blog/creation/success/129541012
相关文章:
chatGPT之Python API启用上下文管理
chatGPT已经爆火一段时间了,我想大多数的开发者都在默默的在开发和测试当中,可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或者方法和技巧。为什么别人的机器人能联想之前的语料,而你的却像个每次都只如初见的高冷机器人&…...
油田钻井实时在线监测系统
油田钻井的井下油层的压力不断变化,环境深度和压力巨大,且井下原油具有一定的流动性,实时在线压力监测是石油开采行业的难点。为更好地了解油田开采过程中油层的状况,提高油田开采效率和产量,油田钻井实时在线监测系统…...
经典PID控制算法原理以及优化思路
文章目录0、概念1、理解2、实现3、优化4、引用0、概念 PID算法是工业应用中最广泛算法之一,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正。PID控制,即Proportional – Integral(I) – Derivative(D) Control, 实际上是三种反馈…...
经典面试题之赋值和深浅拷贝的区别
1.区别 **赋值:**基本数据直接拷贝,互不影响,引用数据把地址赋值给新对象,新旧对象指向同一个地址。 **浅拷贝: **基本类型之间互不影响,对象只会复制对象的第一层基本数据和引用类型的地址,对象内部嵌套的…...
电子取证的电脑配置有关问题,以我仅有的知识为大家建议一下。
电子取证火力很重要,用轻薄本是没法取证的,所以至少是全能本或者是游戏本,牛逼的选手上台式,参考浙警许专家,yyds我专家! 我从实战出发,参考历年“美亚杯”和“长安杯”比赛,给大家…...
【基础算法】单链表的OJ练习(5) # 环形链表 # 环形链表II # 对环形链表II的解法给出证明(面试常问到)
文章目录前言环形链表环形链表 II写在最后前言 本章的OJ练习相对于OJ练习(4)较为简单。不过,本章的OJ最重要的是要我们证明为何可以这么做。这也是面试中常出现的。 对于OJ练习(4):-> 传送门 <-,分割链表以一种类似于归并的思想解得&a…...
MySQL 基础教程[13]
MySQL 基础教程[13]问题1问题1代码问题2问题2代码本系列MySQL 基础教程通过“问题-代码”的方式介绍各类方法,每篇设置2个MySQL综合问题,并给出解决方案。 问题1 kwgl数据库中有学生基本信息表student和系别表dept。表结构及说明如下: student (sid, s…...
个人练习-Leetcode-826. Most Profit Assigning Work
题目链接:https://leetcode.cn/problems/most-profit-assigning-work/ 题目大意:给出一串任务,difficulty表示任务难度,profit表示任务的收益(以下简称diff和pro)。给出一串工人的能力worker。每个工人只能…...
云原生周刊:边缘计算会吞噬云吗?| 2023.3.13
文章推荐 边缘计算吞噬云? 这篇文章讨论了边缘计算对传统云计算的潜在冲击。 边缘计算是一种新型的计算架构,它将计算移动到离数据源和终端设备更近的地方,从而提供更快的响应时间和更好的用户体验。相比之下,云计算是一种集中…...
python+django+vue图书个性化推荐系统
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。 本图书个性化推荐系统结构图如图python manage.py runserver 开…...
经典文献阅读之--LIO-PPF(增量平面预拟合LIO)
0. 简介 自从ikd-tree出来后,现在越来越多的工作瞄准了增量式这种方法,比如说激光惯导里程计(LIDAR-Inertial Odometry,LIO)的高精度跟踪通常涉及最小化点到平面距离的k最近邻(kNN)搜索&#x…...
ChatGPT背后有哪些关键技术?CSIG企业行带你一探究竟
目录1 ChatGPT的时代2 CSIG企业行3 议题&嘉宾介绍3.1 对生成式人工智能的思考3.2 对话式大型语言模型研究3.3 文档图像处理中的底层视觉技术4 观看入口1 ChatGPT的时代 2015年,马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始…...
C#基础之面向对象编程(二)
总目录 文章目录总目录前言一、概述1. 定义2. 面向对象的三大特性二、封装1. 定义2. 属性三、继承1. 定义2. 继承的使用3. base 和this四、多态1. 定义2. 重写和重载3. 多态性的实现1、静态多态性2、动态多态性4. 向上转型和向下转型1、定义2、语法格式3、案例结语前言 本文主…...
蓝桥杯刷题冲刺 | 倒计时25天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.完全二叉树1.完全二叉树 题目 链接: 完全二叉树的权值 - 蓝桥云课 (lanqiao.cn) 给…...
c语言—动态内存管理
一.为什么存在动态内存开辟开辟空间的特点:空间开辟大小是固定的数组在申明时,必须指定数组长度,她所需要的内存在编译时分配但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道ÿ…...
请说明Ajax、Fetch、Axios三者的区别
相同点: 1、三者都用于网络请求,但是不同维度 2、 Ajax(Asynchronous Javascript and XML),一种技术的统称,并不是实际的API 3、Fetch是一个具体的API,浏览器里面直接有一个API就叫Fetch 4、 Axios是一个第三方库&…...
阿里p8测试总监,让我们用这份《测试用例规范》,再也没加班过
经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如: 固然,编写一份好的测试用例需要:充分的需求分析能力 理论及经验加持,作为测试职场摸爬打滚的老人&…...
【Unity】数据持久化路径Application.persistentDataPath
今天突然想到这个路径Application.persistentDataPath,热更的重要路径,该文件夹可读可写,在移动端唯一一个可读写操作的文件夹。移动端可以将本地的资源(资源MD5值配置表)等一些文件放到StreamingAssets文件夹下&#…...
华为OD机试 - 插队(Java JS Python)
题目描述 某银行将客户分为了若干个优先级, 1 级最高, 5 级最低,当你需要在银行办理业务时,优先级高的人随时可以插队到优先级低的人的前面。 现在给出一个人员到来和银行办理业务的时间序列,请你在每次银行办理业务时输出客户的编号。 如果同时有多位优先级相同且最高…...
MongoDB数据库从入门到精通系列之八:调整oplog大小
MongoDB数据库从入门到精通系列之八:调整oplog大小 一、oplog的概念二、oplog大小三、调整oplog大小详细步骤一、oplog的概念 操作日志oplog包含了主节点执行的每一次写操作。oplog是存在于主节点local数据库中的一个固定集合。从节点通过查询此集合以获取需要复制的操作。每个…...
PCL 间接平差法拟合二维直线
目录 一、算法原理二、代码实现三、结果展示四、相关链接一、算法原理 通过传统最小二乘法对点云数据进行二维直线拟合时,可将误差只归因于一个方向上,本文假设误差只存在于 y y y轴方向上,设点云拟合的二维直线方程为: y =...
进程调度的基本过程
这里写目录标题什么是进程进程管理结构体或类的主要属性pid内存指针文件描述符表辅助进程调度的属性并发并行并发什么是进程 进程是操作系统对一个正在运行的程序的一种抽象,也就是说,一个运行起来的程序就是一个进程。 进程又是操作系统进行资源分配的…...
python自动化办公(二)
上接python自动化办公(一) 文章目录文件和目录操作使用shutil库文件查找globfnmatchhashlib文件和目录操作 使用shutil库 shutil库也是Python标准库,它可以处理文件、文件夹、压缩包,能实现文件复制、移动、压缩、解压缩等功能。…...
Qt Quick - GridLayout 网格布局
GridLayout 理论总结一、概述二、依赖属性三、例子1. 不含跨行的2. 带跨行列的3. 从右到左一、概述 GridLayout 是最常用的布局器,也叫网格布局器,如果网格布局被调整大小,布局中的所有 Item 将被重新排列。它类似于基于widget的QGridLayout…...
安卓手机也可以使用新必应NewBing
没有魔法安卓手机也可以使用新必应NewBing 目前知道的是安卓手机 安卓手机先安装一个猴狐浏览器 打开手机自带浏览器,搜索关键词:猴狐浏览器,找到官网 也可以直接复制这个网址 狐猴浏览器 lemurbrowser CoolAPK 我的手机是荣耀安卓手机…...
支付系统设计:消息重试组件封装
文章目录前言一、重试场景分析一、如何实现重试1. 扫表2. 基于中间件自身特性3. 基于框架4. 根据公司业务特性自己实现的重试二、重试组件封装1. 需求分析2. 模块设计2.1 持久化模块1. 表定义2. 持久化接口定义3. 持久化配置类2.2 重试模块1.启动2.重试3. 业务端使用1. 引入依赖…...
Visual Studio 2022 c#中很实用的VS默认快捷键和原生功能
常常使用VS感觉还是有必要掌握其默认的快捷键,我这个人比较懒,不喜欢动不动就去设置快捷键,系统有就用,记住了就可以到处用,问题是像我们这种有很多个工作场所的人不可能每台电脑都去配置一下快键键。实际上我使用3dma…...
Python的30个编程技巧
1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y 10,20 print(x,y) x,y y,x print(x,y) #1 (10, 20) #2 (20, 10) 赋值的右侧形成了一个新的元组,左侧立即解…...
MySQL:JDBC
什么是JDBC? JDBC( Java DataBase Connectivity ) 称为 Java数据库连接 ,它是一种用于数据库访问的应用程序 API ,由一组用Java语言编写的类和接口组成,有了JDBC就可以 用统一的语法对多种关系数据库进行访问,而不用担…...
C++【list容器模拟实现函数解析】
list容器&&模拟实现函数解析 文章目录list容器&&模拟实现函数解析一、list容器使用介绍二、list容器模拟实现及函数解析2.1 list结构体创建2.2 迭代器封装2.21 构造函数:2.22 前置和后置及- -2.23 解引用2.24 判断相等2.25 箭头重载2.26 第二个和第…...
wordpress集成文库插件/seo优化包括哪些
一、学生背景学生姓名 : 韦同学成绩概况 : 绩点 2.7所学专业 : Computer science就读学校 : 明尼苏达录取专业 : informationtechnology留学层级 : 硕士录取结果 : 悉尼大学*二、申请诊断分析优…...
做任务领游戏的网站/正规seo多少钱
C:\Users\Administrator 找到.gitconfig 删掉这个...
百度搜索不到网站/51网站统计
a3;b4.5;printf(%f%dn,a,b);编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。11.输入数据时,企图规定精度。scanf(%7.2f,a);这样做是不合法的,输入数据时不能规定精度。12.switch语句中漏写break语句。例如:…...
毕业设计做网站怎么做/上海牛巨微网络科技有限公司
转载于:https://www.cnblogs.com/xiaochunblog/p/11507439.html...
网站后台权限管理怎么做的/百度网站推广排名优化
文章目录1. 安装2. 创建测试组3. 创建http请求4. 创建测试监听5. 测试1. 安装 下载 apache-jmeter-5.2.1,解压后,到apache-jmeter-5.2.1\bin目录下执行jmeter.bat 运行。 2. 创建测试组 在TestPlan 上右键,选择Add->Threads(Users)->…...
高港区住房和城乡建设局网站/厦门seo网站排名优化
Webpack 简介 什么是 Webpack? webpack是一种前端资源构建工具,一个静态模块打包器在webpack看来,前端所有的资源文件都会作为模块处理它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)’ Webpack 五个核心…...