LLM学习笔记(3)补全Completions
Completions和Chat Completions的对比
1. 功能侧重点的不同
Completions(文本/代码补全)
功能目标是进行单次补全任务,例如自动完成代码段、生成文本内容、填充某个提示后的内容。
特点:
- 使用
prompt
字段:接受一个提示作为输入。 - 更适用于单个任务生成,像代码片段生成、摘要生成或文章续写。
Chat Completions(会话补全)
功能目标:处理多轮对话。
- 它模拟对话的逻辑,比如聊天机器人对用户消息的回应。
- 使用的模型主要是针对对话型应用优化的模型,例如
gpt-3.5-turbo
或gpt-4
。
特点:
- 支持
messages
字段:可以存储多轮对话消息的历史记录。 role
字段(system/user/assistant):用来标明消息的身份,例如系统、用户或助手。- 适合聊天机器人、虚拟助手等交互场景。
2. API请求字段的差异
对比点 | Chat Completions 会话补全 | Completions 文本/代码补全 |
核心字段 | messages (对话消息列表) | prompt (输入提示) |
模块类型 | 对话模型(如gpt-3.5-turbo 、gpt-4 ) | 补全模型(如text-davinci-003 ) |
功能 | 多轮对话生成,支持上下文逻辑 | 单次任务生成,完成提示后的内容 |
采样选项 | 通常无需修改temperature ,因为对话逻辑稳定 | 采样温度temperature 影响随机性,灵活生成 |
3. 响应结构的差异
Chat Completions(会话补全)
choices
字段中的message
是一个完整的会话响应,包括role
和content
。
支持多轮对话历史:messages
字段中记录了之前所有的对话上下文。
Completions(文本/代码补全)
choices
字段中的text
直接包含补全的内容。
没有会话上下文,单次任务完成后返回结果。
4. 两者的联系
尽管两者有所不同,它们的底层逻辑是一致的,都是通过输入请求(prompt/messages)与模型交互,并得到生成结果(response)。主要区别在于:
- 输入结构:
Chat Completions
更复杂,支持多轮对话;Completions
则偏向简单的提示补全。 - 模型优化方向:
Chat Completions
针对交互性优化;Completions
适用于静态补全任务。
Completions响应JSON中的几个字段
1. logprobs
字段
- 含义:
logprobs
是“logarithmic probabilities”(对数概率)的缩写。- 它用于存储模型在生成每个 token 时,针对所有可能的 token 的概率分布的对数值(log-probability)。
- 用途:
- 用于分析模型生成的每一步的置信度。
- 开发者可以通过
logprobs
来了解生成每个 token 时,模型对该 token 的选择是否具有高置信度。
- 当前值为
null
的原因:- 在请求时未启用
logprobs
功能。 - 如果需要获取
logprobs
,需要在 API 请求中明确设置logprobs=1
或更高的值。
- 在请求时未启用
2. finish_reason
字段
- 含义:
- 表示生成结束的原因。
- 常见的值包括:
"stop"
:生成完成,没有达到限制条件。"length"
:生成因达到max_tokens
限制而被截断。"content_filter"
:生成内容被内容过滤器终止。
- 当前值为
"length"
的原因:- API 请求中设置了
max_tokens=7
,因此生成的内容不能超过 7 个 token。 - 在这个例子中,生成的补全确实达到了 7 个 token,因此触发了
"length"
作为结束原因。
- API 请求中设置了
为什么 finish_reason
是 "length"
?
这与 Token 限制相关
-
请求中的限制:
- 在请求时,开发者设置了
max_tokens=7
,明确限制了模型生成的最大 token 数量为 7。 - 这个限制包括空格、标点符号和单词。
- 在请求时,开发者设置了
-
生成的内容:
- 示例响应中的补全内容为:
"\n\nThis is indeed a test"
- 这段文本的 token 分解大致如下:
\n
(换行) = 1 token\n
(换行) = 1 tokenThis
= 1 tokenis
= 1 tokenindeed
= 1 tokena
= 1 tokentest
= 1 token- 总计 = 7 tokens
- 示例响应中的补全内容为:
-
达到限制:
当模型生成了 7 个 token 后,因达到max_tokens
限制,生成过程被自动停止,因此finish_reason
为"length"
。
原文地址:https://blog.csdn.net/qq_40525602/article/details/143888402
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!