ChatGPT智能问答AI使用指南

12/6/2022 ChatGPTOpenAIChatGPT提问技巧ChatGPT衍生工具

# 1. 前言

# 1.1 ChatGPT概述

人工智能研究公司 OpenAI 于2022年11月正式推出 ChatGPT,这是一种基于对话的人工智能聊天机器人模型,它能够理解自然语言并以自然语言的方式做出回应。ChatGPT 基于 GPT-3.5 模型微调而成,以语言服务模型 InstructGPT 为基础,通过人类回馈增强学习训练模型 RLHF,不过数据设置略有不同。它以对话方式进行交互,既能够做到回答问题,也能承认错误、质疑不正确的前提以及拒绝不恰当的请求,能以更贴近一般人的对话方式与使用者互动。

大约七年前,马斯克和OpenAI现任CEO萨姆·奥特曼及其他投资者共同创立了这个公司。2018年,由于一些分歧,马斯克离开了公司。近日,已成为推特新老板的马斯克发推“认可”了他曾经投资的这个项目。他说:“ChatGPT好得吓人。伴随危险,我们离强大的人工智能不远了。”

这几天许多用户都展示了与 ChatGPT 对话的有趣内容,各种问题轻松应答,给出的答案不仅条理清晰,还会引用例子支撑观点。让它帮忙写程序,不仅提供了可用的代码,更是把实现思路也一并写了出来。不过它用2021年之前的数据训练的,所以2022年之后的事情它不知道,回答仍然有一些错误。

# 1.2 ChatGPT原理

ChatGPT的原理是基于自回归语言模型(Auto-Regressive Language Model),它是一种基于深度学习的自然语言处理技术,可以用来生成自然语言文本。它使用一种叫做Transformer的模型,它可以训练一个模型来预测下一个词,从而生成文本。同时OpenAI采用了 RLHF(Reinforcement Learning from Human Feedbac,人类反馈强化学习) 技术对 ChatGPT 进行了训练,而加入了更多人工监督进行微调。所以我们可以看到,一些错误的信息会逐步被更正。而且在很多用户的测试中可以发现,若用户指出其错误,模型会听取意见并优化答案。

ChatGPT简介

# 2. 注册OpenAI账号

2023.4注,注册OpenAI账号越来越难了,而且新注册的账号只送5美刀体验额度了(以前是送18美刀体验额度)。此处的注册教程是2022.12刚出的时候写的,那时候注册还挺容易的,现在不保证能够注册成功。

如果懒的折腾,就直接买个号吧:https://openaikey.xyz/ (opens new window)(非推广,自己2023.7购买的,亲测账号和API-KEY可以使用,用了几个月之后被封了)。自己手动注册的账号,基本上可以长期使用,这种购买的账号都是机器批量注册的,很容易被封,尽量别在里面充值,用完即抛。

ChatGPT购买账号

2024.4注:现在OpenAI推出了“超自由版ChatGPT”,无需注册账号即可随意使用了,不过目前只能使用ChatGPT 3.5版本。

# 2.1 前提条件

# 2.1.1 准备境外代理

注册OpenAI和使用ChatGPT都需要境外代理,如果你对科学上网还不了解,可以先看我的另一篇博客:使用SSR或Trojan-Go科学上网 (opens new window)

# 2.1.2 准备境外手机号验证

必须使用境外真实手机号进行验证,中国大陆及港澳台的手机号不可用,境外的虚拟手机号也不可用。如果没有境外真实手机号,可以找付费接码平台解决,免费的就不要想了,能白嫖的早就被别人白嫖过了,别人绑定过你就不能再绑定了。

Step1:注册短信接码平台账号并充值

可是使用毛子的付费接码平台:https://sms-activate.org/cn (opens new window)

  • 注册过程:注册过程没啥好说的,需要注意的一点是,我一开始使用Gmail注册,但邮箱的确认链接是无效的,后来换成163邮箱,就好使了。
  • 充值过程:接码费用一次为 10.5 卢布,大约1.2 RMB。支持使用支付宝,充值0.2美刀(约合1.5RMB)就足够用了,这个网站会按照卢布进行计费。
