手把手教你使用 Python 调用 ChatGPT-3.5-API

前些天 OpenAI 开放了两个新模型的api接口,专门为聊天而生的 gpt-3.5-turbo 和 gpt-3.5-turbo-0301。
在这里插入图片描述

ChatGPT is powered by gpt-3.5-turbo, OpenAI’s most advanced language model.

从上面这句话,我们可以知道现在 chat.openai.com 官网就是由 gpt-3.5-turbo 模型提供的服务,现在官方公开了这一模型的调用接口,这使得我们这些普通开发者也能直接在自己的应用/服务中使用这个狂揽亿万用户的模型。

接下来将和大家介绍如何利用 Python 快速玩转 gpt-3.5-turbo。

先跑起来,再理解

首先你需要有一个 openai 账号,如何注册我就不多说了,网上教程很多,而且很详细,如果有问题可以加我微信:

访问下面页面,登录 openai 账号后,创建一个 api keys。

# api keys 创建页面
https://platform.openai.com/account/api-keys

接下来很简单了,安装 openai 官方的 Python SDK,这里需要注意的是得安装最新版本 openai,官方推荐的是 0.27.0 版本。

pip install openai==0.27.0

直接上请求代码:

import openai
import json# 目前需要设置代理才可以访问 api
os.environ["HTTP_PROXY"] = "自己的代理地址"
os.environ["HTTPS_PROXY"] = "自己的代理地址"def get_api_key():# 可以自己根据自己实际情况实现# 以我为例子,我是存在一个 openai_key 文件里,json 格式'''{"api": "你的 api keys"}'''openai_key_file = '../envs/openai_key'with open(openai_key_file, 'r', encoding='utf-8') as f:openai_key = json.loads(f.read())return openai_key['api']openai.api_key = get_api_key()q = "用python实现:提示手动输入3个不同的3位数区间,输入结束后计算这3个区间的交集,并输出结果区间"
rsp = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "一个有10年Python开发经验的资深算法工程师"},{"role": "user", "content": q}]
)

代码解析:

  • get_api_key() 函数是我自己写的一个从文件读取 api keys 的方法,我是存在一个 openai_key 文件里,json 格式,你可以改成你自己的获取方法,甚至可以直接写到代码里(虽然不推荐,但确实最简单)。
  • q 是请求的问题
  • rsp 是发送请求后返回结果
  • openai.ChatCompletion.create 中参数
  • model 是使用的模型名称,是一个字符串,用最新模型直接设置成gpt-3.5-turbo 即可
  • messages 是请求的文本内容,是一个列表,列表里每个元素类型是字典,具体含义如下表:

在这里插入图片描述

  • 程序运行返回内容,从响应回复内容我们可以看到,回复内容是一个 json 字符串,

在这里插入图片描述

我们可以通过以下方法直接获取相关信息:

在这里插入图片描述
返回消息内容

rsp.get("choices")[0]["message"]["content"]

角色

rsp.get("choices")[0]["message"]["role"]

问题+回答总长度

rsp.get("usage")["total_tokens"]

其他信息也可以通过类似方法获取。

  • 测试 ChatGPT 回答代码运行情况,可以看出代码逻辑和运行都没啥问题,注释也到位。

在这里插入图片描述

实现多轮对话

如何实现多轮对话?

gpt-3.5-turbo 模型调用方法 openai.ChatCompletion.create 里传入的 message 是一个列表,列表里每个元素是字典,包含了角色和内容,我们只需将每轮对话都存储起来,然后每次提问都带上之前的问题和回答即可。

效果图
在这里插入图片描述

  • 可以看到,我首先问了“1+1=几”,然后问“为什么是这样”,ChatGPT 会根据前面的提问将新问题识别为“为什么1+1=2”。
  • 后面继续问水仙花数有哪些,再问“如何写个python程序来识别这些数”,ChatGPT 同样会根据前面的提问将新问题识别为“如何写个python程序来识别这些水仙花数”,并给出对应解答。
  • 实现代码
