SuperAPI AI 工具集

llm-structured-output

智能体与模型

查看项目

更新于 10-15 23:47

技能介绍

用途:把 LLM 的自由文本输出转成类型化、可校验的数据,便于写入数据库、调用 API 或渲染 UI,而不是靠解析自然语言文本。

主要能力:覆盖三种主流做法。OpenAI 用 response_format 的 json_schema(配合 strict: true 启用受限解码);Anthropic 定义一个带 input_schema 的工具并设置 tool_choice 强制调用,数据位于 tool_use 内容块;Google Gemini 用 generationConfig.responseSchema 并设 responseMimeType 为 application/json。本地模型可用 GBNF 语法或 --json-schema 做 token 级受限解码。也涉及 Zod 的 zodResponseFormat()、Pydantic 及 instructor、marvin 等校验方式。

使用方式:先确定目标 schema,逐字段写明类型、是否必填与枚举值,并为每个字段加 description 作为抽取指令;用系统提示强调任务是数据抽取;OpenAI 严格模式需在每个对象上设 additionalProperties: false。响应返回后用 model_validate() 或 .parse() 做应用层校验,失败时把原输入、失败输出和校验错误回传重试,最多 3 次,并记录输入、原始响应、解析结果与错误。

限制与注意:json_object 旧模式只保证 JSON 语法,不保证符合 schema;Anthropic 不要解析文本块;strict 模式下 additionalProperties: true 会被 API 以 400 拒绝。受限解码只保证类型与结构,不保证取值正确。超长文本应分块抽取后合并;注意 refusal 字段;枚举大小写需一致;递归或超过 3 层的嵌套 schema 会增加延迟并易触及 max_tokens。建议固定模型版本,schema 变更前用 20 条以上真实输入测试,可选字段设默认值以避免模型编造。