用OpeAI API打造ChatGPT桌面端应用
用OpeAI API打造ChatGPT桌面端应用
自从这篇文章火了之后,我在公司内部分享了一下”摸鱼“的先进经验,激发起广大同事一起”摸鱼“的热情。但是注册ChatGPT账号非常麻烦,既要Science上网,又要海外手机收验证码,每个人都注册一个ChatGPT账号不现实。于是就用OpenAI开放出来的GPT模型API,手撸了一个桌面端应用,来满足广大人民群众日益增长的”摸鱼“需求。
成果展示
目前包含文本生成,代码生成,图片生成三大项功能。其中以文本生成和代码生成日常使用最多。针对文本生成和代码生成这两大类场景,OpenAPI分别提供了GPT-3和Codex模型,
虽然GPT-3模型没有ChatGPT背后的GPT-3.5强大,但是用API有如下好处:
优点
-
无需注册、无需Science上网 有参数可以控制输出 比ChatGPT稳定 速度比ChatGPT快一点 可以整合到其他系统中
缺点
-
生成质量不如ChatGPT 优先的上下文支持 会产生费用
模型概述
GPT-3
GPT-3模型可以理解并生成自然语言。OpenAI根据任务场景和功能强度提供了四种可选子模型。其中Davinci g功能最强大,而Ada 响应速度最快。
尽管通常来讲Davinci最强大,但其他型号的模型在某些特定场景和任务下,具有明显的速度或成本优势。例如,Curie可以执行许多与Davinci相同的任务,但速度更快,成本仅为Davinci的1/10。
建议在实验时使用Davinci,因为它产生的结果最好。一旦实验完成,建议尝试一下其他模型的效果,看看是否能以更低的延迟或成本获得同样或近似的效果。同时还可以通过在特定任务上对其他模型进行微调来提高它们的性能。
Davinci
Davinci是GPT-3系列中最强大的模型,可以在很少指引的情况下完成其他模型能完成的任何任务。对于需要大量理解内容的应用,如针对特定受众的摘要生成和创造性内容生成,Davinci的产生效果最佳好。当然,这些优势需要更多的计算资源,因此Davinci每次API调用的成本更高,而且速度也不如其他模型。
Davinci的另一个亮点是理解文本的意图。Davinci非常擅长解决各种逻辑问题,并解释其中角色的动机。Davinci已经能够解决一些涉及因果关系的最具挑战性的人工智能问题。
擅长领域:复杂意图理解、因果关系发现及理解、针对性摘要总结
Curie
Curie也非常强大,同时速度也非常快。虽然Davinci在分析复杂文本时更具优势,但Curie在情感分类和总结摘要等许多细致任务上表现出色。Curie还非常擅长回答问题,因此非常适合作通用服务聊天机器人。
擅长领域:翻译、摘要、复杂分类、文本情感
Babbage
Babbage可以执行分类等简单任务。当涉及到语义搜索时,它也可以很好地对文档与搜索查询的匹配程度进行排序。
擅长领域:文本分类、语义搜索分类
Ada
Ada通常是速度最快的模型,可以执行解析文本、地址更正和粗放的分类任务。可以通过提供更多上下文来提升Ada的表现。
擅长:文本解析、简单分类、地址更正、关键字提取
⚠注意:高级模型都能完成低级模型能完成的任务,例如Ada能完成的工作,Curie和Davinci都能完成。 OpenAI模型是非确定性的,这意味着相同的输入可以产生不同的输出。将temperature 设置为0将使输出大部分具有确定性,但仍可能存在少量可变性。
Codex
Codex模型是GPT-3模型的派生模型,可以理解和生成代码。训练数据包含自然语言和来自GitHub的数十亿行公共代码。
Codex最擅长Python,并精通十几种语言,包括JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL,甚至Shell。
Open AI目前提供2种子模型:
Codex目前尚处在公测阶段。公测期间免费调用,但是速度会受限制。推荐直接用最强的code-davinci-002。
API调用
OpenAI API调用非常简单,官方提供Python和Node.js库。
Python库
Python库可以通过下面命令安装:
$ pip install openai
安装后即可在代码中通过导入openai库来调用各功能接口
import openai openai.api_key = "YOUR_OPENAI_API_KEY" response = openai.Completion.create( model="text-davinci-003", prompt="Hello", temperature=0, max_tokens=16 )
这里需要注意的是:调用接口需要先绑定OpenAI API Key。该API Key可以在OpenAI后台申请,点击右上角头像,在弹出菜单中点击”View API keys“。在API Keys管理界面可以创建或删除API Keys。
Node.js库
Node.js库的安装和使用步骤与Python库类似,在项目中运行
$ npm install openai
即可向项目中安装并添加openai库。安装完成后,即可在代码中调用
const { Configuration, OpenAIApi } = require("openai"); const configuration = new Configuration({ apiKey: YOUR_OPENAI_API_KEY, }); const openai = new OpenAIApi(configuration); const response = await openai.createCompletion({ model: "text-davinci-003", prompt: "Hello", temperature: 0, max_tokens: 16, });
社区提供了其他所有主流编程语言的库,大家可以根据自己使用的语言,在查找。
参数说明
用API的一大好处是,API提供了众多参数,可以让我们控制输出效果。下面是GPT-3和Codex模型支持的参数:
理解上述参数对文本生成任务的影响至关重要。其中最重要的一组参数是temperature、top_p、presence_penalty、frequency_penalty,后面我会专门整理相关文章来介绍这些参数背后的原理和对模型输出的影响。
总结
经过一周测试,我们发现虽然GPT-3和Codex的生成质量没有ChatGPT那么好,且对上下文的支持也不如ChatGPT,但在一些简单工作上使用还是够用的。关键是用API比用网页可以带来更多优势:
-
无需注册、无需Science上网 有参数可以控制输出 相对稳定、快速 可以整合到其他系统中
最后希望我的ChatGPT API申请能尽快审核下来,届时我将带给大家真正的ChatGPT-3.5的桌面端工具。