import openai
import json
import osos.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"# 获取 api
def get_api_key():# 可以自己根据自己实际情况实现# 以我为例子,我是存在一个 openai_key 文件里,json 格式'''{"api": "你的 api keys"}'''openai_key_file = '../envs/openai_key'with open(openai_key_file, 'r', encoding='utf-8') as f:openai_key = json.loads(f.read())return openai_key['api']
openai.api_key = get_api_key() class ChatGPT:def __init__(self, user):self.user = userself.messages = [{"role": "system", "content": "一个有10年Python开发经验的资深算法工程师"}]self.filename="./user_messages.json"def ask_gpt(self):# q = "用python实现:提示手动输入3个不同的3位数区间,输入结束后计算这3个区间的交集,并输出结果区间"rsp = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=self.messages)return rsp.get("choices")[0]["message"]["content"]def writeTojson(self):try:# 判断文件是否存在if not os.path.exists(self.filename):with open(self.filename, "w") as f:# 创建文件pass# 读取with open(self.filename, 'r', encoding='utf-8') as f:content = f.read()msgs = json.loads(content) if len(content) > 0 else {}# 追加msgs.update({self.user : self.messages})# 写入with open(self.filename, 'w', encoding='utf-8') as f:json.dump(msgs, f)except Exception as e:print(f"错误代码:{e}")def main():user = input("请输入用户名称: ")chat = ChatGPT(user)# 循环while 1:# 限制对话次数if len(chat.messages) >= 11:print("******************************")print("*********强制重置对话**********")print("******************************")# 写入之前信息chat.writeTojson()user = input("请输入用户名称: ")chat = ChatGPT(user)# 提问q = input(f"【{chat.user}】")# 逻辑判断if q == "0":print("*********退出程序**********")# 写入之前信息chat.writeTojson()breakelif q == "1":print("**************************")print("*********重置对话**********")print("**************************")# 写入之前信息chat.writeTojson()user = input("请输入用户名称: ")chat = ChatGPT(user)continue# 提问-回答-记录chat.messages.append({"role": "user", "content": q})answer = chat.ask_gpt()print(f"【ChatGPT】{answer}")chat.messages.append({"role": "assistant", "content": answer})if __name__ == '__main__':main()

代码解析:

  • ChatGPT 类,包含三个函数:
  • __init__初始化函数,初始化了三个个实例变量,user、messages、filename(当前用户、消息列表、存储记录的文件路径)。
  • ask_gpt函数,将当前用户所有历史消息+最新提问发送给 gpt-3.5-turbo ,并返回响应结果。
  • writeTojson函数,结束/重置用户时记录当前用户之前的访问数据。
  • main函数,程序入口函数,用户输入用户名后进入与 ChatGPT 的循环对话中,输入 0 退出程序,输入 1 重置用户,退出和重置都会将当前用户之前访问数据记录搭配 json 文件中。
  • 由于 gpt-3.5-turbo 单次请求最大 token 数为:4096,所以代码里限制了下对话次数。

最后

好啦,今天的内容分享就到这里,如果你也对Python技术比较感兴趣,这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,整理不易,请多多点赞分享哦~

微信扫描下方CSDN官方认证二维码即可领取

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python学习软件

工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
在这里插入图片描述

三、Python入门学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

四、Python练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

五、Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~在这里插入图片描述

六、Python面试资料

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
需要的小伙伴可自行微信扫描下方CSDN官方认证二维码免费领取!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地运行 LLAMA GPT-3.5-TURBO开源项目

git: nomic-ai/gpt4all: gpt4all: an ecosystem of open-source chatbots trained on a massive collections of clean assistant data including code, stories and dialogue (github.com) 下载好源码后,的目录结构: 视频中说的 chat 目录…

Springboot集成OpenAi chatgpt3.5官方开源项目opanAI-Java

前言 本文主要介绍Springboot集成openai-java完成openai官方接口的调用,官方有多种语言的demo示例 OPENAI开源openai-java项目地址:https://github.com/TheoKanning/openai-java 准备工作 必要的前提,要使用chatgpt必须要魔法 魔法opena…

ChatGPT 学习 ES lucene 底层写入原理,源码

一直有个疑问“学习最新版lucene 数据写入相关的源码,应该看哪些源码,以什么顺序看(先看什么,后看什么)?” 对于Lucene的数据写入过程,可以分为以下几个阶段 在学习Lucene的数据写入相关的源码…

ChatGPT 深度解读人工智能大模型在产业中的趋势

最早人工智能的模型是从 2012 年(AlexNet)问世,模型的深度和广度一直在逐级扩升,龙蜥社区理事单位浪潮信息于 2021 年 9 月也发布了大规模预训练模型——源 1.0。日前,浪潮信息 AI 算法研究员李峰带大家了解大模型发展…

数据看板--日报、周报、月报