sms-activate接码平台

Step2:购买OpenAI接码服务

在左侧的搜索框里搜索“OpenAI”服务,国家选择印度(买之前查看一下OpenAI当前还支持哪些国家注册),买入接码服务。

购买OpenAI接码服务

# 2.2 注册步骤

# 2.2.1 注册账号

这里需要提前把境外代理打开,且 IP 不是香港,最好是美国、新加坡等,不然会提示不能在当前国家服务。

# 2.2.2 绑定境外手机号

注册完账号之后,需要绑定境外手机号才行,这里使用2.1.2节的接码平台绑定境外手机号。

  • 注意需要切换一下国家区号,这里的区号默认是你代理的。

绑定成功之后,就可以进入到ChatGPT的主页面啦。

ChatGPT主页面

# 3. ChatGPT基本使用

# 3.1 使用ChatGPT官方的网页版

网页版直接在输入框里输入问题即可,下面是一些2022年12月初的例子,现在的效果比下图更好。

[1] 用简单的术语解释量子计算

ChatGPT问答示例1

[2] 如何实现中华民族伟大复兴

ChatGPT问答示例2

[3] 根据 Midjourney 的格式,用英文给我一段生成猫窝的 text prompt

ChatGPT问答示例3

[4] 介绍一下MQTT协议

ChatGPT问答示例4

[5] 用python帮我写一段冒泡排序的代码

ChatGPT问答示例5

[6] 帮我写一篇MES软件的技术路线说明书

ChatGPT问答示例6

[7] 作一首关于雪的诗

ChatGPT问答示例7

[8] 你可以取代Google搜索引擎吗

ChatGPT问答示例8

# 3.2 ChatGPT服务可用性及封号问题

# 3.2.1 ChatGPT亚洲大面积限制访问及封号

OpenAI官方从2023年3月30号开始大面积封号,禁止使用亚洲节点登录,有网友还曝出OpenAI已经暂停注册新账号。有分析认为,此前出现封号可能是账号为批量注册、出现API滥用情况或访问量过大造成的技术问题所致。(我的账号还没被封,这里放一张被封号的网图,封号是永久的,即便开通了付费Plus也没用)

为了防止被封号,近期尽量不要登录与使用(那种购买的账号,邮箱权重很低,更容易被封号)。如果非要用的话,开全局代理,用无痕模式,选美国节点,不要使用中文,不要请求的太频繁。

ChatGPT封号

注:有很多机场节点和搬瓦工VPS自建节点的IP也被限制访问了(如果你出现了这个情况,就换节点,节点一个一个试,原因是OpenAl封了你现在使用的这个节点的IP,但账号还没有被封),如下图所示:

ChatGPT限制访问

# 3.2.2 检查ChatGPT官方服务是否可用

ChatGPT自上线以来一直承受着巨大的访问压力,有时候它自己也会挂掉,这个官方的状态监测网站可以查看可用性:https://status.openai.com (opens new window)

检查ChatGPT官方服务是否可用

# 3.2.3 ChatGPT发送不出消息的问题

2024年3月9日,ChatGPT突然出现了发送不出消息的问题,把中文切换到英文即可解决该问题。

ChatGPT修改语言

# 4. ChatGPT衍生工具及同类竞品

# 4.1 ChatGPT衍生工具

# 4.1.1 使用ChatGPT的检索扩展插件

插件描述:Monica使用ChatGPT的强大功能来理解和响应您的聊天消息,只需按下Command+M或Ctrl+M即可在任意网页中唤出。不需要提供自己的ChatGPT API,可以白嫖使用(免费版每天30次)

