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
}
]
}