业务场景
结构化数据抽取在生产应用中的实际场景
运营管道从邮件发票中抽取供应商、发票号、币种、总额、税额和到期日。Gemini 2.5 Flash 接收 OCR 文本和布局提示,必须返回一个带版本的 JSON 对象。
缺失字段保持 null。总额存在歧义时返回候选值和来源范围。管道在接受记录前验证类型和算术;失败进入修复或审查。
生产使用场景
运营管道从邮件发票中抽取供应商、发票号、币种、总额、税额和到期日。Gemini 2.5 Flash 接收 OCR 文本和布局提示,必须返回一个带版本的 JSON 对象。

生产方案
| 生产选择 | 推荐配置 | 原因 |
|---|---|---|
| API | POST /v1/chat/completions | 从服务端发送 OpenAI 兼容请求 |
| 主模型 | gemini-2.5-flash | Gemini 2.5 Flash 是当前目录中用于高吞吐抽取的主路由。 |
| 备用模型 | gpt-5.4-mini | 某类固定文档上 gpt-5.4-mini 表现更好时可作为备用;长文档或布局复杂文档升级到 Gemini 2.5 Pro。 |
| 升级模型 | gemini-2.5-pro | 只有主路由越过已定义的质量或复杂度边界时才使用 |
| 输出契约 | 经过验证的 JSON | 严格的 invoice.v3 JSON:字段类型正确、缺失值为 null、每个值包含来源范围。 |
运营管道从邮件发票中抽取供应商、发票号、币种、总额、税额和到期日。Gemini 2.5 Flash 接收 OCR 文本和布局提示,必须返回一个带版本的 JSON 对象。
缺失字段保持 null。总额存在歧义时返回候选值和来源范围。管道在接受记录前验证类型和算术;失败进入修复或审查。
请求应从服务端发送。请将示例内容和占位工具 Schema 替换为应用中的真实数据与工具。
curl https://app.llmfly.ai/v1/chat/completions \
-H "Authorization: Bearer $LLMFLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-flash",
"messages": [
{"role": "system", "content": "Extract one invoice into the supplied JSON schema. Use null for absent fields. Include a source span for every non-null value. Never guess."},
{"role": "user", "content": "Extract this invoice using schema invoice.v3."}
],
"response_format": {"type": "json_object"}
}'Gemini 2.5 Flash 是当前目录中用于高吞吐抽取的主路由。
某类固定文档上 gpt-5.4-mini 表现更好时可作为备用;长文档或布局复杂文档升级到 Gemini 2.5 Pro。
| 指标 | 通过条件 |
|---|---|
| Schema 有效响应率 | 响应无需修复即可通过带版本的 Schema 验证 |
| 逐字段准确率与召回率 | 每个关键字段分别达到已定义的准确率和召回率目标 |
| 无依据值比例 | 每个值都有支持它的来源范围或明确的派生规则 |
| 每条有效记录的成本 | 生成、验证、修复和审查总成本不超过处理预算 |
严格的 invoice.v3 JSON:字段类型正确、缺失值为 null、每个值包含来源范围。
每次生产运行都应记录模型 ID、Request ID、Token 用量、重试、验证结果和最终处理状态。
不够。先验证 Schema,再把每个抽取值与来源证据对照。
明确契约,例如缺失用 null,歧义使用单独状态。
逐字段报告准确率和召回率,尤其关注会触发动作的字段。
让主模型和备用模型使用相同请求、工具和验证规则。