Chrome插件商店地址:https://chrome.google.com/webstore/detail/monica-%E2%80%94-your-chatgpt-cop/ofpnmcalabcbjgholdjcjblkibolbppb/related (opens new window)

Monica

# 4.1.2 使用ChatGPT对PDF文档进行解读

项目描述:基于ChatGPT的一个应用,上传PDF文档即可让它替你学习,然后你可以直接问它相关问题。ChatPDF的原理是先对上传的PDF进行分析,为文件中每个段落创建语义索引。当用户提出一个问题后,工具就会把关联语段发送给ChatGPT,然后让它结合问题进行解读。

体验地址:https://www.chatpdf.com (opens new window)(可免费体验,该项目没有开源)

ChatPDF

# 4.1.3 使用ChatGPT总结论文概要

项目描述:全流程加速科研,利用ChatGPT进行论文总结+润色+审稿+审稿回复。

项目地址:https://github.com/kaixindelele/ChatPaper (opens new window)(另附:官方体验地址 (opens new window)

ChatPaper

# 4.1.4 基于ChatGPT的法律回答引擎

[1] 作者将中国法律法规喂给 ChatGPT,做成的法律问答引擎。

项目地址:https://github.com/lvwzhen/law-cn-ai (opens new window)(另附:官方体验地址 (opens new window)

基于ChatGPT的法律回答引擎

[2] 清华大学团队开源的中文法律大模型,使用大量法律新闻、法律论坛、法条、司法解释、法律咨询、法考题、判决文书等原始文本来构造对话数据。

项目地址:https://github.com/PKU-YuanGroup/ChatLaw (opens new window)(另附:官方体验地址 (opens new window)

ChatGLM

# 4.1.5 基于ChatGPT总结Bilibili视频

插件简介:哔哩哔哩视频摘要生成器,结合最新ChatGPT智能AI,一键总结Bilibili视频内容。

插件安装:https://chrome.google.com/webstore/detail/bilibili-summary-with-cha/epadnmckjchpoedgecdghpmaicnklagd?hl=zh-CN (opens new window)

基于ChatGPT总结Bilibili视频

# 4.1.6 基于ChatGPT的AI智能问答

秘塔AI搜索:能够通过理解用户意图,提供无广告、高质量的搜索结果,让用户快速直达所需信息。

秘塔AI搜索

# 4.2 ChatGPT同类竞品

# 4.2.1 清华大学的ChatGLM大模型

[1] 千亿对话模型体验

官网地址:https://chatglm.cn/ (opens new window) 目前仅面向高校学术交流与行业合作的试用申请(需要填写高校或企业邮箱去申请,审核很快)

ChatGLM官方版千亿对话模型

注:ChatGLM官方版的千亿对话模型速度很快,效果也挺好,使用体验挺不错的。

[2] 官方的付费API

官网地址:https://open.bigmodel.cn/overview (opens new window) 任何人都可以使用,无需审核,注册后赠送18RMB的体验额度。

ChatGLM官方版定价

开发文档:https://open.bigmodel.cn/doc/api#chatglm_std (opens new window)

详细的调用示例和接口文档自行查阅开发文档。支持同步调用、异步调用、SSE调用三种方式:

  • 同步调用:调用后即可一次性获得最终结果
  • 异步调用:调用后会立即返回一个任务 ID ,然后用任务ID查询调用结果(根据模型和参数的不同,通常需要等待10-30秒才能得到最终结果)
  • SSE 调用:调用后可以流式的实时获取到结果直到结束

# 4.2.2 Anthropic的Claude大模型

官网地址:https://claude.ai/chats (opens new window) 无需申请体验资格,注册即可免费使用。

Claude大模型

注:Claude支持10万Token的超长文本处理,支持添加文件(最多5个,每个10MB,接受pdf、txt、csv等格式)。

# 4.2.3 Google的Bard大模型

官网地址:https://bard.google.com/ (opens new window) 无需申请体验资格,注册即可免费使用。

Bard大模型

