likes
comments
collection
share

自己动手,从了解到开发:掌握OpenAI的ChatGPT

作者站长头像
站长
· 阅读数 2

一、ChatGPT 的潦草的简介

ChatGPT 是一种被称为"语言模型"的人工智能。就像你学习语言一样,它也通过阅读大量的文本来学习语言的规则和模式。

可以把ChatGPT看作是一个超级聪明的回答机,它擅长处理各种与语言相关的任务。比如回答问题、写作、对话,甚至帮助编程。你只需要输入你的请求或问题,ChatGPT就会根据能够理解它的训练,理解你的输入,并生成有用、相关、并且符合语言规则的输出。

在如此火爆的情况下,在铺天盖地的信息中,我浅总结一下 ChatGPT,通过这篇文章,你可以了解到

  • 了解GPT的能力、与边界限制
  • 更有效的跟GPT得到沟通技巧,从而得到更精确的答案
  • 了解ChatGPT-4ChatGPT-4 的插件生态、更加强大的 GPT 功能扩展。
  • 实际应用场景举例、辅助面试、语言学习、等
  • 如何基于ChatGPT、开发自己的产品,以及踩坑经验分享 -- 程序员秒懂
  • 展望一下、思考如何使用它为自己赋能

二、注册一个账号

要想体验gpt或者基于gpt接口开发自己的模型,首先,你得有一个openAi的账号!

中国大陆和香港地区用户不能直接注册使用ChatGPT,他们需要通过“科学上网”来解决。然而,这种方法也存在问题。一方面,由于许多翻墙节点被滥用,用户可能会遇到注册不成功的问题。另一方面,即使成功注册,他们的账号也可能会被OpenAI封禁。为了解决这些问题,建议使用来自国外正规厂商的VPN。

如何注册一个gpt账号?

可以戳如何优雅的申请一个属于自己的ChatGPT账号

友情提示:墙外非法外之地! DDDD

三、深入一点了解GPT

常常有人说,ChatGPT不过是一个更高级的搜索引擎,那我想说,你可以也只是一个不太聪明的人类。

没错,这么说的人曾经是我,如今使用后,对它佩服的五体投地的人也是我。

当真正深入使用ChatGPT后,你会发现它的能力远超我们的想象。

在过去,我们和计算机的交互方式往往是固定且单一的命令,比如用Ctrl+CCtrl+V复制粘贴文本。然而,当我们使用ChatGPT时,我们的命令变成了自然语言,这是一种更加接近人类交流方式的交互。

然而,正因为每个用户使用语言的方式各不相同,没有统一的固定格式,所以ChatGPT给出的回应质量有时也会参差不齐。如果我们提出的问题或命令表达不清,那么ChatGPT给出的回答也可能会不够准确。

这也正是为什么我们在使用ChatGPT时,需要精准地给出命令。这并不意味着我们需要使用复杂的语言或者专业术语,而是要明确并准确地表达我们的需求。这就是所谓的“ prompt ”,或者说是我们给ChatGPT的“指令”。

所以,尽管ChatGPT已经很强大,我们还是需要学习如何更好地和它交流,以便获得更好的回应。只有当我们和ChatGPT达到真正的沟通,我们才能真正利用它的潜力,开启全新的人工智能交互方式。

后面给大家列出了能够跟 GPT 更好共同的技巧和基础的“prompt”,帮助大家更高效的跟 ChatGPT 沟通,得到更精确的答案。先来了解一下GPT的能力与边界。

3.1 GPT的能力与边界

下面设计了一个表格,提供了一个清晰、简洁的视图,帮助我们了解GPT的主要边界和限制,从而能更好地利用它的能力,并理解其局限。

当然现在网上也有一些“越狱”训练,试图将GPT 变成一个坏孩子,去其糟粕,谨慎学习。

