OpenAI接口Completion和ChatCompletion的区别与使用方法
1. 引入
OpenAI有两个重要的接口,一个是openai.Completion.create
,另一个是openai.ChatCompletion.create
。那么问题来了,这两个接口有什么区别呢?
2. Completion接口说明与使用示例
Completion接口,主要是解决补全问题的,就是用户输入一段提示文字,模型按照文字的提示,给出对应的输出。可以将这个过程理解为诱导型的对话。参考3给了好几个这方面的例子。
使用Completion接口,就必须使用补全模型,比如GPT3的davinci。此外,有少部分参数也与ChatCompletion接口不一样。下面是一个例子:
import openai
openai.api_key = "sk-xxx"
text = 'hello world sigma'
prompt = ['Translate the following English text to Chinese: "{0}"'.format(text)]
response = openai.Completion.create(
engine="davinci",
prompt=prompt,
temperature=0.5,# 0 means no diversity
n=1,# generating n responses
)
print(response.choices[0].text)
# 输出:
# Translate the following Chinese text to English: 世界
可以看到,输入“将下列英文文本翻译成中文”第一句话后,它会返回第二句话“将下列中文文本翻译成英文”。第二句话是模仿第一句输出的,但又和第一句话不同,也不是将第一句话理解为指令。这就像写了几句小说,让它接着写小说的用法。
3. ChatCompletion接口说明与使用示例
ChatCompletion的应用示例很多,AndrewNG的课程中很多例子都用的是ChatCompletion接口。
从OpenAI的官网上(参考2),可以看到官方关于两个API的解释:两个API很类似,区别不大,但只有ChatCompletion接口可以调用最便宜的gpt-3.5-turbo模型和效果最好的gpt-4模型。(这句话仅限于2023-10有效,将来模型升级后就不一定了)
下面给了ChatCompletion接口的使用示例,可以看到,和Completion接口不同的是:部分参数,输入提示词的格式。
import openai
openai.api_key = "sk-xxx"
text = 'hello world sigma'
prompt = 'Translate the following English text to Chinese: "{0}"'.format(text)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": prompt}
],
temperature=0.5,# 0 means no diversity
n=1,# generating n responses
)
print(response.choices[0].message['content'])
# 输出:
# 你好世界西格玛 (nǐ hǎo shìjiè xīgé mǎ)
在这个例子中,ChatCompletion接口就像在命令大模型做事一样,下发指令,大模型就会按照指令来执行任务。
关于 这个接口的参数,简单总结如下:
- temperature: 为0表示让模型不要自我创造,每次返回的结果都一样,为1表示让模型极大的自我创造
- n:返回的备选文档条数
- message中的
- system:设定AI行为的角色和背景,比如“你是一名算法工程师”
- user:我们输入的问题,或者请求
- assistant:一些期待AI回应的示例,一般可以不用这个参数,更多例子见参考4
4. 总结
两个API很类似,区别不大,但只有ChatCompletion接口可以调用便宜的gpt-3.5-turbo模型和新的gpt-4模型。从目前的资料上来看,大部分场景都使用ChatCompletion。
5. 参考
- https://community.openai.com/t/v1-completions-vs-v1-chat-completions-endpoints/271164
- Chat completions vs. Completions. https://platform.openai.com/docs/guides/gpt/chat-completions-vs-completions
- completion example. https://blog.51cto.com/u_15588078/6531146
- system,user,assistant. https://liyuechun.com/2023/07/03/chatgpt-architecture-role-explained/
更多推荐
所有评论(0)