答案在response.choices[0].message.content中;常规模式下直接提取该字段,推理模式下content可能为空而reasoning_content含完整推导,OCR模型需查data.response,重排序API则看results数组中的document和relevance_score。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

调用千问AI API后拿到一串JSON,但不知道哪个字段是你要的答案,response.choices[0].message.content到底在哪、为什么有时为空、reasoning字段又是什么——这些问题不解决,后续业务逻辑根本跑不起来。
确认API返回结构类型
第一步不是急着取值,而是先看status是否为success。如果status是error,直接读message字段里的错误描述,比如“invalid_api_key”或“model_not_found”,此时content字段毫无意义。
status为success时,再看顶层是否有reasoning_content、reasoning_steps等字段。有,说明你启用了推理模式(return_reasoning=True);没有,说明走的是常规响应路径,答案就在content里。
【启用推理模式后,content字段可能为空或只含结论,核心逻辑全在reasoning_content中】
常规模式下提取content字段
这是最常见的情况:没开推理,模型直接返回答案。
步骤一:用Python解析JSON响应 → response_json = response.json()
步骤二:定位到response_json["choices"][0]["message"]["content"],这就是你要的文本答案。
注意:如果choices数组为空,说明模型根本没生成任何内容,大概率是max_tokens设为0或输入被拦截,此时应检查请求体和status字段。
推理模式下正确读取答案
当你需要模型展示思考过程(比如数学推导、代码生成逻辑),就必须处理reasoning_content字段。
方法一:只取最终结论 → 读response_json["choices"][0]["message"]["content"],它通常是一句话总结。
方法二:完整保留推理链 → 读response_json["reasoning_content"]或response_json["choices"][0]["reasoning_steps"](字段名依模型版本而异),该字段是字符串或数组,含完整中间步骤。
方法三:拼接使用 → 把content当作标题,reasoning_content当作正文,组合成带解释的输出,适合知识库问答或教学场景。
图片理解类API的字段解析
调用qwen-vl-ocr-2025-11-20这类OCR专用模型时,返回结构完全不同。
直接取data["response"]获取文字识别结果,这是最简路径。
若需结构化字段(如发票中的金额、日期),必须检查data["analysis"]下的objects、scenes、texts子字段——它们是空列表,说明OCR模块未生效,要回头确认modelName是否写对、prompt是否含“提取文字”等明确指令。
【OCR模型返回的data字段是核心容器,所有结果都包裹在data内,不在choices层级】
重排序(Reranker)类API字段提取
这类API不生成文本,而是对文档列表打分排序。
第一步:确认返回体含results数组,而非choices。
第二步:遍历results → 每个元素含document、relevance_score、rank三个关键字段。
第三步:按rank升序取前N个document,就是最相关的原文片段。
注意:relevance_score是浮点数,范围通常在0.0–1.0之间,值越高代表相关性越强,但不同模型量纲可能不一致,不可跨模型直接比较。


















