手把手教你使用Python调用 ChatGPT!我不容许你还不知道这么好的东西!

news/2024/4/18 9:44:37/文章来源:https://blog.csdn.net/weixin_43881394/article/details/129916242

前段时间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 账号,如何注册我就不多说了,网上教程很多,而且很详细,如果有问题可以加我微信:pythonbrief,添加通过后请直接描述你的问题+问题截图

访问下面页面,登录 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,所以代码里限制了下对话次数。

更多拓展

  • 你可以写个函数,从 json 文件读取历史用户访问记录,然后每次访问可以选用户。
  • 你可以写个 web 服务,使用 session 或者数据库支持多用户同时登录,同时访问。
  • 你可以基于之前分享的钉钉机器人项目,将 gpt-3.5-turbo 接入钉钉机器人。

你还可以关注下方小卡片 搜索更多 ChatGPT 相关项目,或者其他有意思的项目学习练手,欢迎学习交流。

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

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

相关文章

ChatGPT是如何教你视频去重的

​ 对于很多自媒体和视频剪辑从业者来说,视频去重是家常便饭了,去重有各种各样的方法和教程,但到底平台是如何识别去重的,哪些去重有效,又该选择怎样的去重方式,小编今天为替大家问了问万能的chatgpt&…

Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca)

Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca) 文章目录Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca)总览前言(与正文可能无关,可以忽略&am…

教你体验目前最火AI - 在craft AI assistant 使用chatGPT

atGPT大火之后,很多人都想体验一把,今天为大家推荐一种免费方式,体验chatGPT同款内核的AI助手。 craft AI assistant Craft 推出的 AI 助手产品 Craft AI Assistant,并且现在就可以使用。根据 Craft 官方介绍,Craft …

ChatGPT非常火,我用它自动编写Python爬虫脚本。结果出乎意料。

前言 都知道最近ChatGPT聊天机器人爆火,我也想方设法注册了账号,据说后面要收费了。 ChatGPT是一种基于大语言模型的生成式AI,换句话说它可以自动生成类似人类语言的文本,把梳理好的有逻辑的答案呈现在你面前,这完全不…

浅谈chatGPT——新必应(bing)版本

年前chatGPT大火的时候,跟风注册了一个账号,在信息检索方面第一直觉就是:这才是我想要的搜索引擎,没有广告,搜索结果总结的很全面到位。然没高兴几天,就发现使用不了了。无论科学上网也好,还是卸…

ChatGPT:从问题解答到赚钱

文 / 韩彬我们往前翻动一下互联网的记忆,不用太久远,停留在2017-2018年就可以了,当时全网讨论最火热的词语叫“娱乐至死”,研究最深的话题叫“阶级跃迁”,批评最多的是某款手游、某短视频平台,说它们杀死了…

十分钟学会QQ集成ChatGPT

前言与环境准备 QQ里面的机器人已经火了很久了,但是每次都是使用的别人的机器人,所以就想看一下网上有没有可以自己实现一个机器人的,查了一些文章然后就发现了chatgpt-mirai-qq-bot,所以就做了一个属于自己的QQ机器人&#xff0…

ChatGPT的主要应用场景例子

ChatGPT是一种基于深度学习技术的大型语言模型,它可以根据用户提供的输入信息,生成自然语言文本或响应。这种技术可以应用于很多领域,下面将详细介绍ChatGPT在以下几个方面的应用:以下是使用过程中的一些应用场景对话记录&#xf…

关于ChatGPT八个技术问题的猜想

作者:张家俊教授单位:中国科学院自动化研究所原文:https://zhuanlan.zhihu.com/p/606478660看到ChatGPT的华丽诞生,心情很复杂,既高兴、惊喜,也感到恐慌,高兴和惊喜的是没有预料到这么快就见证了…

【IDEA集成ChatGPT,开发事半功倍,插件分享】

最近经常在用chatgpt协助编码,一些明确功能的方法或者小需求几乎可以完全依靠chatgpt来完成,发现一个idea中好用的插件,分享下 插件名称就叫ChatGPT,安装后需要一些配置,详细说明如下 1. 使用作者搭建好的代理服务器访问GPT 安装后找到设置Tools -> OpenAI 如图,选择Ope…

中科院ChatGPT Academic开源安装使用过程中的网络代理问题

关于中科院ChatGPT Academic中小白会遇到的问题(windows版)ChatGPT Academic 的项目开源下载安装(这里主要以windows为主)接下来就是大家会经常遇到问题的地方(网络配置和API的输入)这里就是针对小白的与代…

从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断

基本信息 1. 标题:ChatCAD: Interactive Computer-Aided Diagnosis on Medical Image using Large Language Models. 2. 期刊:arXiv 3. IF/JCR/分区:无 4. DOI:arXiv:2302.07257 5. 作者:沈定刚教授团队 1. 导读…

国内首个ChatGPT镜像系统?辅助写代码真方便

hatGPT 美国OpenAI研发的聊天机器人程序,于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚…

ChatGPT专业应用:生成新闻稿

正文共 949 字,阅读大约需要 4 分钟 媒体工作者必备技巧,您将在4分钟后获得以下超能力: 生成新闻稿 Beezy评级 :A级 *经过寻找和一段时间的学习,一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | Kim 编辑者…

一点就通——ChatGPT翻译润色的最新简明使用方案

prompt使用推荐 1.翻译prompt 翻译主要有两种,第一种是我们的老朋友厦门大学潘王雨昂(个人主页:pwya.github.io)所编写使用的prompt,第二种是我自己改造的。 1.我希望你能担任英语翻译、拼写校对和修辞改进的角色。…

全网最详细中英文ChatGPT-GPT-4示例文档-TL;DR文档快速总结应用从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门TL;DR文档快速总结应用场景Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文…

事关ChatGPT账号封禁的强烈忠告

文 / 韩彬(微信公众号:量子论) 这两天有不少朋友加我微信(hanbin266),咨询ChatGPT账户被封了,怎么办? 我在《真实发生了,滥用这种场景,ChatGPT账号被封禁》一…

ChatGPT对测试行业的影响(附GPT使用实战展示)

引言: 时代的巨轮缓缓碾过,顺应时代才能胜者为王 文末有ChatGPT应用实战成果展示 ChatGPT之我见 测试的影响 正如上篇文章的推文所述,AI的发展让我们所有人都始料未及,就好像雨后春笋一样,各种各样的AI技术顺势而…

大学生对chatGPT的认知和使用

新一代对话式人工智能chatGPT在全球范围狂揽1亿名用户,不止于科技界破圈,更成为街头巷尾的谈资。 chatGPT能干什么? https://openai.com/blog/chatgpt/ chatGPT官网 写解决方案编写代码 说笑话 个人体验: 实用性强,相…

基于小程序制作一个ChatGPT聊天机器人

在AI技术日新月异的浪潮中,将ChatGPT与实战开发相结合,制作一个随身携带的聊天机器人,紧贴前沿的同时稳固基础。 一、前言1.1、什么是ChatGPT1.2、什么是文本完成二、API2.1、ChatGPT官网申请API所需要的key2.2、搭建API2.3、创建控制器及动作方法三、小程序3.1、页面创建3.…