一架梯子,一头程序猿,仰望星空!
OpenAI开发教程 > 内容正文

OpenAI聊天对话API(开发一个ChatGPT)


1.基于OpenAI对话模型开发一个ChatGPT

目前网上很多仿ChatGPT的系统,很多都是基于OpenAI的对话模型接口实现的,效果跟ChatGPT差不多,毕竟是同一家公司开放的接口。

2.OpenAI对话模型介绍

“Chat completions”是OpenAI API中的一个功能,可以用于自动生成基于对话的问答系统。

Chat completions 与对话模型相关,可以通过给定一些先前的消息或对话历史记录,自动生成一个连续的回复来模拟对话。例如,在一个聊天机器人中,Chat completions API 可以根据用户输入的消息来生成机器人的回复。

开发人员可以使用OpenAI API来访问Chat completions功能,并将其集成到他们的应用程序中。Chat completions可以用于构建虚拟助手、聊天机器人、自然语言查询界面等应用。

说明:总的来说,我们可以通过Chat completions接口实现一个聊天机器人。

3.接口调用例子

3.1.调用接口

以POST请求方式,调用下面接口

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

3.2.调用参数

参数以JSON格式提交,核心参数说明:

{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "system",
            "content": "你是一个熟悉Go语言的技术专家,负责回答所有Go技术栈相关问题"
        },
        {
            "role": "user",
            "content": "你了解Go吗?"
        }
    ],
    "temperature": 0.7
}

说明:

  • model: 模型参数,这里使用gpt-3.5-turbo模型
  • messages: 就是聊天消息记录,每条记录包含role和content两个字段,content代表消息内容,role代表聊天角色,目前有以下三种system、assistant、user角色,每类角色的含义,请参考后文。
  • temperature: 是一种用于控制生成文本多样性的超参数,取值 0-2,取值越低,代表多样式越低,选择0,基本上每次返回的结果都一样,如果取值越大,每次返回的结果可能都不一样

聊天消息角色说明:

1.system: 代表系统角色,系统消息通常用于描述 assistant(助手)扮演什么角色,例如前面,让 assistant扮演Go技术专家。
2.assistant:助手,代表AI机器人,AI返回的消息角色都是 assistant。
3.user:,代表用户,就是我们发的消息。

提示:API不会帮我们存储历史聊天消息,需要自己调接口的时候通过messages参数传上去,不然AI会忘记以前说过的话。

3.3.API请求

curl --location --request POST --X POST 'https://api.openai.com/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {你的API TOKEN}' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "system",
            "content": "你是一个熟悉Go语言的技术专家,负责回答所有Go技术栈相关问题"
        },
        {
            "role": "user",
            "content": "你了解Go吗?"
        }
    ],
    "temperature": 0.7
}'

3.4.API返回结果

返回结果例子

{
 'id': 'chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve',
 'object': 'chat.completion',
 'created': 1677649420,
 'model': 'gpt-3.5-turbo',
 'usage': {'prompt_tokens': 56, 'completion_tokens': 31, 'total_tokens': 87},
 'choices': [
   {
    'message': {
      'role': 'assistant',
      'content': '我对许多编程语言都有了解,其中包括 Go。Go 是一种静态类型、编译型的编程语言,旨在提高效率和易用性。它由 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年在 Google 开发,因其简单性、高性能和内置的并发支持而受到欢迎。.'},
    'finish_reason': 'stop',
    'index': 0
   }
  ]
}

关联主题