写给开发者看的ChatGPT百科书

1,033 阅读3分钟

本文正在参加 人工智能创作者扶持计划

关于注册

由于OpenAI官方的限制,我们需要能Google才能上车。注册的时候不能使用QQ,163等邮箱,这些在OpenAI那里都会有被封禁的风险,这里推荐使用Gmail或者outlook。

至于更加详细的注册可以参考这位大佬写的文章:OpenAI 推出超神 ChatGPT 注册攻略来了 - 掘金

关于使用

OpenAI 关于GPT模型的使用分为两种Web和API,这里的使用我们重点讲Web版本。

Web版本支持Plus和非Plus版本,Plus版本速度更快同时能够体验更新的Feature,比如现在很火的GPT4。非Plus版本就比较常规,就是正常的聊天使用,模型还是GPT3.5,按照使用体验来说3.5已经足够满足我们的日常工作需求了。如果想要使用4,那么就需要准备一张国外的信用卡(不能是国内的),支付每月20$的费用即可体验。

关于GPT4

大家都在吹GPT4多么多么厉害,确实不得不说相比GPT3.5有了巨大的提升,不过有几点是我们需要关注的:

1.GPT4的使用成本远高于GPT3,平均0.5人民币/2k token,字符大概500-600字左右,Prompt和Completion还是分开计费的。

2.能力上无非是变成了多模态模型,其实对于我们日常开发者来说并不是很需要。

3.目前还是内测阶段,只能通过Plus订阅或者API waitlist申请体验,其中Plus订阅,每3个小时能发25条消息,这点会比较坑。

关于API

作为开发者,我更关注的就是能力是否能被集成,OpenAI提供了相关的接口让我们能够在自己的产品上集成OpenAI的能力,这一点不得不说非常的良心。

关于如何申请,我将在下方进行一个简单的叙述。

1.登陆platform.openai.com/docs/api-re…登陆OpenAI API网站

2.platform.openai.com/account/api…在API管理中选择创建一个API Keys,大概就是下图的效果。

image.png

image.png

3.使用OpenAI提供的接口进行开发工作,我们以Chat Completions为例,下面就是一个简单的CURL请求Demo,把刚才申请的Token贴过来即可完成一次API接口的测试,开发就更不用说了,动手就行Py几行代码就可以搞定。

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

这里的Role主要是用来做多轮对话的,具体效果我们下一个章节继续说。

关于多轮对话

我们都想要ChatGPT一样的炫酷功能,那么如何做到呢?其实很简单,官网的demo给了我们方向。

来自 open api 官方

The main input is the messages parameter. Messages must be an array of message objects, where each object has a role (either "system", "user", or "assistant") and content (the content of the message). Conversations can be as short as 1 message or fill many pages.

Typically, a conversation is formatted with a system message first, followed by alternating user and assistant messages.

The system message helps set the behavior of the assistant. In the example above, the assistant was instructed with "You are a helpful assistant."

很简单,我们只要描述一下正确的上下文关系即可实现多轮对话,下面的例子同样来自于官网,可以看大message字段提供了极其丰富的上下文,我们需要将这些上下文同时提供给API,这样API就能产生轻度的意识。

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

这里为什么说是轻度意识呢?其实答案很简单,因为OpenAI在提交token的时候是有限制的,直到目前的GPT3.5为止,其能支持的上限仅仅是4096个token,换算过来也就1200字左右,1200字也训练不出啥所以这里我说OpenAI是轻度意识。

关于多轮对话Token的优化

这里我提供几个思路:

1.我们在处理聊天记录时,可以对关键词进行提炼,简化prompt。

2.消息修剪,剔除一些无用的消息记录。

3.消息做FIFO,最老消息淘汰。

最后

GitHub - zeusguan/openai-go: a unofficial openapi api based golang 作者本人开发的OpenAI go的API接口,欢迎体验