GPT的边界和限制详细描述
知识截止日期「GPT的知识训练截止时间是2021年9月」,这就意味着它无法获取或理解这之后的信息或事件。(没有使用plugin的情况下)
准确性限制有可能受到一些低质量语料的影响,它提供的知识可能未必准确,所以针对它每一次的回答,我们都要有基本的判断并及时的纠正它,防止不要被它带跑偏,这个也是它不能完全替代人类的部分原因
未公开限制GPT并没有能力访问或理解个人或特定用户的数据。所有的响应都是基于它所学习的公开可用的信息。
无实际理解尽管GPT可以生成类人的文本,但实际上,它并不理解它正在说的内容。它只是模仿它在训练数据中学到的语言模式。
缺乏主观性和情感基于事实和信息训练的模型,没有自己的主观意见、情感或信仰、所以如果你想聊的内心的小九九,基本得不到你想要的人类能给你的赞同感或附和。
安全和道德限制不会提供有害、违法或不道德的信息
简化和概括由于回答的长度限制以及语言模型的工作原理,它会尽可能的进行概括和简化。这可能导致某些细节被忽略或表达不完全准确。
依赖prompt你没有表述的所有想法,背景,偏向,它完全不知道,所以一定要在prompt中表明你所有的信息用于跟gpt更高效的沟通,这个是后面的重点,也是目前很多基于AI创业的人的创业口子,比如promptbase 「OpenAI的创始人兼CEO山姆·奥特曼今年2月底在其推文中说到,为聊天机器人编写高质量的提示词是一项惊人的高杠杆技能」
保密忠告「这是一条友情提示,不要把公司机密或重要文件等发送给 ChatGPT,严格遵守安全红线!!!」

3.2 GPT到底能做那些事情?

它是一个超级语言模型,关于文字,代码,字符等有关的,2021年9月之前人类已经有公开资料的,它几乎都能做。

结合资料,和GPT自己的回答,总结一下简单的场景、几乎涵盖了生活的方方面面

类别示例
辅助写作和创意文本沟通,文本不全,对话,问答,文本扩写,文本总结,创意写作,内容编辑,翻译,写作建议,电影和书籍推荐,事情概要,产品说明,将故事,书写演讲报告,报告辅导,信件,电子邮件,新闻摘要,广告文案,社交博文
指南、学习、教育数据分析,教育辅导,学习资料推荐,语言学习辅导,学术研究,实验报告,论文审阅,阅读理解,数学求解,科学实验设计,编程教学,历史事件分析,地里知识,金融,化学,物理,哲学等等
职业与发展职业发展建议,面试攻略,计划与目标锁定,个人成长建议,简历或求职信编写,决策辅助,时间管理,职场心理,职业技能问题解答,职场礼仪,团队协作,面试技巧,工作报告,行业报告,企业文化
生活、监控、旅行个人助手,旅行规划,菜谱,健康建议,制定预算,宠物护理,职务养护,环保意识,节能减排,家居创意,礼品建议,节日庆祝,亲子活动,休闲娱乐,安全意识,个人形象,睡眠质量提升,饮食建议,保险规划,投资理财
工作效率任务管理,提升工作效率工具推荐,时间管理技巧,工作流程话,文件管理,会议效率提升,管理技巧,快捷键与工作使用,代码编写、团队协作工具推荐

3.3 中文prompt还是英文prompt

使用中文

优点:

  • 文化和语言匹配:如果您的母语是中文,使用中文进行沟通可以更直接、自然,减少语言障碍。
  • 表达更精准:用您最熟悉的语言进行交流,您可以更准确地表达问题、提供细节和理解回答。

缺点:

  • 语料库限制:中文语料库相对于英文语料库可能更有限,这可能导致在某些特定领域或特定问题上的回答不如英文准确。
  • 技术术语匮乏:某些领域的技术术语在中文中可能没有直接的翻译或广泛使用,这可能使得与这些领域相关的问题在中文方面的回答受限。
使用英文

优点:

  • 广泛的语料库:英文的语料库相对来说更广泛,我在英文方面的训练和知识更充实,因此在回答英文问题时可能会更准确和详细。
  • 技术术语的可用性:在某些技术领域,英文的技术术语可能更常见和标准化,这使得在英文方面的回答更具体和精确。

缺点:

  • 语言障碍:如果英文不是您的母语,可能会遇到一些语言障碍,造成理解和表达上的困难。
  • 文化差异:英文文化与您的本土文化可能存在差异,这可能会导致一些误解或难以理解的情况。

总体而言,使用您最熟悉和舒适的语言进行沟通可能会更有效,因为您可以更**「准确」**地表达您的需求和理解它的回答。

上面是 GPT 给我答案,但其实我尝试过,如果用中文没有得到你想要的答案,不如尝试翻译成应该后再发送给 GPT,可能会得到更准确的答案。