# 4.2.4 Kagi的FastGPT大模型

官网地址:https://labs.kagi.com/fastgpt (opens new window) 可以直接免费使用。

FastGPT大模型

# 5. ChatGPT提问技巧

# 5.1 解决ChatGPT的Token上限问题

问题描述:ChatGPT单次的Token上限为4096个,而GPT-4的Token上限也才32768个,这会导致生成一些长回答时,单次未输出完结果就终止了。

解决方案:虽然单次未输出完结果就终止了,但它是可以记忆上下文的,所以在后面只要输入“继续”或者“continue”即可继续输出,该方式适用于所有基于ChatGPT的衍生品。

解决ChatGPT的Token上限问题

# 5.2 各情形的ChatGPT提问方式

[1] 你不知道,GPT知道

  • 元问题:我想了解xxxx,我应该向你问哪些问题?
  • 请给我列出xxx领域/行业相关的,最常用的50个概念,并做简单解释。如果有英文缩写,请给出完整的英文解释。
  • 请详细介绍一下elon musk的主要生平事迹。请详细介绍一下tesla这家企业的发展历程。

[2] 你知道,GPT也知道

检验认知:

  • 对于xxx主题/技能,你认为哪些是我必须理解和掌握的核心要点?
  • 我理解的xxx是这样的,你觉得我的理解对吗?
  • 我对xxx有一些想法,你能帮我批判性地分析一下这些想法的优点和缺点吗?
  • 我正在考虑xxx的决定,你能帮我分析一下可能的结果和影响吗?

扩充认知:

  • 我知道xxx的概念,我想知道更多关于xxx的信息。
  • 我在xxx问题上遇到困难,你能提供一些可能的解决方案或建议吗?
  • 我想要深入学习xxx,你能推荐一些进阶的学习资源或学习路径吗?
  • 我想要在xxx领域有所创新,你能提供一些启发或想法吗?
  • 我想在xxx领域提升自己,你能根据最新的研究和趋势给我一些建议吗?
  • 我正在考虑学习xxx,你能给我一些关于这个领域未来发展的观点吗?
  • 背景信息xxx,我要做关于xxx的研究,我认为原因是,还有其他可能的原因吗?给出一些可能的研究假设。
  • 我是一个xx新手,马上要采访这个行业的资深大佬,我应该向他请教哪些有价值的问题?

[3] 你知道,GPT不知道

介绍背景现象之后可以向gpt发问,你怎么看待这种现象?可能的原因有哪些?这会对xxx产生什么样的影响?你觉得xxx应该怎么做?

[4] 你和GPT都不知道

如果xxx,这对社会会产生什么影响?

[5] 检验自己认知/能力水平

  • 为了测试我对xxx的理解程度,你会问我什么问题来检验我的水平,最少10个。
  • 我是xx领域的专家,你会问我哪些问题来检验我的专业水平?
  • 追问一句,这些我都懂,还有更专业更细更深的问题吗?

[6] 扩展自己能力边界

  • 我已经很精通xxx了,我想知道我是否还有需要学习的地方?然后不停的问,还有呢还有呢?

[7] 让GPT完成具体任务

  • 我想做xxx,你能给我提供什么帮助?
  • 我想要你做xxx,我应该给你输入什么信息?
  • 直接下指令

# 5.3 Prompt编写原则及优化技巧

# 5.3.1 Prompt的定义

