用 Python 实现ChatGPT OpenAI(直接上源码)

网上一大堆教程,好多讲的很墨迹,你需要折腾半天才能调试通,up 这里给大家直接上源码干货。
详细教程后面补充,着急使用的可以直接拿走调试

说明

  1. 到 openai 里面替换你自己的app_key
    • https://platform.openai.com/ 登录账号
    • 登录之后,点击右上角“Personal”,展开菜单,找到“View API keys”
      chat_gpt_key = '你的api_key'
      在这里插入图片描述
  • 然后创建一个 key在这里插入图片描述
  1. 我目前使用的是免费版的最新模型 MODEL = "gpt-3.5-turbo-0301",不建议使用老模型,因为 gpt4 都出了,其余那些模型即将淘汰
  2. gpt4 模型后续补充,可以关注一下,第一时间拿到代码
  3. 网络

源码

直接放入你的 python 工程,引入包,然后运行即可

# 引入 openai 依赖
pip install openai
# 引入 token 计数依赖,如果不想计数,也可以不引用,注释掉num_tokens_from_messages()的代码即可
pip install tiktoken
import openai
import tiktoken# 你的 api_key
chat_gpt_key = '你的api_key'
# 将 Key 传入 openai
openai.api_key = chat_gpt_key
# 模型
MODEL = "gpt-3.5-turbo-0301"ROLE_USER = "user"
ROLE_SYSTEM = "system"
ROLE_ASSISTANT = "assistant"
"""
聊天信息(要记录历史信息,因为 AI 需要根据角色【user、system、assistant】上下文理解并做出合理反馈)
对话内容示例
messages = [{"role": "system", "content": "你是一个翻译家"},{"role": "user", "content": "将我发你的英文句子翻译成中文,你不需要理解内容的含义作出回答。"},{"role": "assistant", "content": "Draft an email or other piece of writing."}
]
"""
messages = []# 调用 chatgpt 接口
def completion(prompt):"""API:https://api.openai.com/v1/chat/completions官方文档:https://platform.openai.com/docs/api-reference/chat:param prompt: 入参文本框:return: 助手回答结果"""response = openai.ChatCompletion.create(# 模型,如 gpt-3.5-turbomodel=MODEL,messages=prompt)message = response.choices[0].message.content# print(response.choices)dealMsg(ROLE_ASSISTANT, message, '2')return message"""计算文本字符串中有多少个 token. 非常长的对话更有可能收到不完整的回复。例如,一个长度为 4090 个 token 的 gpt-3.5-turbo 对话将在只回复了 6 个 token 后被截断。
"""
def num_tokens_from_messages(infoMsg, model):"""Returns the number of tokens used by a list of messages."""try:encoding = tiktoken.encoding_for_model(model)except KeyError:encoding = tiktoken.get_encoding("cl100k_base")if model.startswith("gpt-3.5-turbo"):  # 注意: 未来的模型可能会偏离这个规则num_tokens = 0for message in infoMsg:num_tokens += 4for key, value in message.items():num_tokens += len(encoding.encode(value))if key == "name":  # 如果有名字,角色将被省略num_tokens += -1  # Role总是必需的,并且总是1个令牌num_tokens += 2  # 每个回复都用assistant启动return num_tokenselse:raise NotImplementedError(f"""num_tokens_from_messages() is not presently implemented for model {model}.
See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens.""")"""
:param role: 角色【system,user,assistant】
:param msg: 聊天信息
:param type: 统计 token 环节【1-用户信息,2-助手信息】
"""
totalCount = 0
def dealMsg(role, msg, types):global totalCountif len(messages) == 0:if msg == "":# system 默认角色msg = "你是一个聊天助手与我聊天,回答我,你是什么角色?"else:msg = "假设你是" + msgmessages.append({"role": role, "content": msg})# message = [{"role": role, "content": msg}]# message = [{"role": ROLE_SYSTEM, "content": "你是一个陪我聊天的助手"}]# 转换输入的信息为数组格式并打印 token 数if types == "1":typeMsg = "input"else:typeMsg = "output"# 计费:计算耗费的 token 数count = num_tokens_from_messages(messages, MODEL)totalCount += countprint(f"{count} {typeMsg} prompt tokens counted. all tokens cost {totalCount}")# 历史消息# messageHisList.insert(0, messages)return messages# 运行业务代码
print("[AI|:]" + completion(dealMsg(ROLE_SYSTEM, input("请先设定 AI 的角色(如:一名音乐家)|: "), '1')))
print("[AI|:]" + completion(dealMsg(ROLE_USER, input("[You|:]"), "1")))
goOn = True
while goOn:inputText = input("[You|:]")if inputText.replace('\n', '').replace('\r', '') == "stop":goOn = Falseprint("完整对话记录如下:" + str(messages))breakelse:print(f"[AI|:]{completion(dealMsg(ROLE_USER, inputText, '1'))}")

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

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

相关文章

如何使用OpenAi的ChatGPT咨询AI有关于Baumer工业相机的品牌国际知名度

基于OpenAi的Merlin Chat GPT使用方式 本方法可以不用国外网点进行登录使用ChatGPT 在国内就可以正常使用OpenAI的服务 一、下载Google浏览器 Google浏览器安装地址:https//www.google.cn/intl/zh-CN/chrome/ 登录自己的Google账号 搜索:Merlin - Ope…

我们所知道的关于 OpenAI 的 ChatGPT 的一切

如果您还没有听说过ChatGPT,这是来自人工智能实验室 OpenAI 的不可思议的新聊天机器人,这里是您需要了解的有关这个有争议的新程序的所有信息的快速入门。 什么是聊天 GPT? ChatGPT 是一种人工智能工具,允许用户生成原始文本。你…

好用到爆的Python自动化办公教程pdf,Python × Excel × Word × PPT 一次搞定

在这个自动化时代,我们有很多重复无聊的工作要做。想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。那么在本文中,我将向您介绍一个好用到爆的Python自动化办公教程pdf,Python Excel Wo…

如何利用Multi-Chat搞科研?

这位研究僧,Multi-Chat都发布了,你还在纯人工搞科研吗? 已经有人实测: Multi-Chat科研全流程都能用,尤其是对于英语非母语的科研人员,可以极大地提高日常科研工作效率。 连写给导师的请假信,都能…

全球最大的 ChatGPT 开源替代品来了!

本周赠书:《Elasticsearch数据搜索与分析实战》 出品 | CSDN(ID:CSDNnews)、整理 | 屠敏 自去年 11 月 ChatGPT 面向公众测试以来,OpenAI 一直占据各大科技网站的头版头条,以及成为很多开发者工具的首选。C…

漫谈 ChatGPT 与问答式 BI

近日,观远数据G-park「Lets Date!BI!」系列直播第二期「2023,金融业如何应对“流浪数据”」顺利落幕。观远数据联合创始人兼首席数据科学家字节带来了《漫谈 ChatGPT 与问答式 BI》的探索思考。 字节一方面介绍了一系列 ChatGPT …

为什么所有公开的对 GPT-3 的复现都失败了?复现和使用GPT-3/ChatGPT,你所应该知道的...

文|杨靖锋译|杨昊桐,王骁 修订源|机器之心 英文原版作者:杨靖锋,现任亚马逊科学家,本科毕业于北大,硕士毕业于佐治亚理工学院,师从 Stanford 杨笛一教授。感谢靳弘业对第…

ChatGPT-易编程 V3.0.0:工程级工作支持、智能代码生成、智能代码导读以及更多功能介绍

目录 前言 🌟 功能介绍 🛠️ 命令(图示见本节末尾) 使用 ctrlshiftp 可用的命令: 在文件或选中代码块上右键点击可以使用的命令: 使用快捷键可用的命令: 其他功能 部分功能图示 常见使…

chatgpt生成一个简单PPT

1.先通过chatgpt得到文案 请作为一个富有经验的自媒体从业者,请帮我写一份适用于PPT的文案,主题是AIGC用于产品演示。 注意使用markdown格式,并把回复内容放到代码块中 2.利用mindshow网站生成PPT 导入我们刚刚生成的内容

自动生成原创文章文案软件v.1.2.3

ChatGPT自去年11月发布后在各个领域引发轰动。尤其是在学术界,它引发了一场禁止使用人工智能作弊撰写论文的风波。 然而,时代变化得太快。据泰晤士报,国际文凭组织(IB)反其道而行之,表示将允许参加IB课程的…

Chatgpt4来了,测试小姐姐实测,在失业的边缘疯狂试探~

GPT-4是OpenAI于2023年3月发布的最新人工智能模型,它是继GPT-3.5之后的又一次重大突破。它的核心技术是基于Transformer的自回归语言模型,它使用了大量的无标注数据进行预训练,学习了自然语言和其他模态之间的通用表示和关系。我们今天来看看…

【NLP】ChatGPT试用有感

写在前面 作为一个兼具分析&生成能力的AI,ChatGPT最近一段时间热度都非常高,它的确颠覆了很多人的认知,它的出现一定程度上是强人工智能的出现。ChatGPT似乎已经无所不能,文本分类,信息抽取,文本生成&a…

chatGPT指令大全可免费使用网站列表chatGPT4试用方案

指令列表 写作助理 👉 最常使用的 prompt,用于优化文本的语法、清晰度和简洁度,提高可读性。作为一名中文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性,同时分解长句,减少…

上手ChatGPT威力加强版后,我发现它很强,但也有点拉。。。

今天凌晨,OpenAI 发布了最新的 GPT-4。 根据发布会披露的内容来看,这个新一代比早先大家使用的 ChatGPT 的 GPT-3.5 内核强悍了一大截,再次刷新了编辑部对 AI 的认知。 首先,非常非常重要的一点是,GPT-4 可以接受文字以…

苹果汽车将不支持全自动驾驶;华为云发布研发需求管理工具;腾讯文档发布企业版;OpenAI上线ChatGPT | 每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 01.苹果汽车被曝大降级:不支持完全自动驾驶 12 月 7 日消息,苹果公司已经缩减了其苹果汽车项目,该公司不再计划发布完全自动驾驶的汽车。苹果公司最初想制造一辆没有方向盘和油门的自动…

ChatGPT做到人人都可以配置思科华为网络设备

最近有个一个想法,chatgpt能不能帮忙配置网络设备,于是我开始在网上找了个拓扑图。 然后我将拓扑图及需求,以prompt的形式发送给chatgpt,然后chatgpt根据我的要求,将所有节点的配置全部输出了出来,真是一个…

爆发前夜!华为阿里版ChatGPT!

本文经授权转载自微信公众号:51CTO技术栈,作者 | 徐杰承,审校 | 云昭 “你训练的大模型涌现了吗?”“还没有。好难受。”一时间成为了最近AI赛道玩家的一个爆热梗。 不管承不承认,相信每个玩家都不愿意输掉这场激烈的竞…

Osbypass苹果手机激活锁停用Hello密码锁绕ID屏幕锁密码支持三网(移动、联通、电信)国行版手机解锁打电话4G等支持打电话、短信、4G上网、重启、通知、iCloud登录

Osbypass是一款来自国外开发者的软件。界面简单,操作容易的工具,它可以帮助绕过忘记ID密码的设备,支持iPhone、iPad等。 整个工具界面是中文的,非常友好的操作界面。 MEID三网支持iPhone/iPad,完美重启、ID登录、推送…

最新IPAD协议登陆教程(扫码登陆)/62登陆后续更新

调用“获取登陆二维码”配置相关代理(代理可以通过巨量IP中按量付费测试,充值个10块钱无限用 ) 第一步、获取你要登陆的微信号常用地的代理(如图) 配置跟图片配置一样就行(代理类型务必选择socks),只需要修改你获取代理的地区就好了,然后点击生成api链接; 然后直接…

ipad忘记锁屏密码用计算机解决,4种无需密码即可解锁iPad的方法

第1部分:如何使用dr.fone解锁没有密码的iPad? 通过dr.fone - Unlock(iOS)可以帮助你解锁设备而不会对其造成任何损坏。作为dr.fone工具包的一部分,它是一个非常先进的工具,从死机到处于恢复模式,从数据备份到恢复&…