3.4、强大的GPT-4模型

2023年3月14日,OpenAI 发布了模型 GPT-4,作为其先前版本GPT 3.5 Turbo模型的升级版,GPT-4在许多方面都有了显著的改进和优化。

首先,GPT-4支持的上下文Token数量大大增加,至少支持8192个Token,甚至其32K版本支持高达32768个Token。这一特性让GPT-4成为了小说创作等长篇文本生成的有力工具。相比之下,以往的模型在处理长篇文本时,通常会受到较大的限制。

其次,GPT-4在推理能力上也有了显著的提升。OpenAI通过多种高难度的测试,证明了GPT-4强大的逻辑推理能力。这些测试包括律师考试、SAT数学考试,以及研究生GRE考试等。这意味着GPT-4不仅能生成流畅自然的文本,更能处理涉及深层逻辑推理的复杂任务。

普通用户是不能直接使用GPT-4的,需要开通ChatGPT Plus服务,$20/月。GPT-4为用户提供了更强大的问答功能,但是也有一些限制,比如每三个小时只能处理25条信息。

同时,针对plus用户,OpenAI还提供了GPT-4的API接口,这使得开发者可以将GPT-4集成到自己的第三方应用中,首先,调用GPT-4的API接口是需要向官方提交申请的,其次,这种强大的功能是需要相应的价格的。

目前,GPT-4 可以已经陆续上架了很多功能强大的插件系统,有人将其类比为“app store”, 每个插件只有简短的几句介绍,但是背后却有着强大的能力,涵盖我们生活,工作的方方面面。

先在设置中打开插件相关功能 自己动手,从了解到开发:掌握OpenAI的ChatGPT

新建一个聊天室 自己动手,从了解到开发:掌握OpenAI的ChatGPT

在Plugin store中选择相关插件 自己动手,从了解到开发:掌握OpenAI的ChatGPT

这些插件,有能联网查询的,有处理图片的,有根据文字生成流程图的,有指定旅行规划的,我并没有一一体验,大家可以找找网上的插件介绍,寻找自己合适的插件,扩展GPT 的功能。

当然,如果你是一个开发者,你有很好的 idea,也可以想 openai 提交 开发插件申请,申请通过后就可参与插件开发并提供给所有人使用。

插件目前只提供给 plus用户 使用,对于普通用户来说,我们也想体验更丰富的 GPT 功能怎么办?

可以使用 Chrome 浏览器插件,目前有很多 Chrome 插件也能丰富 GPT 的功能,比如我后面会提到的 Voice Control for ChatGPT, 就是一个通过语音可以跟 GPT 进行交流,学习英文等用处的插件。

还有Web Chat GPT等等,如果感兴趣,留言后面接着更新吧。

四、更有效的跟GPT得到沟通

4.1 prompt的基础结构

更好的prompt能够帮助你跟gpt更有效的沟通,同时得到更精确的答案。

字段含义示例
指令词明确的指令词,引导问题或指令请告诉我、简述、解释、总结、润色、等等
关键词限关键词,限定问题范围或重点请告诉我关于【人工智能】的【应用领域】
输入输入清晰明了的问题、描述或上下文信息请告诉我人工智能在医疗行业的应用领域和现实案例。
背景提供相关的背景信息,以便我理解问题的上下文选填、eg: 我正在做基于人工智能在疾病诊断和治疗方面的优化
输出要求指明您期望从我这里获得的具体类型的答案或信息选填、eg: 提供关于人工智能在医疗行业的应用领域和现实案例的详细信息。
追问或澄清在需要时,添加追问或澄清问题以获取更准确的回答选填、eg: 您对人工智能在医疗行业的应用领域有特定关注点吗?
举例或场景设定:在需要时,提供具体的例子或设定一个场景,以便更好地理解问题选填、eg: 假设我是一名医学研究员,希望了解如何利用人工智能技术改进疾病诊断和治疗。
限制条件或假设:在需要时,说明问题的限制条件或假设,以便我给出更具体的答案选填、eg: 假设我对人工智能的基本概念有一定了解。

这些例子演示了如何使用规范化的中文句子基础结构来构建问题,提供关键词限定、追问或澄清、举例或场景设定以及限制条件或假设。通过这样的结构,可以更有效地与 GPT 进行沟通,并获得更精确的答案。请根据具体需求和情境,灵活运用这些要素来构建问题。

