1. 对话补全(Chat Completion)
核心特点
对话上下文感知:模型能记住并理解多轮对话的上下文
角色系统:支持 system/user/assistant 三种角色消息
状态保持:适合需要记忆前文的应用场景
指令控制:通过 system 消息可精细控制模型行为
技术参数
参数 | 说明 | 示例值 |
---|---|---|
messages | 消息对象数组 | [{"role": "user", "content": "你好"}] |
temperature | 控制生成随机性(0-2) | 0.7 |
max_tokens | 最大生成token数 | 2048 |
进阶使用示例
{ "model": "deepseek-chat", "messages": [ { "role": "system", "content": "你是一位专业的Python编程助手,回答时请给出详细解释和示例代码。" }, { "role": "user", "content": "请解释Python中的装饰器" }, { "role": "assistant", "content": "装饰器是修改函数行为的特殊函数..." }, { "role": "user", "content": "能给我一个缓存装饰器的实现示例吗?" } ], "temperature": 0.5, "max_tokens": 1024 }
适用场景
智能客服系统
多轮对话应用
个性化教学助手
复杂任务分解执行
2. 补全(Completion)
核心特点
单向生成:基于给定提示词继续生成内容
无状态:每次请求独立处理
高效:适合批量生成内容
灵活:可用于各种文本生成任务
技术参数
参数 | 说明 | 示例值 |
---|---|---|
prompt | 输入提示文本 | "人工智能的三个主要应用领域是:" |
stop | 停止生成的条件 | ["\n\n", "###"] |
n | 生成多个结果 | 3 |
进阶使用示例
{ "model": "deepseek-completion", "prompt": "以下是一篇关于机器学习的文章开头:\n\n机器学习是人工智能的核心领域之一,它", "temperature": 0.7, "max_tokens": 500, "top_p": 0.9, "frequency_penalty": 0.5, "presence_penalty": 0.5, "stop": ["\n\n", "###"] }
适用场景
文章自动续写
代码片段生成
产品描述批量生成
创意写作辅助
3. FIM补全(Fill-in-Middle)
核心特点
双向上下文:同时考虑前缀和后缀信息
精准填充:特别适合代码补全场景
结构感知:理解代码/文本的完整结构
错误修复:可修正不完整的代码片段
技术参数
参数 | 说明 | 示例值 |
---|---|---|
prefix | 前缀文本 | "def calculate_average(numbers):\n total = 0\n for num in numbers:" |
suffix | 后缀文本 | "\n return total / len(numbers)" |
middle | 可选中间文本 | null |
进阶使用示例
{ "model": "deepseek-fim", "prefix": "function filterEvenNumbers(arr) {\n const result = [];\n for (let i = 0; i < arr.length; i++) {", "suffix": " }\n return result;\n}", "temperature": 0.3, "max_tokens": 100 }
适用场景
IDE代码补全插件
代码片段修复
模板填充
结构化文档生成
综合对比表
特性 | Chat Completion | Completion | FIM |
---|---|---|---|
上下文记忆 | ✔️ 强 | ✖️ 无 | ✔️ 局部 |
输入结构 | 消息序列 | 单文本 | 前缀+后缀 |
输出位置 | 接续最后消息 | 接续提示词 | 中间填充 |
典型延迟 | 中 | 低 | 中 |
Token效率 | 中 | 高 | 高 |
选择建议
需要交互式对话? → 选择 Chat Completion
简单的内容续写? → 选择 Completion
代码/结构化文本补全? → 选择 FIM
不确定? → 从 Chat Completion 开始尝试
转载请注明:三五二萌文网 » DeepSeekAPI三种文本生成方式:对话补全ChatCompletion、补全Completion、FIM补全Fill-in-Middle的区别(第二篇)