Prompt 简单说就是驱动大模型进行表达文本描述。更详细地说,Prompt 的基本定义包括以下几个要素:

  • 文本片段:Prompt 可以是一个短语、一句话、一个段落,甚至是一个完整的问题。它通常是由人类设计者创建的,用于明确和传达特定的意图或任务要求。
  • 引导模型行为:Prompt 的目的是引导模型执行特定的操作或生成特定类型的输出。这可以包括回答问题、完成任务、写作文章、生成代码等。Prompt 需要明确指导模型的期望行为,确保生成的结果符合预期。
  • 上下文和约束:Prompt 可以包含上下文信息,以便模型理解和生成与之相关的内容。上下文可以是先前的对话历史、背景知识或特定领域的约束。通过提供相关的上下文,Prompt 帮助模型更好地理解输入和生成输出。
  • 设计和优化:Prompt 的设计是一门艺术。良好设计的 Prompt 应当明确、 简洁、一致,并且能够有效地引导模型生成准确和有价值的输出。优化 Prompt 需要进行实验和反馈迭代,以提高模型生成的质量和一致性。

# 5.3.2 如何定义优质Prompt

[1] 表达清晰度:

  • 明确任务要求和期望结果:定义 Prompt 时,需要准确定义任务的具体要求和期望的输出结果,以便引导模型生成准确的答案或解决方案。
  • 使用明确的语言和结构:Prompt 应采用简洁明了、一致性的语言和结构, 避免歧义和模糊性,以确保模型准确理解任务和生成一致的输出。

[2] 通用性强:

  • 考虑多样的用户需求:设计 Prompt 时要充分考虑到不同用户需求的多样性,使其适用于广泛的应用场景和任务类型。
  • 提供灵活的参数设置:在 Prompt 中引入可调节的参数,使用户能够根据具体需求对模型行为进行灵活控制,以满足不同应用场景的要求。

[3] 生成稳定性:

  • 引入控制机制:通过添加控制代码或关键字,限制生成内容的范围,避免模型生成无关或不准确的输出。
  • 迭代优化和反馈:不断评估和优化 Prompt,通过实验和用户反馈,使其能够生成稳定、一致的高质量结果。

# 5.3.3 编写Prompt的原则

(1)用特殊符号进行区域划分

我们应当尽量提供一个「明确」的指令,以帮助模型理解我们究竟想要模型输出一个怎样的答案。明确(Clear)是指,我们需要让模型明白它应该对输入中的「哪一部分文本」进行「怎样的操作」。

# -*- coding: utf-8 -*-

import os
os.environ["OPENAI_API_BASE"] = "YOUR_OPENAI_API_BASE"

import openai
openai.api_key = "YOUR_OPENAI_API_KEY"

text = """
近日,一份爆料圆明园五一假期门票售罄的微信聊天截图在朋友圈里疯传。
截图中说,圆明园门票被哄抢一空,“这是自1860年圆明园被毁以来圆明园门票第一次售罄。163年来第一次。”
南都记者查询得知,五一期间,圆明园实行限流政策,每日限流40000人,上下午各20000人。
登录圆明园官方预约号查询可知,4月29日至5月2日上午圆明园门票几乎全部售罄。
对于圆明园遗址公园来说,果真是百年难遇之盛况。
事实上,2023五一小长假,博物馆、美术馆已成热门打卡地,除了圆明园以外,
许多博物馆、美术馆和艺术机构也出现了一票难求的情况。
截至南都记者发稿,中国国家博物馆、北京故宫博物院、北京首都博物馆、雍和宫、恭王府等4月29日至5月3日的门票均已售罄。
中国国家博物馆工作人员告诉南都记者,自2023年3月以来,国博参观的预约名额几乎日日爆满,五一期间的预约更是火爆,
出票即“秒空”。
故宫博物院日前亦发布公告称,为提升广大观众的参观体验,缓解故宫午门外观众检票压力,维护参观秩序,
于2023年4月25日开始,将午门外东侧的“综合服务窗口”移至端门西侧“票务服务窗口”。 
通过调整票务服务窗口位置,有利于疏导客流,为广大观众提供更安全、便利的票务服务和入院参观体验。
"""

prompt = f"""
将下面用三个反引号括起来的句子总结成一句话。
```{text}```
"""

response = openai.Completion.create(
  model="text-davinci-003",
  prompt=prompt,
  temperature=0.7,
  max_tokens=2048,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)
