OpenAI API: 如何编写 message?
 |  | 
上面的这个例子,进行第二轮的问答,通过传如上一轮的问题,让助手能够感知上下文;
通常情况,一个对话遵循的模式是一个 system (系统) 信息开头,接着是 user (用户)和 assistant (助手)交替出现:
system:系统信息,用来指示助手应该如何表示或者具有什么性格,例如让他扮演某个职业专家,以某种情绪的口吻来回答;user: 用户输入的部分,用来指导assistant;assistant: GPT 基于用户输入,做出的回答或者补齐,用来传递上一轮的回答的上下文;
gpt-3.5-turbo-0301 并不会永远强关注
system信息。后续的模型将会改进。
# 对比 Text Completions
messages 的虽然比 prompts 显得冗长了很多,但是书写结构化好了很多。使用 prompts 估计模型无法区分内容的产生于谁,注意力机制的关注点会有所发散,助手应该更加关注用户输入的内容,这点上 messages 就能够表现的更好了,至少可以对录入的内容进行加权(这个是我猜测的)。
下面是官方将 prompt 转化成 messages 的例子:
prompt:
 |  | 
messages:
 |  | 
# 对比下 API 参数的差异
| 参数 | Text Completions | Chat Completions | 
|---|---|---|
| model | Y | Y | 
| prompt | Y | N | 
| messages | N | Y | 
| max_tokens | Y | Y | 
| temperature | Y | Y | 
| top_n | Y | Y | 
| frequency_penalty | Y | Y | 
| presence_penalty | Y | Y | 
| stop | Y | Y | 
| logit_bias | Y | Y | 
| best_of | Y | N | 
| suffix | Y | N | 
| stream | Y | Y | 
| echo | Y | N | 
| n | Y | Y | 
| logprobs | Y | N | 
具体参数说明见:openAI api - Text Completions