五、应用场景举例

简简单单的举2个应用场景的例子,其实它可以更强大,写创意文本,写代码,做数据分析,做客户分类等等。

5.1 辅助面试

假设我是一个三年的前端工程师,给Chat GPT 设定成面试官的角色,请 Chat GPT 辅助我进行模拟面试。

自己动手,从了解到开发:掌握OpenAI的ChatGPT

如果它出的问题你不会,可以先让他帮助你回答。

自己动手,从了解到开发:掌握OpenAI的ChatGPT 自己动手,从了解到开发:掌握OpenAI的ChatGPT

如果解释中还有问题想进一步了解,可以进一步追问,比如我想追问:「JSONP具体如何使用?」,你会发现它讲解的很详细,甚至给举出了代码例子。

自己动手,从了解到开发:掌握OpenAI的ChatGPT

提升难度,假设我是一个6年的前端工程师。

自己动手,从了解到开发:掌握OpenAI的ChatGPT

如果觉得自己可能回答的不好,可以让它先帮助你回答一下,你学习即可。

自己动手,从了解到开发:掌握OpenAI的ChatGPT

5.2 语言学习

同样,先跟他说一下双方的角色

自己动手,从了解到开发:掌握OpenAI的ChatGPT

问一下英语学习的建议

自己动手,从了解到开发:掌握OpenAI的ChatGPT

可以让它给你讲一个故事,重点提高的你词汇量

自己动手,从了解到开发:掌握OpenAI的ChatGPT

让他标注一下重点词汇

自己动手,从了解到开发:掌握OpenAI的ChatGPT

请他做英汉对照翻译 自己动手,从了解到开发:掌握OpenAI的ChatGPT

你觉得它只能锻炼你的阅读水平?「漏,大漏特漏!」

一个chrome插件送给大家

自己动手,从了解到开发:掌握OpenAI的ChatGPT

安装成功后,你的输入框是这样的

自己动手,从了解到开发:掌握OpenAI的ChatGPT

然后你就可以让他读取他发送给你文章,还可以给他发送语音进行说英语的训练

自己动手,从了解到开发:掌握OpenAI的ChatGPT

还能设置他的阅读速度 自己动手,从了解到开发:掌握OpenAI的ChatGPT

5.3 更多技巧

更多的技巧其实都是基于 prompt 的 基础结构,需要我们进一步扩展,让 GPT 变得越来越精确。

设定角色和情景
  • 默认情况下,系统预设GPT的角色是智能通用助手,在直接使用Chat GPT界面时看不到的,所以它的回答中规中矩。
  • 不过这个系统角色设定,是可以通过提示与自定义更改的,设定特定的角色或情景可以帮助 ChatGPT 调整回答风格和内容,提供更精确的回答。
  • 通过让GPT能扮演不同的角色,可以为我们提供个性化的服务,否则就只能作为一个AI助手闲聊下去,这是很多人觉得Chat GPT并没有想象中那么强大的主要原因
  • 例如,你可以设定 ChatGPT 为某个领域的专家,或者设定你自己是初学者,或者设定对话双方在特定的情景中。
清晰明确的问题
  • 将问题表述得尽可能明确具体。
  • 如“请解释相对论中的时间膨胀是如何工作的”比“请解释相对论”更能得到精确答案。
提供足够的上下文
  • 如果问题复杂或需要在之前的对话上继续,给出足够的上下文信息会很有帮助。
  • 如在提出数学问题时,告诉ChatGPT你的学习背景以及你已经理解了哪些相关概念。
使用关键词和术语
  • 在问题中使用相关的关键词或术语,可以帮助我更准确地理解你的问题。
  • 例如,在提问编程问题时,指出你正在使用的编程语言。
一次问一个问题
  • 一次提一个问题可以更容易得到准确的答案。
  • 一次提出多个子问题可能导致答案的质量参差不齐。
及时反馈
  • 如果 ChatGPT 回答没有解答你的问题或者存在错误,及时给 ChatGPT 反馈,它会及时承认错误,并提供更好的答案。
  • 比如,在我让他辅助面试(3.5模型)的时候,当我模拟自己是三年和六年的前端求职者时,它给我出了同样一套面试题,然后,我反问它,为什么3年经验和6年经验是同样一套面试题,它马上承认了它的错误,并且基于工作年限重新出了一套更深入的面试题。