print(response["choices"][0]["text"])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

输出结果:

2023年五一小长假,中国国家博物馆、北京故宫博物院、北京首都博物馆、雍和宫、恭王府等多家博物馆、美术馆及艺术机构门票全部售罄,圆明园也实行限流政策,每日门票限流4万人,期间上下午各2万人。
1

多使用特殊的分隔符来标识任务需要处理的句子,能够让模型更清楚的知道自己需要处理的内容是什么。

(2)明确模型的输出格式

为了便于解析,我们通常希望模型输出「结构化」的数据。

# -*- coding: utf-8 -*-

import os
os.environ["OPENAI_API_BASE"] = "YOUR_OPENAI_API_BASE"

import openai
openai.api_key = "YOUR_OPENAI_API_KEY"

prompt = f"""
帮我生成一个包含中国四大名著的书籍列表。
以 json 的形式返回,json 中应当包含以下三个 key: 书籍名称,书籍作者,售价。
"""

response = openai.Completion.create(
  model="text-davinci-003",
  prompt=prompt,
  temperature=0.7,
  max_tokens=2048,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)
print(response["choices"][0]["text"])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

输出结果:

{
    "books": [
        {
            "name": "三国演义",
            "author": "罗贯中",
            "price": "30元"
        },
        {
            "name": "水浒传",
            "author": "施耐庵",
            "price": "20元"
        },
        {
            "name": "西游记",
            "author": "吴承恩",
            "price": "20元"
        },
        {
            "name": "红楼梦",
            "author": "曹雪芹",
            "price": "25元"
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

上述例子中,我们明确了模型需要输出的形式为 JSON,并且还要明确指定包含哪些 key。

(3)设定检测条件

除了指定输出格式以外,还能进一步利用 ChatGPT 的强大理解能力,可以设定一些条件,当句子满足我们的条件时才让模型输出我们想要的内容。

# -*- coding: utf-8 -*-

import os
os.environ["OPENAI_API_BASE"] = "YOUR_OPENAI_API_BASE"

import openai
openai.api_key = "YOUR_OPENAI_API_KEY"

text = f"""
泡一杯茶很容易!
首先,你需要把一些水烧开,拿起一个杯子,放一个茶包。
将开水倒在茶包上,让它静置一会儿,这样泡出来的茶能更入味。
几分钟后,取出茶包。你可以根据自己的口味加一些糖或牛奶调味。
完成以上步骤后,你就可以有一杯美味的茶可以享用啦。
"""

prompt = f"""
我将给你一个句子,它会被放在三个反引号中。
如果这句话可以被描述为一个顺序执行任务, 你需要把它改写成下面这种形式:

步骤 1 - …
步骤 2 - …
…
步骤 N - …

如果句子中不可以被描述为顺序任务,则回答“未检测到序列任务”。

```{text}```
"""

response = openai.Completion.create(
  model="text-davinci-003",
  prompt=prompt,
  temperature=0.7,
  max_tokens=2048,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)
print(response["choices"][0]["text"])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

输出结果:

步骤 1 - 烧开水
步骤 2 - 拿起一个杯子,放一个茶包
步骤 3 - 将开水倒在茶包上,让它静置一会儿
步骤 4 - 几分钟后,取出茶包
步骤 5 - 根据口味加一些糖或牛奶调味
步骤 6 - 享用美味的茶
1
2
3
4
5
6

如果我们将句子换成一个不包含任务序列的句子:

text = f"""
我不敢苟同他的观点,我个人认为这个意大利面就应该拌42号混凝土,因为这个螺丝钉的长度, \
它很容易会直接影响到挖掘机的扭矩,你知道吧?你往里砸的时候,一瞬间它就会产生大量的高能蛋白,俗称UFO,\
会严重影响经济的发展,甚至对这个太平洋以及充电器都会造成一定的核污染。
"""
1
2
3
4
5

则会得到以下输出:

未检测到序列任务。
1

(4)提供一些示例

可以提供一些示例,从而帮助模型去揣测你想要什么样的输出。

# -*- coding: utf-8 -*-

import os
os.environ["OPENAI_API_BASE"] = "YOUR_OPENAI_API_BASE"

import openai
openai.api_key = "YOUR_OPENAI_API_KEY"

prompt = f"""
请你按照下面这种语言风格回答 <学生>的问题:
<学生>:什么是深度学习呀?
<老师>:深度学习就像是炼丹;深度学习就像是买彩票;深度学习就像是拜菩萨。
<学生>:什么是自然语言处理呀?
"""

response = openai.Completion.create(
  model="text-davinci-003",
  prompt=prompt,
  temperature=0.7,
  max_tokens=2048,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)
print(response["choices"][0]["text"])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

输出结果:

<老师>:自然语言处理(NLP)是一种技术,可以帮助计算机理解、分析和生成自然语言内容。它可以处理文本、语音和自然语言文本,并从中提取有用的信息。
1

我们告诉模型:要保持下面的语言风格进行回答。这样相当于我们提供了一个例子,以供模型揣测用户的意图,并明确告诉模型要按照这个例子的风格进行续写。

(5)使用思维链

当我们希望模型解决一个复杂任务的时候,我们不妨让它「一步一步」地来解决,这样能够更大程度上提高模型输出正确答案的成功率。

# -*- coding: utf-8 -*-

import os
os.environ["OPENAI_API_BASE"] = "YOUR_OPENAI_API_BASE"

import openai
openai.api_key = "YOUR_OPENAI_API_KEY"

text = f"""
在一个小村庄里,杰克和吉尔两兄弟正在山顶的水井里取水。
当他们高兴地唱歌爬上山顶时,不幸降临了。
杰克被一块石头绊倒,从山上滚落下来,而吉尔为了救弟弟,也不慎滑落。
索性他俩并没有收到很大的伤害,安全回到了家中。
尽管遭遇了不幸,但他们兄弟俩的冒险精神仍然没有减弱,第二天他们依旧踏上了愉快的探索之旅。
"""

prompt = f"""
执行以下操作:
1 -> 用1句话总结下面由三个反括号括起来的文本。
2 -> 将摘要翻译成法语。
3 -> 在法语摘要中列出每个名字。
4 -> 输出一个json对象,该对象包含以下key:french_summary、num_names。

每一个操作的答案单独输出为一行并带有序号。

```{text}```
"""

response = openai.Completion.create(
  model="text-davinci-003",
  prompt=prompt,
  temperature=0.7,
  max_tokens=2048,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)
print(response["choices"][0]["text"])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

输出结果:

1 -> 杰克和吉尔两兄弟正在山顶取水,不幸发生了灾难但最终他们仍平安回家,并第二天继续探索。
2 -> Dans un petit village, les deux frères Jack et Gill étaient en train de puiser de l'eau dans un puits sur la colline. Malheureusement, une catastrophe est survenue alors qu'ils chantaient joyeusement en grimpant. Jack a été renversé par une pierre et est tombé de la colline, et Gill est tombé en essayant de sauver son frère. Heureusement, ils sont tous les deux rentrés sains et saufs à la maison. Malgré l'infortune, leur esprit d'aventure n'a pas diminué et ils sont repartis pour une agréable exploration le lendemain.
3 -> Jack, Gill 
4 -> {'french_summary': 'Dans un petit village, les deux frères Jack et Gill étaient en train de puiser de l'eau dans un puits sur la colline. Malheureusement, une catastrophe est survenue alors qu'ils chantaient joyeusement en grimpant. Jack a été renversé par une pierre et est tombé de la colline, et Gill est tombé en essayant de sauver son frère. Heureusement, ils sont tous les deux rentrés sains et saufs à la maison. Malgré l'infortune, leur esprit d'aventure n'a pas diminué et ils sont repartis pour une agréable exploration le lendemain.', 'num_names': 2}
1
2
3
4

我们希望模型输出一个 JSON ,其中要包含一个童话故事的「法文摘要」、童话故事中的「角色数量」。那么,我们可以拆分成 4 个子任务:总结、翻译、列出每个角色名、结构化输出。并且,我们将每一个子任务的输出结果都进行了打印。这样,模型在做后一个任务的时候就可以参考前一个任务的输出结果,从而提升了输出的准确性。

# 5.3.4 通过迭代来编写Prompt

和训练出一个好的模型一样,要想写出一个好的 prompt 同样也需要不断迭代和调整。

通过迭代来编写Prompt

# 5.3.5 使用ChatGPT对Prompt进行调优

我想让你扮演一个 Prompt 生成器,具体完成这样几件事:

  • 我首先告诉你我想要完成什么任务;
  • 然后会给你几个输入输出示例,你根据我的描述并学习示例生成一个指令明确的 Prompt;
  • 接着对生成的 Prompt 做个点评,并指出可以从什么方面改进,向用户提问题,获得更多的信息以改进 Prompt;
  • 用户根据需要选择回答问题与否,然后 ChatGPT 根据用户的回答生成一个改进后的 Prompt;
  • 重复上述步骤直到获得满意的 Prompt。

# 6. 参考资料

[1] OpenAI 推出超神 ChatGPT 注册攻略来了 from 稀土掘金 (opens new window)

[2] 2022最新国外短信接码平台汇总 from Extrabux (opens new window)

[3] 用于 OpenAI 与 ChatGPT API 交互的轻量级包,使用反向工程的官方 API from Github (opens new window)

[4] 基于 TLS 的 ChatGPT API,具有自动令牌重新生成、对话跟踪、代理支持等功能 from Github (opens new window)

[5] ChatGPT: Optimizing Language Models for Dialogue from OpenAI官网 (opens new window)

[6] 非官方 ChatGPT API 的 Node.js 客户端 from Github (opens new window)

[7] 显示 ChatGPT 响应和 Google 搜索结果的浏览器扩展 from Github (opens new window)

[8] 不再是人工智障!一分钟学会如何把ChatGPT接入Siri from Bilibili (opens new window)

[9] ChatGPT-Telegram-Workers部署流程 from Github (opens new window)

[10] ChatGPT开始联网,最后的封印解除了 from 机器之能 (opens new window)

[11] GPT-4 Copilot X震撼来袭!AI写代码效率10倍提升,动嘴写代码不再是梦! from 终码一生 (opens new window)

[12] ChatGPT Retrieval Plugin 让您可以通过使用日常语言提问来轻松搜索和查找个人或工作文档 from Github (opens new window)

[13] ChatGPT开始联网,最后的封印解除了 from 机器之能 (opens new window)

[14] ChatGPT突遭大面积封号!网友应急出解封教程 from 51CTO (opens new window)

[15] Teaching with AI from OpenAI官网 (opens new window)

[16] 分享大模型相关技术原理以及实战经验 from 吃果冻不吐果冻皮 (opens new window)

[17] 如何更好地向 ChatGPT 提问?from 知乎 (opens new window)

[18] 如何免费使用GPT-4 from wbolt (opens new window)

[19] 免费使用、本地运行、隐私感知的聊天机器人,无需 GPU 或互联网 from gpt4all (opens new window)

[20] 熟练掌握ChatGPT解决复杂问题|ChatGPT使用教程 from Bilibili (opens new window)

[21] 通过向ChatGPT发送指定命令得到ChatGPT的系统提示 from Github (opens new window)

[22] ChatGPT 消息发不出去了?我找到解决方法了,手把手教你解决 from 知乎 (opens new window)

[23] 今天起,ChatGPT无需注册就能用了 from 微信公众号 (opens new window)

Last Updated: 4/5/2024, 2:47:32 PM