【人工智能】探秘OpenAI神奇接口 - ChatCompletion (6)

慈云数据 1年前 (2024-03-15) 技术支持 46 0

1、引言

ChatCompletion 是OpenAI中一个非常重要的接口。简单来说,它让你能够打造自己的应用,特别适用于与人工智能进行互动的场景,比如聊天机器人或智能客服。这个接口的独特之处在于它能够处理连续对话,因此可以保持上下文的信息,使得交流更加自然流畅。这就好比给你的应用赋予了与用户更亲近、更人性化的能力。

【人工智能】探秘OpenAI神奇接口 - ChatCompletion (6)
(图片来源网络,侵删)

换句话说,在大语言模型领域,这种根据提示来预测对应的文字输出的过程,被称为Completion,中文译为“补全”。能够完成Completion过程的模型,则被成为Completion模型。OpenAI在Completion模型模型基础上,进一步微调训练得到了对话类模型,也就是Chat Completion模型。相比Completion模型,

Chat Completion模型在大量对话预料上进行了微调训练,

【人工智能】探秘OpenAI神奇接口 - ChatCompletion (6)
(图片来源网络,侵删)

并且在模型内部新增了system、user和assistant等参数,用于设置聊天语境及不同的聊天角色,从而使得模型能够更好的理解人类意图,从而更好的完成对话类任务。

Completion接口,主要是解决补全问题的,就是用户输入一段提示文字,模型按照文字的提示,给出对应的输出。可以将这个过程理解为诱导型的对话

2、ChatCompletion 接口介绍

接口

https://api.openai.com/v1/chat/completions  

请求参数

参数名必选类型说明
modelstring支持的模型为:gpt-4, gpt-3.5-turbo, gpt-3.5-turbo-0301
messagesarray字典组成的列表对象
temperaturefloat采样温度,随机因子,控制输出结果的随机性,介于0到2之间,值越大随机性越高,默认为1
max_tokensinteger指定返回结果的token最大长度,默认是最大值,不同模型的最大token数不一样,例如gpt-3.5的最大长度支持4096

messages 是一个数组,数组中的元素是一个字典对象,包含两个必选字段,分别是role和content

参数名必选类型说明
rolestring该条消息由哪个角色生成,可选值:system, user, assistant
contentstring该条消息对应的内容

为什么messages要作为一个数组参数传递呢?

因为我们实现多轮对话时,必须把上一轮的对话内容传递给模型,模型才知道如何联系上下文来生成更精确的内容。

角色

message中每个元素必须指定一个角色,用来告诉该消息是谁生成的,目前该接口预设了3个值,分别是:

  • system:系统角色 ,用来设置机器人的行为
  • user:用户角色,和AI对话的用户
  • assistant:助理角色,AI机器人

    通常每次对话以一条系统消息作为开始(系统消息也可以不指定),然后用户消息和助理消息交替

    Python代码:

    response = openai.ChatCompletion.create(
      model="gpt-3.5-turbo",
      messages=[
            {"role": "system", "content": "你是一个上知天文下知地理的百晓生"},
            {"role": "user", "content": "中国首都在哪里"},
            {"role": "assistant", "content": " 中国的首都是北京。"},
            {"role": "user", "content": "人口是多少?"}
        ],
      temperature=0.6
    )
    

    助理消息是上一轮对话AI生成的内容,提取出来后作为下一轮的消息内容发送给AI,这样就可以实现多轮对话联系上下文语境生成内容。

    响应内容

    {
      "choices": [
        {
          "finish_reason": "stop",
          "index": 0,
          "message": {
            "content": "根据2020年的统计数据,北京市的常住人口为2171.6万人。",
            "role": "assistant"
          }
        }
      ],
      "created": 1683639817,
      "id": "chatcmpl-7EHuru5wKKpZ2CsEfjVa2z11DzqhJ",
      "model": "gpt-3.5-turbo-0301",
      "object": "chat.completion",
      "usage": {
        "completion_tokens": 27,
        "prompt_tokens": 486,
        "total_tokens": 513
      }
    }
    

    助理回复的内容可以从response['choices'][0]['message']['content']提取。

    参考

    1. https://community.openai.com/t/v1-completions-vs-v1-chat-completions-endpoints/271164
    2. Chat completions vs. Completions.
    3. completion example.
    4. system,user,assistant.
微信扫一扫加客服

微信扫一扫加客服