给予结果示例
  • 最好给GPT提供一些结果示例,清楚地告知我们想要的结果是什么
  • 比如你想让 ChatGPT 输出一段 JSON 结构,可以举个 json 结构的例子,并且标注每个字段的含义,它就会按照你的要求返回给你对应的json结构

六、基于ChatGPT,使用nodejs开发自己的产品

ChatGPT是完全免费使用的,然而,如果想要进一步探索ChatGPT的开发者和用户来说,OpenAI提供的API接口是收费的。

要使用ChatGPT进行开发,必须创建一个apiKey。这是请求接口必不可少的参数。OpenAI为每一个新注册的账户赠送了5美金的API试用金额度,这些钱将在每次调用接口提问时根据token数量被扣除。当余额耗尽时,你就需要自行充值了。

那么,这5美金的API试用金额度能带来什么呢?对于开发者来说,他们可以用这笔钱来接入GPT模型,开发和测试自己的软件;对于普通用户来说,他们可以用这笔钱来体验其他开发者开发的GPT第三方应用。这样用户不需要购买或订阅这些第三方软件,只需要填入API密钥,消耗自己的账号额度就可以体验其他开发者开发的GPT第三方应用。

ChatGPT背后调用的是GPT的3.5 Turbo模型,其API官方价格为0.002美金1000个Token。这意味着,消耗1美金可以生成50万个Token,大约可生成接近20万个汉字字符,或者更多的英文字符。对于普通用户来说,这是一个相对便宜的价格。

然而,ChatGPT的维护成本是相当高的。据说,OpenAI仅在维护ChatGPT这一个项目上,每天的费用就达到了10万美元。OpenAI发布的新模型GPT-4的API价格更是高达GPT-3.5 Turbo的几十倍,并且它的问题提示词和回复是分开算钱的。尽管GPT-4的API暂时还需要申请,但我们可以预见,这个模型的强大功能会带来更多的可能性和挑战,

如果你想调用 ChatGPT 的接口,开发自己产品,官方给了详细的文档,坏消息是文档都是全英文的,好消息是,我用node.js已经帮大家踩了一遍坑,已经申请了GPT4 的API 开发权限快1个月,但是一直没有通过, 所以我是基于 gpt-3.5-turbo 这个模型开发的。

6.1 获取 organisation 和 apiKey

1、登录openAi的官网,点击用户信息部分,就会有一个下拉浮窗,点击【Manage account】就能跳转到对应页面查看【Organization ID】 自己动手,从了解到开发:掌握OpenAI的ChatGPT 自己动手,从了解到开发:掌握OpenAI的ChatGPT

2、在当前界面就能看到【API keys】,点击按钮创建一个API keys 自己动手,从了解到开发:掌握OpenAI的ChatGPT

3、输出一个key的名字,点击创建 自己动手,从了解到开发:掌握OpenAI的ChatGPT

4、会自动创建一个api-key,但是要注意,为了安全起见,这个api-key只会展示一次,所以创建成功后要及时保存下来 自己动手,从了解到开发:掌握OpenAI的ChatGPT

5、一个openAi的账户可以同时创建多个api-key、所以我们可以同时开发多个不同功能的GPT模型,或者用来让 GPT 并发处理请求 自己动手,从了解到开发:掌握OpenAI的ChatGPT

6.2 了解 Role角色

目前,系统预设的role目前有3个取值:

  • 「user」:在GPT的对话模型中,通常指的是提交prompt的一方,即对话中主动提出问题、发起话题或提供信息的人或系统,user可以是提交问题的我们,也可以将GPT本身视为一个user,通过手动输入或自动生成的方式来模拟User的行为。
  • 「assistant」:表示给completion响应的一方,多数情况下是ChatGPT本身,即与user互动的一方。
  • 「system」:message里role为system,是为了让ChatGPT在对话过程中设定自己的行为,目前role为system的消息没有太大的实际作用,我的理解就是对话二人中的旁白。官方说法如下“Gpt-3.5-turbo-0301并不总是非常关注系统消息。未来的模型将被训练成更加关注系统信息。”也就是说目前这个角色的意义不大。

想通过API实现包含上下文信息的多轮对话的关键就是用好role字段。

给ChatGPT发送消息的时候,参数message是个数组,数组里每个dict有role这个字段。

6.3 基础开发

