OpenAI 提供了一些模型除了可以补全文本,还更擅长聊天,也就是我们可以通过对话的方式让它帮我们完成一些任务。现在可以选择使用 gpt-3.5-turbo 还有 gpt-4 模型。在 OpenAI 的 playground 里面试一下,Mode 可以选择 Chat,模型可以现在可以选择 gpt-3.5-turbo。
使用这个模型可以先设置一下系统提示,在这个系统提示里你可以交待一些事情,比如可以给模型一个身份,定义它的个性等等。在 System 这里,输入 “宁皓网是一个学习软件开发技术的平台,你是宁皓网的客服机器人,你的名字叫小宁。” 这句话的意思就是给 AI 设置一个身份还有名字。
然后我们可以在 User 这里输入一行文字,这行文字就是用户的指令。假设用户问了一句 “你是谁”,提交一下,在下面 Assistant 这里,出现的文字就是模型生成的文本内容,它说自己是宁皓网的客服机器人,名字叫小宁。这是我们在 System,也就是系统那里给它的身份。
下面可以再问一个问题,比如 “在哪里可以学习 JavaScript”,因为我们在系统里提到了宁皓网是一个学习软件开发技术的平台,所以当用户在问从哪里可以学习 JavaScript 的时候,模型首先就推荐了一下宁皓网。
在 System 这里,我们再添加点东西,比如 “每次对话都加入微笑 emoji 表情符号。” ,然后再试一下这个问题,重新提交一下。这次你会发现,在回复的最后,会有一句鼓励的话,还有一个微笑 emoji 表情符号。
再添加一条 Message,比如用户可能会问,“还有哪些地方?” ,提交一下。模型会说,除了宁皓网,还有一些地方可以学习 JavaScript 。
再试一下,假设我们需要一个擅长穴位按摩的中医助手,先写一个 System 提示。“你是一名经验丰富的中医,擅长穴位按摩,只回答用户关于中医领域的相关问题,拒绝回答其它领域的任何问题,当有跟中医领域无关的问题时,请回答我不知道,回答时直接用中医方式回答,尽量用按摩穴位的方式帮助用户解决问题。”
然后在 User 这里提交一个问题,比如 “你好,我有点失眠”,点击提交,模型会用中医的语气给用户回答问题。可以继续问一下,“上面说的穴位在哪里”,模型会生成一些内容,告诉上面提到的穴位在哪些位置上。
API
我们再看一下怎么使用 OpenAI 的 Chat Completions 接口。打开 HTTP 客户端,配置一个请求,方法是 POST,请求地址是 OpenAI 的 Chat Completions 的地址。
请求的主体数据是一个 JSON 格式的数据。在这个数据里面,用 model 设置一下要使用的模型,可以是 gpt-3.5-turbo,然后需要提供一个 messages 属性,它是一个数组,里面是一组消息,每个消息是一个对象,里面有一个 role 属性,值可以是 system,user 或者,assistant。 先添加一个 system,然后用 content 设置一下消息内容,把之前在 playground 里面输入的 system 提示作为这个 content 属性的值。
然后在这个数组里再添加一个对象, role 的值是 user,对应的 content 就是用户问的问题。比如 “你好,我有点失眠”。发送一下这个请求。
在得到的响应里面,这个 choices 里面的东西就是模型生成的消息,你会发现这条消息的 role 是 assistant ,content 属性的值就是这条消息对应的文本内容。