「ChatGPT」Python调用API实现令人惊艳的多轮对话(最新版

您所在的位置:网站首页 怎么安装函数库 「ChatGPT」Python调用API实现令人惊艳的多轮对话(最新版

「ChatGPT」Python调用API实现令人惊艳的多轮对话(最新版

#「ChatGPT」Python调用API实现令人惊艳的多轮对话(最新版 | 来源: 网络整理| 查看: 265

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。

💅文章概要: 各位小伙伴们你们好呀。它来啦!它来啦!它带着众望走来啦!在上一期「ChatGPT」十分钟学会如何在本地调用API_KEY(最新版 | 附源码)中,我们学会了在本地如何使用Python代码调用ChatGPT的API接口。不过上一期的代码只能实现单轮调用,也就是说——不能实现多轮对话,ChatGPT无法理解我们的上下文。这期教程,就让我们一起来实现多轮对话吧!拿起键盘跟我练,一路火光带闪电!

🤟每日一言: 你可以遗憾,但是你绝对不能后悔。遗憾证明你努力过了,只是力有不逮。而后悔,只能说明你当时没努力过。

目录前言准备工作  Python环境安装  安装openai库  安装easygui库  获取API_KEYPython代码讲解 第三方库的引入 类Chat的定义 花销和token计算函数 主体运行函数定义 项目运行效果演示完整源码写在最后的话前言

各位小伙伴们你们好呀。它来啦!它来啦!它带着众望走来啦!在上一期「ChatGPT」十分钟学会如何在本地调用API_KEY(最新版 | 附源码)中,我们学会了在本地如何使用Python代码调用ChatGPT的API接口。不过上一期的代码只能实现单轮调用,也就是说——不能实现多轮对话,ChatGPT无法理解我们的上下文。这期教程,就让我们一起来实现多轮对话吧!拿起键盘跟我练,一路火光带闪电!

准备工作

  在正式开始教程之前,首先我们需要完成如下的准备工作:

魔法(电脑能够正常登录Google官网) Python环境 open ai库 Chatgpt的API_KEY

PS:在学习过程中遇到任何问题,请关注公众号ThundersArk点击菜单栏中的联系我,添加我的个人微信。

  Python环境安装

  Python环境的安装市面上已经有大把的教程了,博主在此不再赘述,最好安装Python的最新3.10版本!

  安装openai库

  在CMD命令行中,输入如下代码安装open ai库:

pip install openai

PS:在安装openai库的过程中可能会产生如下报错:

该报错可能是由于如下问题导致:

没有对open ai库给予信任 pip版本过高

  我们可以通过在pip install openai后面加上软件源并对该存储库给予信任,或者是降低我们的pip版本,CMD中的代码如下:

加上软件源对该存储库给予信任

pip install openai -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

降低pip版本到20.2

python -m pip install pip==20.2 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

PS:如果上述解决方案还是不能解决安装报错问题,请联系博主

  安装easygui库

  在CMD命令行中,输入如下代码安装open ai库:

pip install easygui

PS:如果上述安装不能成功,那么可以加上对软件源的信任!如下所示:

pip install easygui -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

PS:如果上述解决方案还是不能解决安装报错问题,请联系博主

  获取API_KEY

(一)首先,访问Chatgpt官网登录账号

PS:登录成功后,登录之后,点击右上角“Personal”,展开菜单,找到“View API keys”

(二)进入页面后,点击“Create new secret key”按钮,来创建API_KEY。之后复制你的key,记住它!!!单个key只会显示一次!

PS:你可以创建多个key,但是多个key是共享总的金额。

Python代码讲解

  下面将对代码进行逐段分析,觉得麻烦的小伙伴们可以直接跳过这一步到最后的完整源码,获取完整源码噢!   我将全部代码分为了以下五个部分:

第三方库的引入 类Chat的定义 花销和token计算函数 主体运行函数实现 项目运行 第三方库的引入

  在最开头我们要引入我们本项目中要使用到的第三方库

openai库:用于调用ChatGPT接口 easygui:用于控制对话次数import openai import easygui as g 类Chat的定义

  在这段代码中我们定义了一个Chat类,用于实现打印我们的对话并且计算每次调用ChatGPT的花销(钱和token),在后面,我们要将这个Chat类进行实例化!

PS:注意啦!这里要将YOUR_API_KEY替换为你自己的API_KEY,两边的单引号不要去掉,请注意!

class Chat: def __init__(self,conversation_list=[]) -> None: # 初始化对话列表,可以加入一个key为system的字典,有助于形成更加个性化的回答 # self.conversation_list = [{'role':'system','content':'你是一个非常友善的助手'}] self.conversation_list = [] # 初始化对话列表 self.costs_list = [] # 初始化聊天开销列表 # 打印对话 def show_conversation(self,msg_list): for msg in msg_list[-2:]: if msg['role'] == 'user': # 如果是用户的话 #print(f"\U0001f47b: {msg['content']}\n") pass else: # 如果是机器人的话 message = msg['content'] print(f"\U0001f47D: {message}\n") print() # 调用chatgpt,并计算开销 def ask(self,prompt): self.conversation_list.append({"role":"user","content":prompt}) openai.api_key = 'YOUR_API_KEY' response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=self.conversation_list) answer = response.choices[0].message['content'] # 下面这一步是把chatGPT的回答也添加到对话列表中,这样下一次问问题的时候就能形成上下文了 self.conversation_list.append({"role":"assistant","content":answer}) self.show_conversation(self.conversation_list) 人民币花费 = total_counts(response) self.costs_list.append(人民币花费) print() 花销和token计算函数

  在这段代码中我们定义了一个total_counts函数,用于在多轮对话结束后计算所有对话一共消耗的钱和token(字数),上面Chat实现的计算是每一次对话的花销,而这里定义的函数则是用于将Chat类中计算的每一次花销最后进行了一个加总!

def total_counts(response): #计算本次任务花了多少钱和多少tokens: tokens_nums = int(response['usage']['total_tokens']) #计算一下token的消耗 price = 0.002/1000 #根据openai的美元报价算出的token美元单价 人民币花费 = '{:.5f}'.format(price * tokens_nums * 7.5) 合计内容 = f'本次对话共消耗了{tokens_nums}个token,花了{人民币花费}元(人民币)' print(合计内容) return float(人民币花费) 主体运行函数定义

  这是我们项目的主体运行函数,在开头我们要先进行对话次数的限制,记住不要输入太多,否则可能导致调用失败(怕不稳定);

PS:其次是调用次数过多,咱的钱包也顶不住呀!!

def main(): talk = Chat() print() count = 0 count_limit = eval(input("你想要对话的次数是多少呢?\n(请输入数字即可)")) while count


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3