一、数据预览 二、效果图预览 三、新增字段 1、周数 WEEKNUM(B2,2)2、月份 MONTH(B2)备注:B2为日期列 四、看板制作过程 1、控件 控件范围从1到364,用于控制每天的日期 2、通过控件确定当前日期 当天日期基准数字表单控件当前值 星期几TEXT(当天…

研报精选230209

目录 【行业230209财通证券】中国版IFRS17准则深度解析:25号保险合同准则实施在即,构建保险财务分析新逻辑 【行业230209英大证券】电力能源行业周报:比亚迪1月销量依旧亮眼,充换电设施有望纳入市政设施范畴 【行业230209华西证券…

职场上除了「躺」与「卷」,是否有第三种选择存在?

大家好,我是校长。 昨天在知乎上看到一个问题:职场上除了「躺」与「卷」,是否有第三种选择存在? 当我看到这个问题的时候,我想到了两本书,以及我看到的一些最新的观点,我试图结合我看到的书以及…

改名了!

阅读本文大概需要 1.27 分钟。 先说下,我们的 AI 星球已经从「ChatGPT&AI赋能商业」改名为「AIGC 赋能商业」。 改名这件事,从一开始创建的时候就想改了。原先名字里带有 GPT 相关字眼的,我得承认,当时我们这名字起的时候&…

三分钟免费将 Claude API 接入个人服务

首先我们介绍一下今天的主角 Claude Claude 是最近新开放的一款 AI 聊天机器人,是世界上最大的语言模型之一,比之前的一些模型如 GPT-3 要强大得多,因此 Claude 被认为是 ChatGPT 最有力的竞争对手。Claude 的研发公司是专注人工智能安全和研…

一个非常是个程序员表白的浪漫网站(嫦娥奔月)

❤ 精彩专栏推荐👇🏻👇🏻👇🏻 💂 作者主页: 【进入主页—🚀获取更多源码】 🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套) 】 &#x1…

程序员的 100款代码表白特效,一个比一个浪漫

❤ 精彩专栏推荐👇🏻👇🏻👇🏻 💂 作者主页: 【进入主页—🚀获取更多源码】 🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套) 】 &#x1…

程序员表白代码

说到深情的表白,大家在脑海里浮现的是什么? 是莎士比亚追求爱情时的思索: 是爱你,还是更爱你,这是一个值得思考的问题。 还是爱因斯坦相对论之外的浪漫: 万物都是相对的,而我对你的心&#…

程序员-这有一份520表白秘笈送给你

转眼又到了520表白节了,咱们程序员应该如何表白呢,接下来笔者就以亲自动笔给你们一份独家的表白秘笈。 一、比心 这个我之前介绍过母亲节的祝福方式https://blog.csdn.net/BEYONDMA/article/details/90137479,就是利用python的print函数去输…

最浪漫的程序员表白代码打动美人心

多少次的转身,曾经没有提起的勇气,在这一刻向你爱的她倾诉了。 和她的第一次相遇是在一次下班后的回家路上。那时,天正好在下雨,我在路旁的小店的屋檐躲着雨。她拿着雨伞,从我身旁撑着雨伞接着她的闺蜜路过。也行是天注…

程序员表白代码大全,快来向你的ta表白吧~~~

❤ 精彩专栏推荐👇🏻👇🏻👇🏻 💂 作者主页: 【进入主页—🚀获取更多源码】 🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套) 】 &#x1…

PiaolinPlatformV2.1.0 - 给你爱的人一个惊喜吧~(表白模块上线)

前言 飘零定位平台于 2019/02/07 正式上线第一代(地址:https://blog.csdn.net/piaolin_ying/article/details/86772610),上线后反响良好,每日都有新增用户,但由当时技术水平限制,后续运营难以接…

HTML实现表白biu爱心特效 (程序员专属情人节表白网站)

❤ 精彩专栏推荐👇🏻👇🏻👇🏻 💂 作者主页: 【进入主页—🚀获取更多源码】 🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套) 】 &#x1…

“听说,哈佛 最火课程 CS50 的新老师,是一位……AI 聊天机器人?!”

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 去年年底 ChatGPT 毫无征兆地出现,给各行各业都带来了不同程度的冲击,由此掀起的 AIGC 热潮更是改变了许多领域的游戏规则。 但与此同时,诸多大厂和学校也对 ChatG…

武大版 ChatGPT 大模型 CheeseChat 问世:提供日常咨询、学业帮助

ChatGPT在短期内迅速爆红,可以提供课程教学大纲、做作业、编程序、写论文等,深刻影响教育界,引发不少高校纷纷禁用之。 而今天,武汉大学宣布武大版ChatGPT大模型开启内测招募,内测账号仅限武汉大学在校师生&#xff0…