需通过API请求体的stop参数传入字符串数组作为停止标识符,模型在输出中首次完整匹配任一数组元素时终止生成,支持多字节Unicode符号但须确保UTF-8编码一致。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

如果您在调用DeepSeek API时希望模型在生成文本过程中遇到特定字符串时立即终止输出,需通过请求体中的stop参数传入自定义停止标识符。以下是实现该功能的具体操作步骤:
一、在JSON请求体中正确配置stop字段
stop参数必须为字符串数组类型,每个元素为一个用于中断生成的完整子串;模型将在输出中首次匹配到任一数组元素的**完整出现位置**时停止,不支持正则或前缀匹配。
1、构造标准JSON请求体,确保stop字段位于顶层键中,且值为字符串数组。
2、将目标停止符(如"###"、"\n\n"、"[END]")作为独立字符串写入数组,例如:"stop": ["###", "[END]"]。
3、确认数组内所有字符串均未包含不可见控制字符(如零宽空格、BOM),避免因编码差异导致匹配失败。
二、使用curl命令行发送含stop参数的请求
通过curl可直接验证stop行为,需确保Content-Type为application/json且Authorization头有效。
1、编写完整curl命令,将stop数组嵌入data部分,注意双引号转义:
2、执行命令:curl -X POST "https://api.deepseek.com/v1/chat/completions" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"model":"deepseek-chat","messages":[{"role":"user","content":"请生成一段以###结束的文本"}],"stop":["###"]}'。
3、观察响应中choices[0].message.content末尾是否严格截断于###之前,且无后续字符。
三、在Python代码中动态注入stop标识符
使用requests库构建请求时,stop数组应作为字典键值传入,由Python自动序列化为合法JSON数组,规避手动拼接引号错误。
1、导入requests模块并定义API端点与密钥。
2、构建payload字典,将stop设为列表,例如:"stop": ["\\n", "User:", "Assistant:"](注意换行符需用"\\n"表示字符串字面量)。
3、调用requests.post(url, json=payload, headers=headers),其中json=参数确保自动处理序列化和Content-Type头。
四、验证停止符生效的边界条件
停止符匹配区分大小写且要求完全一致,需排除常见陷阱:模型可能将停止符作为普通文本输出而非终止信号。
1、发起测试请求,输入内容明确包含停止符候选字串(如提问“请回答后加[STOP]”),并在stop中设置"[STOP]"。
2、检查返回content字段结尾是否恰好为[STOP]之前的字符,且response中finish_reason字段值为"stop"。
3、若finish_reason为"length",说明token限制先触发,需同步增大max_tokens值以确保stop机制优先生效。
五、处理多字节与特殊符号停止符
中文标点、emoji或Unicode符号可作为停止符,但需确保API服务端与客户端采用相同编码解析,推荐统一使用UTF-8。
1、在stop数组中直接写入Unicode字符串,例如:"stop": ["。", "✅", "【结束】"]。
2、若使用编程语言构造请求,确认字符串变量本身已解码为Unicode(如Python3中str默认为Unicode)。
3、避免将组合字符(如带变音符号的字母)拆分为多个码点传入,应以视觉上完整的单个字符形式加入数组,例如使用"ñ"而非"n\u0303"。











