Index
简介
ChatGPT是由OpenAI公司于2022年12月发布的聊天生成型预训练变换模型。
仅用2个月的时间,就达到了1亿的月活跃用户,堪称史上最快增速。
从这张Google的搜索热点趋势图中,我们可以看到ChatGPT的三个热点高峰。
第一波高峰出现在2022年12月。
人们第一次接触到与众不同的聊天体验。ChatGPT能够回答各种问题,写小说,生成的代码居然能直接运行。这极大的引发了人类的好奇心,纷纷想要了解ChatGPT的极限。因此在自媒体上出现了大量调戏AI的视频,进而造成了病毒式的自推广。
第二波高峰出现在2023年2月。
当时的微软宣布将旗下产品接入ChatGPT,并发布NewBing,而其他的大型科技厂商纷纷宣布将推出自己的LLM(Large Language Model)。NVIDIA的CEO的“我们正处于AI的iPhone时刻”,更是让人们意识到AI已经进入了生产力领域,或许这足以称为第四次生产力革命?
第三波高峰出现在2023年3月。
整个3月堪称AI领域的大爆发。更强的AI模型(GPT4、midjourney v5)发布、ChatGPT Plugins的推出、Meta的LLM泄露、其他科技厂商的对标产品、微软宣布整合AI的Microsoft 365 Copilot,等等的一切让人眼花撩乱的同时,给予人们极大的期待。同时人们开始担心AI是否会抢走自己的工作。
ChatGPT注册问题及解决方案
ChatGPT是一个非常受欢迎的服务,但是中国用户在注册时会遇到一些问题。下面我会一一列举这些问题,并提供相应的解决方案。
问题1:无法访问ChatGPT网站
解决方案:使用代理服务器。
注意事项
不要选择OpenAI不提供服务的国家的代理服务器。(4月初的不提供区域包含中国香港、俄罗斯、伊朗、意大利等)
尽可能选择有好线路的服务提供商。
需要有住宅IP。
问题2:部分国内邮箱无法注册
解决方案:请尽量使用国外邮箱(如Gmail)注册。
问题3:注册时需要国外手机接收短信
解决方案:使用sms-activate租借手机,按照其官方的ChatGPT解决方案进行注册。
注意事项
最低充值金额调整为2美元。
选择提供OpenAI服务的低价手机。
20分钟内没收到信息可以取消号码,不扣费。同时也可以接收多条短信。
无需特地移除区号。
问题4:访问ChatGPT页面时显示Access Denied
解决方案:由于OpenAI禁止服务器IP访问ChatGPT页面,建议使用有住宅IP的代理服务。
所有问题解决后,我们就可以尽情体验ChatGPT的网页服务。
请注意,网站使用是免费的。但如果需要有限体验GPT-4和ChatGPT-Plugins,请升级Plus服务($20/月)。
ChatGPT的原理
越是深入使用ChatGPT,便越会被其所惊艳。那么它是真正的AI吗?下面我们会简单的讨论一下其本质。
ChatGPT是OpenAI旗下GPT系列预训练技术方案之一,GPT全称为Generative Pre-Trained Transformer。
Generative代表生成式,意味着该人工智能可以从基础知识中创造新的思想。
Pre-Trained代表预训练,通过大量文本语料库进行训练,使模型理解语言的基本模式和关系,从而实现更加精准的文本生成能力。
Chat代表是聊天程序,OpenAI对GPT-3进行了一系列的改进,使得模型在对话生成任务上表现更加优异。需要注意的是,ChatGPT的定位为聊天程序,而非AI助手,其输出内容并不完全正确,比如:
这是由于通过概率得到的推导结论并不能证明其合理性。这种错误的感知则被称为幻觉。
Transformer则是GPT模型核心算法,由Google在2017年推出,目前已成为自然语言处理问题的首选算法之一。其核心思想是利用自注意力机制来进行信息传递和提取,从而有效处理自然语言中的长距离依赖关系,进而大幅提高模型的性能和效率。
GPT的训练过程分为三个步骤。
人类在问题集中选择问题并编写答案,以此来生成一个基本的初始模型。
对同一个问题的不同答案进行人类的打分,并生成一个奖励模型。
通过奖励模型不断对新的答案进行打分,以此来迭代初始模型,进行强化训练。
综上所述,我们可以将ChatGPT看作一个单词接龙程序,通过神经网络来预测下一个应该出现的词,进而实现自然语言文本的生成。
Prompt Engineering
既然其本质是个接龙程序,那么我们怎么来限制其产生幻觉呢?
在这方面,Prompt Engineering也许会是一个很好的选择。
Prompt Engineering 是一种在人工智能领域,特别是自然语言处理领域的概念。
它指的是如何设计输入数据,使其能够清楚地描述任务,并引导模型给出正确和合理的输出。
换句话说,它就是给AI模型的指令。你可以通过添加额外的上下文、限制输出方式等方式来控制AI的输出结果。
比如:
我们给予了ChatGPT一个指令:“以历史学家角度聊天”,
添加额外的上下文:“关公秦琼的生卒年月”,
再次以输入数据的方式提问了“关公战秦琼”,
并限制了其输出方式:“按史实说话”。
最后进而利用ChatGPT的推理能力,输出了正确的答案。
PS:
Awesome ChatGPT Prompts网站收集了常用的prompts,可以在这里快速找到自己需要的prompt。
chatgpt_buddy这是一个有趣的案例,将ChatGPT的输出方式限制成了系统指令,或许这种方案可以为我们带来新的启发。
ChatGPT API
既然可以让AI正常说话,那么我们可以将它整合进自己的项目吗?
别急,我们还需要了解ChatGPT在API方面的限制及收费标准。
每个OpenAI账号都可以通过api-keys管理自己的API key。
请注意,API的使用是收费的,在Usage页面可以看到每月的使用费用。
每个账号最多有4个月的免费额度(2023年3月开始注册的账号,额度下调为$5)。
收费标准按tokens计算,每个模型的收费标准并不相同。
GPT-4(8k context) 输入 $0.03 / 1K tokens 输出 $0.06 / 1K tokens
GPT-4(32k context) 输入 $0.06 / 1K tokens 输出 $0.12 / 1K tokens
ChatGPT $0.002 / 1K tokens
Embedding $0.0004 / 1K tokens
这里涉及到一个新概念tokens,意为分词,我们可以简单的理解为单词片段。
而tokens的消耗,则包含了用户的输入和ChatGPT的输出,这些都要计费。
可以利用交互式Tokenizer 工具计算数量。一般来说,100个token大约为75个英文单词,而一个中文则最少消耗2个token。
在发送API时,我们可以将之前的输入内容一起发送。以此实现ChatGPT的上下文联系能力,但同时也会消耗更多的tokens。
请注意上下文(Context)的长度限制,GPT-4按照不同的模型有不同的限制,而ChatGPT的限制为4000个tokens。
开发自己的AI知识库助手
了解了ChatGPT API和Prompt Engineering这2个基本知识后,我们可以开始尝试实现个人的知识库助手。
可以参考开源项目paul-graham-gpt。
其基本原理如下:
将个人知识库的所有知识切片后,使用Embedding模型,转化成向量,并储存在向量数据库(包含但不限于:pinecone、weaviate、zilliz、milvus、qdrant、redis、pgvector)中。
在用户提问时,将问题转化成向量,并利用余弦距离等向量运算来计算答案切片相似度,匹配相似度最高几个切片。
设计一个prompt,将用户问题和答案切片包装在一个prompt中,并声明ChatGPT需要扮演的角色。
控制prompt的tokens,使其在ChatGPT的上下文限制范围内。
利用ChatGPT对答案进行归纳整理,并按指定的格式输出。
PS:
类似的方案也被OpenAI整合进plugins,如chatgpt-retrieval-plugin。
推荐一个开源项目llama_index。使用这个第三方库能更简单的从现有数据中匹配提问。
我们在paul-graham-gpt的基础上,创建了一个kintone帮助手册的AI助手,测试下来效果不错。全中文手册Embedding费用为$0.4。
开发自己的J.A.R.V.I.S.
ChatGPT插件的使用体验非常惊艳,然而距离真正的J.A.R.V.I.S.还有一段距离,理想中的AI并不应该只是个问答器。
那么,将ChatGPT作为中枢大脑,按照提问分解任务,并赋予其调用程序接口的能力,运行的结果返回ChatGPT并不停的迭代,直到完成任务。这一思路是否可行呢?
LangChain是一个开发语言模型的落地应用的框架,它将应用抽象出了Models、Prompts、Indexes,并追加了保存状态的Memory,多模型链式调用的Chains,和调用外部程序的Agents。
简单来说,利用LangChain,可以让语言模型做决策,通过agents加入外部的控制,一起配合形成一套复杂的系统。
如果说LangChain偏于面向开发人员,AutoGPT则更像一个已经实现的应用。
根据用户的输入,AutoGPT会自我迭代,直到问题解决。
它遵循:行动 → 观察行动结果 → 思考 → 决定下一步行动,这样的逻辑来实现自我循环。
这有点像“套娃”,通过你输入的问题,利用prompt engineering进行约束,利用ChatGPT分解任务并制定计划,然后执行各个命令。如果命令返回不对,继续指定下一步计划,直到得到最终结果为止。
这种方式类似模型堆叠,即模型“一路向下”,去套用别的模型来拆解并解决任务。
类似的方案还有微软的JARVIS。
本地部署
AutoGPT的表现十分接近于我们理想中的AI,然而在运行时,还是会存在一些问题,这也是所有基于ChatGPT API应用的缺点:
API访问:
国内网络无法访问API服务器,我们需要使用国外的服务器代理发送请求。不过这次不需要住宅IP。
续费:
使用AutoGPT运行复杂的任务时,会消耗大量的tokens,当免费额度用完后,需要续费时你会发现国内/香港的信用卡均不支持。只能选择国外的虚拟信用卡。
隐私问题:
一些敏感信息其实并不希望发送到OpenAI的服务器。
那么能不能本地部署类ChatGPT的模型呢?
开源模型的选择
OpenAI在ChatGPT模型方面可不open,目前可选择的开源模型有:
Meta意外泄露的LLAMA
● 基于LLaMA的Alpaca
○ 基于Alpaca,号称达到90%ChatGPT效果的FastChat
○ 基于Alpaca,加入中文的BELLE
○ 基于Alpaca,商汤科技参与的骆驼清华大学的GLM
● 基于GLM的ChatGLM-6B
● 使用Alpaca数据集的ChatGLM-Tuning
硬件成本
目前vultr上的一台8卡服务器的租用成本为$14000/月。
而据知乎网友估算,标准大小的ChatGPT-175B大概需要150-200台8卡A100服务器进行训练1个月。
6B大小的模型则需要22台8卡服务器,1-4周完成一次模型训练。运行成本
GLM-130B支持在一台 A100(40G * 8) 或 V100(32G * 8)服务器上对千亿规模的参数进行推理。
另外按照OpenAI创始人(官方)给出的数据,ChatGPT运行成本大概每次回答1美分。
由于成本巨大,目前有很多降低训练成本的研究。
如 ColossalAI又或者微软的DeepSpeed。
最后
ChatGPT引发的热潮足以改变我们的生活,它开创了一个新的人机交互方式,即用自然语言控制程序。
当前制约AI发展的始终是过高的硬件成本,但随着技术的进步,人均一个J.A.R.V.I.S.未来必将到来。
为了不被时代所淘汰,主动加入这次的AI狂欢,创造一个更精彩的世界也许是一个不错的选择。