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. 参考

  1. https://community.openai.com/t/v1-completions-vs-v1-chat-completions-endpoints/271164
  2. Chat completions vs. Completions. https://platform.openai.com/docs/guides/gpt/chat-completions-vs-completions
  3. completion example. https://blog.51cto.com/u_15588078/6531146
  4. system,user,assistant. https://liyuechun.com/2023/07/03/chatgpt-architecture-role-explained/
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