6.3.1 参数介绍
参数详细描述
model使用的 GPT 的模型
messages数组,可以传递双方对话的角色和 prompt
top p控制生成句子与前文的相关性的,当这个参数值设置得较小,生成的内容将更加紧密地与前文保持一致,输出的结果会更加稳定和中规中矩,同时也会缺失一些创造力
temperature温度参数,和top p参数类似,值越小输出的文本越合乎常理,但同样也会让文本丧失多样性和更多的可能性 ,关于top ptemperature 到底使用哪一个, OpenAI给出的建议是任意调整其中一个即可
6.3.2 直接调用GPT API接口
// 核心代码
let data = {
    model"gpt-3.5-turbo",
    messages: [
        { "role""user""content""hello word" }
    ]
};

let config = {
    method'post',
    url'https://api.openai.com/v1/chat/completions',
    headers: {
        'Content-Type''application/json',
        'Authorization'`Bearer ${你的 apiKey}`
    },
    dataJSON.stringify(data)
};

let completion = await axios(config)
    .then((response) => {
        resolve(response.data.choices[0].message)
    })
    .catch((error) => {
        console.log('gpt err',error);
    });
6.3.3 用三方库 openAi 进行开发

openai 内部封装了对官方接口的请求,也是使用的axios,直接使用。

安装库

npm install openai -d -s
// 核心代码
const { ConfigurationOpenAIApi } = require("openai");
const configuration = new Configuration({
    organisation'你的  org',
    apiKey'你的  apiKey',
});

