跳转到主要内容
GLiNER 使用与 OpenAI 兼容的 model 和 messages 信封,并有两个特定约定:
  • 添加一个顶层 schema,描述提取、分类、结构化记录或 关系抽取任务。
  • 解析 choices[0].message.content 中的 JSON 字符串。

Fastino GLiNER 智能体技能

在 Cursor、Claude Code 或 Codex 中安装 GLiNER 技能。

查看 API 契约

完整的请求和响应 schema。

GLiNER 实战示例

经过测试的实体、分类和关系请求。

设置你的 API 密钥

  1. 创建一个 Fastino 账号
  2. 获取你的 API 密钥,前往 Settings
将密钥设置为环境变量,这样下面的示例可以直接运行:

请求

string
必填
支持推理的基础模型 ID,或已完成、可部署的 Fastino 训练作业的 UUID。
object[]
必填
非空消息列表。对于 GLiNER 推理,请将待分析的文本放入用户消息的 content 中。
object
定义自定义编码器任务。对于经典抽取和分类,请提供一个包含 entities、classifications、 structures 或 relations 中一个或多个键的字典。对于受约束分类,请提供下文所述的原生 version、tasks 和 constraints 结构。仅当所选模型已配置默认任务时才可省略 schema。 经典 classifications 中的每个条目至少需要两个标签。已弃用扁平的实体标签数组,请始终使用字典形式。
number
默认值:"0.5"
置信度阈值,取值范围为 0 到 1。较低的值更偏向召回率;较高的值更偏向精确率。
boolean
默认值:"true"
在提取结果中包含置信度值。
boolean
默认值:"true"
在实体结果中包含半开区间的字符偏移(start、end)。
boolean
默认值:"true"
持久化本次推理。设置为 false 可选择不保存。
boolean
默认值:"false"
对于编码器模型,截断超出模型 max_input_tokens 的文本,而不是返回 input_too_long。 仅在可以接受丢弃输入末尾内容时使用。
发生截断时,x_fastino.truncated 为 true,且不会返回截断位置之后的实体。用量仍按提交的完整文本计算。 超过 50,000 个字符的输入会在截断之前被拒绝。此选项适用于基础、LoRA 和全量微调的编码器模型。

实体 schema

尽量使用带描述的实体定义:

分类 schema

每个条目只接受 task、labels、multi_label、cls_threshold 和 top_k。在 GLiNER-2.5-Decide 上,labels 必须是字符串列表,且 top_k 目前不起作用;参见 Decide 分类。

受约束分类 schema

GLiNER2.5 Multi 可以在硬约束下对相关的分类任务进行联合解码。使用此 schema 之前,请确认所选模型在 GET /v1/base-models 返回的 encoder_features 中包含 constrained_classification。 任务使用基数和排序字段:
  • 单一答案: min_labels: 1 和 max_labels: 1
  • 多个答案: 使用 min_labels 和可选的 max_labels
  • 有序: 单一答案的基数设置加上 ordered: true;标签按从低到高排序
labels 可以是字符串数组,也可以是将每个答案映射到其描述的对象。任务还可以包含 instruction 和 examples,其中每个示例都是一个 [text, answer] 对。 支持的约束表达式包括 Implies、Excludes、Cardinality、AtLevel、MinLevel 和 MaxLevel。约束类型名称区分大小写。有序约束使用以下 JSON 结构:
上面的属性名 exact_level、minimum_level、maximum_level 和 bounded_range 仅用于说明,并不是约束字段。请将相应的约束对象直接放入 schema 的 constraints 数组中。有界范围是包含 MinLevel 和 MaxLevel 的 And;不存在 BetweenLevel 这种传输类型。 以下请求组合了单一答案、多个答案和有序任务:
该端点返回标准的聊天补全信封。解析 choices[0].message.content 中的 JSON 字符串后,受约束结果的结构如下(概率值因输入和检查点而异):
在此示例中,独立的 safety 概率更偏向 safe,但选中 prompt_injection 会使该答案无效。因此,受约束解码器选择了概率较低的 unsafe 答案,以及至少为 high 的严重程度。约束会强制得到有效的联合结果;它们不会提高或重新校准底层的概率或置信度。 请始终检查 _meta.feasible。当 schema 自相矛盾,或没有任何保留的候选分配能满足所有规则时,结果可能只是尽力而为,而不是完全可行。

结构化提取 schema

结构字段使用 field::type::description 规范:

关系 schema

最简单的关系 schema 是关系名称的扁平列表:
也可以使用字典来添加描述或按关系配置:
不要发送包含 head 和 tail 定义的关系对象。

组合 schema

通过组合键在同一段文本上运行多个任务:
schema 会自动识别操作类型。请勿发送 task 或 task_type。

示例

model 值必须当前支持托管推理。请使用实时模型目录,而不要假设每个 Hugging Face 检查点都可用:

响应

该端点返回聊天补全信封。GLiNER 结果以 JSON 字符串形式序列化在 choices[0].message.content 中:
在读取任务结果之前,请将 choices[0].message.content 解析为 JSON。当 store=true 时, x_fastino.inference_id 标识已持久化的推理。 当编码器请求同时省略 schema 和 response_format,且 Fastino 使用所选模型的目录默认 schema 时,x_fastino.default_schema_applied 为 true。在将抽取结果视为完整之前, 请检查 x_fastino.truncated。

超大输入的异步作业

当请求超过一百万个 token 且可能超出同步超时时间时,请使用异步 GLiNER 接口。将原生 GLiNER 负载提交到:
请求必须包含 text 和 schema;还可接受 threshold、include_confidence 和 include_spans。提交成功后会返回 HTTP 202,其中包含 job_id、status、 estimated_tokens 和 message。 轮询返回的作业 ID,直到 status 为 complete 或 error:
已完成的作业包含 result 和 token_usage。作业的作用域限定为经过身份验证的用户, 因此请使用同一个 API 密钥进行提交和轮询。

重复输入

该端点每个请求接受一段会话。它不支持已移除的原生端点的 text: string[] 批量形式。 处理多个输入时,请并发发送多个独立请求。

错误

有关共享的重试模式,请参阅冷启动与重试。
POST /inference 已被移除。请勿再发送其旧版字段,例如 model_id、text、 task、format_results 或 is_warmup。

旧版请求迁移