正确调用 text_classification 接口需显式指定与模型微调目标一致的 labels(如情感分析用["positive","negative","neutral"]),选用平台支持的 model(如"bert-base-chinese"),设置 max_length=512 适配长文本,temperature=0.0 保证确定性,并避免 SDK 自动转小写等干扰,优先直调 API。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

text_classification 是 DeepSeek 提供的最直接可用的文本分类接口,但实际调用中容易因参数错配、模型选型或输入格式问题返回 {"error": "invalid input"} 或低置信度结果。关键不是“能不能用”,而是“怎么用对”。
如何正确调用 text_classification 接口
DeepSeek 的文本分类 API 不是“传文本就出标签”的黑盒,它依赖明确的类别定义和模型适配。错误地省略 labels 参数或使用不匹配的 model,会导致返回空结果或默认 fallback 标签。
必须显式指定待分类的候选标签集合,且该集合需与所选模型的微调目标一致(例如情感分析模型只认 ["positive", "negative", "neutral"],不能传 ["科技", "体育"]):
response = client.text_classification(
text="这个功能响应很快",
model="bert-base-chinese",
labels=["positive", "negative", "neutral"]
)
-
model必须是平台支持的已部署模型名,如"bert-base-chinese"、"deepseek-textcls-v2";不支持自定义路径或本地模型文件 -
labels是强制字段,不能为空列表,也不能含空格/特殊字符(如"正面 "会失败) - 单次请求只支持一个
text字符串,不支持批量传入数组(需循环调用或改用批处理 endpoint)
max_length 和 temperature 对分类结果的影响
这两个参数在文档里常被误认为“可选”,但它们实际决定模型是否看到完整语义上下文,或是否引入不确定性——而分类任务恰恰需要确定性。
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
max_length 控制输入截断长度,默认值(如 128)对短评有效,但遇到长段落(如 500 字产品描述),会被硬截断,丢失关键判断依据;temperature 默认为 0.0,但若设为 0.3+,可能让本应确定的 "positive" 变成随机抖动输出。
- 中文场景下,建议将
max_length设为 512,尤其用于电商评论、客服工单等含细节的文本 -
temperature应始终设为0.0—— 分类不是生成任务,不需要“多样性” - 若发现置信度
confidence普遍低于 0.6,优先检查是否因max_length过小导致语义被截断
为什么用 TextClassifier SDK 有时比直接调 API 更不稳定
官方 Python SDK(如 from deepseek import TextClassifier)封装了自动重试、token 刷新和基础校验,但它的默认行为会静默覆盖部分关键参数:比如强制使用内置 model 名、忽略用户传入的 max_length、甚至把 labels 转成小写后发送——而某些模型对大小写敏感(如 "Neutral" ≠ "neutral")。
- 生产环境建议绕过 SDK,直接用
requests.post调用原始 endpoint,完全掌控 headers 和 payload - SDK 中的
predict()方法若返回None,大概率是内部把labels转小写后与模型预期不匹配,可抓包验证 - 若坚持用 SDK,请确认其版本 ≥ 2.4.1(2025 年底修复了 label 大小写透传 bug)
labels 字符串里多了一个不可见空格,或是 max_length 被 SDK 覆盖却没报错——这些细节不会出现在示例代码里,但会在线上突然让 30% 的请求返回低置信度。


