const openai = new OpenAIApi(configuration);
const intermediateRun = async () => {
    const response = await openai.createChatCompletion({
        model"gpt-3.5-turbo",
        messages: [
            { "role""user""content"'hello word' }
        ],
    });

    console.log(response.data.choices[0])


intermediateRun()
6.3.4 进阶开发

ChatGPT 同一个api-key创建的模型,一次性只能回答一个问题,在他没有回答完上个问题之前,禁止你再发送给他新的问题的,除非你将上一个解答暂停,或者等他完成上一个问题的回答,他才能继续回答下一个问题。

那如果你就是想让他并发处理请求怎么办呢?

「创建多个 apiKey」, 一个账号是可以创建多个apiKey的,我们可以用多个模型去并发处理请求,将他们放到一个队列中,哪个模型的问题先回答完了,再喂给他新的数据就行了。

思路打开了么?参考一个高频面试题【实现批量请求数据,并控制请求并发数量,所有请求结束之后,执行callback回调函数】

如果还么有思路,戳我留言再更新一篇吧。

七、开发踩坑记录

7.1 接口和模型不匹配

接口与文档、我们使用开发对应的模型,需要调用相应的API接口才行,如果接口和模型不匹配,就会访问不通。 自己动手,从了解到开发:掌握OpenAI的ChatGPT

7.2 访问接口报 ip 错误

上面介绍过,国内用户是被墙的,所以如果代理不是全局的,需要再调用接口的时候再加一个代理。 自己动手,从了解到开发:掌握OpenAI的ChatGPT

// 核心代码
let data = {
    model"gpt-3.5-turbo",
    messages: [
        { "role""user""content""hello word" }
    ]
};

let config = {
    method'post',
    url'https://api.openai.com/v1/chat/completions',
    headers: {
        'Content-Type''application/json',
        'Authorization'`Bearer ${你的 apiKey}`
    },
    dataJSON.stringify(data),
    proxy: {
        host"127.0.0.1",
        port7890,
        protocol"http"
    }
};

let completion = await axios(config)
    .then((response) => {
        resolve(response.data.choices[0].message)
    })
    .catch((error) => {
        console.log('gpt err',error);
    });

7.3 报错500

普通用户的目前限制频次是每分钟3次,这个速率目前限制的还是比较狠的,如果用来做商业应用肯定是远远不够的,那只能做“人民币玩家”了 自己动手,从了解到开发:掌握OpenAI的ChatGPT

超过次数、花钱解决、给账号充值。淘宝就有代充, 自己动手,从了解到开发:掌握OpenAI的ChatGPT

7.4 没有上下文

网页版的GPT可以自动调取聊天记录,但是调用API,正常情况下是没有上下文功能的,需要把聊天记录再发送给GPT的,才能让 ChatGPT 有记忆能力,

所以,每次发送请求给 ChatGPT 时,把历史对话记录也一起发送,所以ChatGPT知道对话的上下文。

但是注意这是,双向收费的,即每次单独计费,妥妥的字字如金。

// 核心代码
let contextHistory = []

 // 拼接 用户 的提问记录
contextHistory.push({ "role""user""content"`${params.prompt}` })

let data = {
    model"gpt-3.5-turbo",
    // 将全部聊天记录发送给 GPT 
    messagesJSON.stringify(contextHistory)
};

let config = {
    method'post',
    url'https://api.openai.com/v1/chat/completions',
    headers: {
        'Content-Type''application/json',
        'Authorization'`Bearer ${你的 apiKey}`
    },
    dataJSON.stringify(data),
    proxy: {
        host"127.0.0.1",
        port7890,
        protocol"http"
    }
};

let completion = await axios(config)
    .then((response) => {
        // 拼接 GPT 的回答记录
        contextHistory.push({"role""assistant""content"`${response.data.choices[0].message.content}`})
        resolve(response.data.choices[0].message)
    })
    .catch((error) => {
        console.log('gpt err',error);
    });

7.5 报错400

刚才说过,在调用接口的时候,需要把聊天记录再发送给GPT的,才会有记忆能力,但是这个记忆还是有一定字数限制的,Chat GPT背后的GPT-3.5 Turbo模型,目前最大的Token限制数为4096个,它的意思是当我们与Chat GPT聊天时,我们问的问题加上Chat GPT给的答案的总Token数不能超过4096个,否则Chat GPT又会失去记忆并停止该轮对话,利用OpenAI提供的Token计数器,可以测试到一个汉字大约等于两个Token,最大Token限制数为4096个,换算为汉字为2048个汉字,同时标点符号包括空格也是计算在Token之内的,这意味著问题加上答案的总字数,就中文而言被限制在2000个字上下,超过这个字数限制后,Chat GPT有时就会答案报错,然后就失去了记忆能力。

body过长

  • token数量问题。每次要把历史对话记录传过去,会导致后续单次请求和响应消耗的token数量越来越多,超过ChatGPT模型支持的最大上下文长度,ChatGPT就无法继续往下处理了。返回如下错误:

This model's maximum context length is 4097 tokens. However, you requested 4103 tokens (2066 in the messages, 2037 in the completion). Please reduce the length of the messages or completion.

  • token费用问题。API是按照token数量收费的,这个token计算是prompt和completion的token数量总和。由于后续的请求包含的token数量越来越多,导致每次调用API的收费也越来越高。

所以,惜字如金。

八、展望一下

「更准确的模型:」 随着深度学习技术的发展,我们预期未来的语言模型(比如GPT的未来版本)将变得更加精确,能够更好地理解和生成自然语言。这将导致更准确的答案,更自然的对话,以及更高质量的写作辅助。

「更深的上下文理解:」 未来的模型可能会更好地理解长篇的对话和复杂的上下文,这将使它们能够更好地适应复杂的对话场景,以及处理更复杂的问题和任务。

「个性化和自定义:」 我们可能会看到更多的个性化和自定义选项,允许用户根据自己的需求和偏好调整模型的行为。例如,用户可能能够设置模型的口语程度,选择模型的专业领域,或者指定模型应如何处理特定的问题和情景。

「更多的应用场景:」 随着语言模型技术的进步,我们预期将会出现更多的应用场景,从教育辅助到技术支持,从娱乐到心理健康辅助,等等。

「更好的道德和社会责任:」 随着AI技术的发展,对于AI道德和社会责任的关注也将增加。未来的模型需要更好地处理伦理问题,例如,防止生成有害或误导性的内容,尊重用户的隐私,以及公平和无偏见的处理问题和任务。

总的来说,未来的语言模型将可能在很多方面进行改进,为我们提供更准确、更有用、更负责任的服务。但同时,我们也需要注意到这些技术的潜在风险和挑战,以确保它们的发展能够真正造福人类社会。

以上展望也来自于GPT、以下文案是我看一个博主说的,觉得不错,分享给大家。

只有人才能发现人的需求,然后以人的行动力去解决问题,而当一个人可以影响的用户群体越大,他的商业价值也会越大,ai只不过是能解决实际问题中的一个高效的助手罢了,不管环境怎么变化,还是要保持好奇去持续学习。