I. 前言
在各位的 重 金 支 持 下,咱免费的chatgpt项目网站:ChatGPT-Freehttps://chatgpt.cytsee.com也稳定(基本上)运行一个来月了,平常我也经常用来写代码、润色文章甚至当我的技术顾问,可以说体验感拉满。
不过最近看到身边很多朋友使用我们的小破站时,是真的不会提问,今天就给筒子们撸一撸如何发问、如何提出有效的问题、打造良好的prompt,顺便聊一聊chatgpt(仅针对本站)上下文的机制和常见错误。
II. ChatGPT基本知识
什么是GPT?
在介绍之前,不得不提一下NLP(Natural Language Processing 自然语言处理),NLP研究的是如何让计算机读懂人类语言,即将人的自然语言转换为计算机可以阅读的指令,GPT是目前NLP研究领域最成功的成果之一。
视角回到 2018 年,那个时候 NLP 在深度学习上基本还处于 word2vec 以及为不同任务做定制化深度模型的情况,虽然已经有 ELMo 这类预训练模型出现,但是其影响力还远远不足。在这个背景下,GPT 第一代预训练语言模型出现了。
GPT 原文标题为 Improving Language Understanding by Generative Pre-Training,即使用通用的预训练模型来提升语言理解能力(Generative Pre-Training 也可理解为“生成式预训练”)。GPT 这个名字就来源于 Generative Pre-Training。关于GPT的技术进化历史和模型结构、训练方式,可以够我开100篇文章了,毕竟各位大佬都是 重 金 支 持 我的免费项目,实在不好意思在这水文章,总之,GPT是一个文本生成模型。
回答是如何生成的?
上文提到,GPT是一个文本生成模型,根据输入的字符,逐个生成输出字符,这些输出是由GPT模型在训练期间扫描大量文本“学到”的东西(参数)产生的,每生成一次就是一个token(可能是1-2个汉字或N个单词),按照人类的理解方式,可以认为GPT是在你的问题基础上,根据概率学统计来生成概率最优的文本,也即是说他根本什么都没听懂,但他就是答出来了,实际上就是这样。但是,就连opanai自己目前也无法解释超大型神经网络产生这种突变,所以我们无法按照人类的理解方式来定义它,既然它能够按照问题生成正确的文本,这就足够了。
AI是如何感知上下文的?
AI根据历史聊天记录来感知上下文。你与AI的每次对话,都会尽可能多的附带历史聊天记录,所以不要听网上说什么“你和它聊的越多,它越懂你想要什么,他给你的答案就越是你需要的”,聊的太多也许会丢失上下文,也许就是超出长度限制报错。因为无论是官方网站还是官方API,都是基于每次请求的“历史聊天记录”来感知上下文,有能力的朋友们可以自己抓包查看。
由于gpt-3.5/gpt-3.5-turbo 最大仅支持约4000个token(1token≈1汉字,注意,是约等于)的生成,所以随着聊天的深入,不可能每次都附带所有的聊天历史(钱不够烧)。细心的筒子们可能发现了,我们的站点基于记忆模式来压缩上下文,也就是当对话总长度超出一定字数时,聊天历史会被自动总结为简短的文字,然后随着你的下一次提问发送出去,这样就保证了不丢失主要上下文的情况下,能够保持连续的对话,当然不可避免的会丢失某些细节,这一点无法改变,就算是gpt-4,在超出最大token限制后依然会丢失上下文。
使用原则是什么?
综上,如果是将chatgpt作为工具使用,你应该每一次都提出准确、高效的prompt,以获得最佳答案,这样做还能保持短期内连续对话时的下文不出现偏差。
如果你只希望与AI角色聊天,那么你可以渐进式的调教他,但是良好的prompt依然非常重要。
在网站中,你可以选择预设的角色来发起对话,同时也支持自定义角色,比较简单,这里就不说了。大部分预设角色是通过设置一条固定的上下文实现的,有能力的朋友应该发现某些角色的上下文是设置user(也就是你)向AI提出一个角色扮演的要求,某些是通过system(系统)向AI提出要求,经过我的多次实测,这2种方法在效果上几乎没有差别,有兴趣的朋友可以自行研究,也欢迎在公众号与我交流,目前,这一条预设在超出一定字数后依然会被压缩,并逐渐丢失细节。根据各位的反馈,后续的改进计划中正在研究保留预设上下文。
为什么会返回错误?
常见的错误原因是你选择了暂不支持的模型(如gpt-4),或者超出请求速率限制(万次/分钟),出错时一般会返回一个json数据,包含了详细的错误说明,虽然是英文,但我相信只要愿意看的桐子都能看懂,毕竟各位都是走在时代风口的精英,实在那啥的,百度翻译也行,不过我的建议是:学个英语。
有的筒子可能遇到“出了点错误”之类的信息,有以下几种可能:
1.你的网络存在问题,请检查网关设置,可以换手机热点网络测试。
2.接口域名被墙。一般我会及时发现并更换,当然需要一些时间,如果长时间进不去,欢迎与我联系,你也可以尝试清空浏览器缓存重试。
其他的错误都极少见,欢迎反馈,也欢迎提出你的宝贵建议!公众号消息和邮箱我都会回复(虽然不一定及时)
III. 如何提出好的问题
1.避免使用含糊不清的词语
在提出问题时,应该尽量避免使用模糊不清的词语,例如“一些”、“很多”、“有时候”等。这些词语可能会让AI误解问题的范围和目的。
2.使用简洁明了的语言
在提出问题时,应该使用简洁明了的语言,让AI更容易理解问题的意思。可以使用简单的句子和常用词汇来提出问题。
3.尽量避免歧义和语义混淆
在提出问题时,应该尽量避免歧义和语义混淆。如果问题不够明确,可能会导致AI给出错误的回答。可以通过简化问题、增加关键词等方式来避免歧义和语义混淆。
4.通过实例加深模型理解
在提出问题时,可以通过提供具体的实例来帮助AI更好地理解问题。例如,在问“如何制作披萨?”时,可以提供具体的制作方法和步骤。
IV. 如何让AI更好地理解问题
1.避免使用缩写和俚语
在提出问题时,应该尽量避免使用缩写和俚语。这些词汇可能会让AI无法理解问题。
2.避免使用罕见的词汇
在提出问题时,应该尽量使用常见的词汇和表达方式。这样可以让AI更容易理解问题。
3.对于复杂问题,可以分步提问
对于一些比较复杂的问题,可以分步提问。这样可以让AI更容易理解问题,并给出更准确的回答。
4.注意语法和标点符号的使用
在提出问题时,应该注意语法和标点符号的使用。这样可以让AI更容易理解问题,并给出更准确的回答。
V. 如何获得更好的回答
1.确认问题的范围和目的
在提出问题之前,应该先确认问题的范围和目的。这样可以让AI更容易理解问题,并给出更准确的回答。
2.针对性地提出问题
在提出问题时,应该针对性地提出问题。这样可以让AI更容易理解问题,并给出更准确的回答。
3.避免提出模糊或不相关的问题
在提出问题时,应该避免提出模糊或不相关的问题。这样可以让AI更容易理解问题,并给出更准确的回答。
4.对答案进行进一步追问和澄清
在获得回答之后,可以对答案进行进一步追问和澄清。这样可以让AI更好地理解问题,并给出更准确的回答。
5.结合领域知识和背景信息
在提出问题时,可以结合领域知识和背景信息。这样可以让AI更容易理解问题,并给出更准确的回答。
最后,祝各位筒子们天天发财!如果可以每月掏个小钱支持一下网站的运行,我将会非常感谢!