应采用JSON Schema、模板填充、Few-shot示例及函数调用四种方法统一千问信息抽取格式:一、嵌入JSON Schema强制字段结构;二、用带占位符模板控制槽位;三、通过3–5个规范样例引导字段对齐;四、启用function calling自动参数提取。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您使用千问进行信息抽取任务,但模型输出结果缺乏统一格式,则可能是由于未明确定义抽取目标的结构化模式。以下是为千问设计并应用 schema 的具体方法:
一、采用 JSON Schema 显式声明字段结构
通过在提示词中嵌入标准 JSON Schema 描述,可强制模型按指定字段名、类型和约束生成输出。该方式利用千问对结构化文本的强解析能力,使输出直接兼容下游数据处理流程。
1、定义包含字段名、数据类型及可选说明的 JSON Schema 对象,例如:{"type":"object","properties":{"person_name":{"type":"string"},"organization":{"type":"string"},"date":{"type":"string","format":"date"}},"required":["person_name","organization"]}
2、将该 schema 作为系统指令的一部分,置于用户输入前,格式为:“请严格按以下 JSON Schema 输出结果,不得增减字段,不得添加解释性文字:[插入schema]”
3、在用户输入中提供待抽取的原始文本,并明确指令“请从以下文本中抽取信息,仅输出符合上述 schema 的 JSON 对象”
4、接收模型响应后,直接解析 JSON 字符串,确保所有字段值均为字符串类型且无额外包裹文本
二、使用模板填充式提示(Prompt Template)控制槽位
通过预设带占位符的结构化模板,引导千问将识别出的实体填入对应位置。该方法不依赖模型对 JSON 语法的理解,适用于对格式容错率要求较高的场景。
1、构造模板如:“【人物】:{person};【机构】:{org};【时间】:{time}”
2、在提示中明确说明:“请严格按以下格式输出,仅替换花括号中的内容,不添加任何其他符号、换行或说明:[插入模板]”
3、提供原始文本后追加指令:“请提取信息并填入模板,若某项未出现则留空,不得省略分号或标签”
4、后处理时按分号分割,再依“:”拆解键值对,需校验模板中每个标签是否完整存在且顺序不变
三、结合 Few-shot 示例引导字段对齐
在提示中嵌入多个输入-输出配对样例,使千问通过类比学习理解字段语义与边界,尤其适用于命名不规范或存在歧义的领域术语。
1、选取 3–5 条覆盖不同句式、含典型噪声的样本,每条包含原始文本与对应结构化输出
2、样例输出必须与目标 schema 完全一致,字段名大小写、下划线/驼峰风格须统一
3、在 few-shot 块末尾添加指令:“请参照以上示例,对后续文本执行相同的信息抽取操作,字段名称必须与示例中完全一致,不可同义替换”
4、输入新文本后,禁止在输出中复述示例或添加‘类似地’‘同上’等提示性短语
四、启用函数调用模式(Function Calling)声明参数契约
当部署环境支持千问的 function calling 能力时,可通过注册函数接口定义输入参数的结构契约,由模型自动完成参数提取与类型转换。
1、构造函数描述对象,包含 name、description、parameters(含 type、properties、required)字段
2、调用 SDK 或 API 时传入该函数定义,并设置 force_call 参数为 true
3、向模型发送原始文本,模型将返回符合 parameters 约束的字典对象,而非自然语言响应
4、接收 response.message.tool_calls 后,解析第一个调用的 function.arguments 字段,该字符串已为合法 JSON,可直接 json.loads 解析


















