W
AI-Wiki
SOURCE

Provider Configuration Guide 摘要

文档概览

该页是一份 Hyper-Extract 的 provider 配置指南,目标是说明如何把 Hyper-Extract 配置到不同的大模型/嵌入服务后端上运行,文中明确点名支持三类平台:

  • OpenAI
  • Bailian(Alibaba Cloud)
  • 本地部署的 vLLM

页面的组织方式不是分别解释三套完全不同的用法,而是先给出一个“统一示例(Unified Example)”,用来强调:三种平台执行的是同一个 extraction task,变化的只有最前面的 3 行 client setup。这也是整页最核心的结论。

除 Python 示例外,页面还给出:

  • 对应的 CLI 配置命令
  • create_client() 的字符串简写格式
  • 使用配置文件替代内联参数的方式

关键事实

统一示例的核心结论

原文明确说明,OpenAI、Bailian 与本地 vLLM 运行的都是同一个 extraction task。在示例中,真正变化的只有创建客户端的部分,也就是开头的 provider 配置代码;后续 AutoGraph 的实例化、解析文本的方式,以及最终输出节点数和边数的逻辑都保持一致。

这意味着该页不是在比较不同 provider 的任务能力,而是在说明 Hyper-Extract 用统一接口屏蔽后端差异。

Python 侧关键接口关系

页面中最关键的接口关系有两层:

  1. create_client() 返回两个对象:llm, emb
  2. 这两个对象随后被传入 AutoGraph(llm_client=llm, embedder=emb)

也就是说,Hyper-Extract 在调用侧把“语言模型客户端”和“嵌入器客户端”作为两个明确的依赖注入给 AutoGraph。文中没有把 provider 配置直接写进 AutoGraph 构造,而是通过 create_client() 先得到 llmemb

OpenAI 示例

OpenAI 的 Python 初始化示例是:

from hyperextract import create_client, AutoGraph

llm, emb = create_client("openai", api_key="sk-xxx")

这里展示的是最简 provider 指定方式:只传 provider 名称 "openai",再传 api_key="sk-xxx"。页面没有在此处额外指定模型名,意味着此写法使用预设默认值。

Bailian 示例

Bailian(Alibaba Cloud)的 Python 初始化示例是:

from hyperextract import create_client, AutoGraph

llm, emb = create_client("bailian", api_key="sk-xxx")
# Or override model: create_client("bailian:qwen3.6-plus", api_key="sk-xxx")

该段包含两层信息:

  • 基础写法:create_client("bailian", api_key="sk-xxx")
  • 可覆盖模型:create_client("bailian:qwen3.6-plus", api_key="sk-xxx")

也就是说,Bailian 除了可直接使用 provider 预设外,还能通过 provider:model 这种简写,把 LLM 模型覆盖成 qwen3.6-plus,而嵌入器仍沿用预设。

本地 vLLM 示例

本地 vLLM 示例没有只写 provider 名,而是分别为 LLM 与 embedder 指定完整字符串:

from hyperextract import create_client, AutoGraph

llm, emb = create_client(
 llm="vllm:Qwen3.5-9B@http://localhost:8000/v1",
 embedder="vllm:bge-m3@http://localhost:8001/v1",
 api_key="dummy",
)

这里保留了几个重要细节:

  • LLM 指向:vllm:Qwen3.5-9B@http://localhost:8000/v1
  • Embedder 指向:vllm:bge-m3@http://localhost:8001/v1
  • api_key 传的是 "dummy",说明本地部署场景下接口仍保留这个参数位,但示例中使用占位值

这说明在 vLLM 场景里,页面强调的是“全手动指定”模式:不仅要声明 provider 为 vllm,还要显式给出模型名和服务 URL,而且 LLM 与向量嵌入服务可以分别挂到不同端口。

示例任务内容

三个 provider 共用的 extraction task 代码为:

graph = AutoGraph(
 instruction="Extract people and their relationships",
 llm_client=llm,
 embedder=emb,
 node_key_extractor=lambda n: n.name,
 edge_key_extractor=lambda e: (e.source, e.target, e.type),
 nodes_in_edge_extractor=lambda e: (e.source, e.target),
)

text = "Zhang San founded ByteDance. Li Si serves as CEO."
graph.parse(text)
print(f"Nodes: {len(graph.nodes)}, Edges: {len(graph.edges)}")

该示例任务的要点包括:

  • AutoGraph 的指令是:Extract people and their relationships,即抽取人物及其关系
  • llm_client=llmembedder=emb 使用的正是 create_client() 返回的两个对象
  • node_key_extractor 取节点的 name
  • edge_key_extractor(e.source, e.target, e.type) 作为边的唯一键
  • nodes_in_edge_extractor 从边中抽取 (e.source, e.target)
  • 解析文本为:Zhang San founded ByteDance. Li Si serves as CEO.
  • 最终输出的是 graph.nodesgraph.edges 的数量,即打印节点数与边数

页面没有直接给出这个输入最终会产生多少个 nodes 和多少个 edges,但明确说明代码会打印这两个数量。

重要细节

CLI 对应配置

页面给出了一组与 Python 配置相对应的 CLI 命令:

平台命令
OpenAIhe config init -p openai -k sk-xxx
Bailianhe config init -p bailian -k sk-xxx
vLLMhe config init → 选择 local vLLM
Mixed(LLM=Bailian, Embedder=vLLM)he config llm -p bailian -k sk-xxx + he config embedder -p vllm -u http://localhost:8001/v1 -k dummy

这里的关键信息不只是“有 CLI”,还包括以下边界:

  • OpenAI 与 Bailian 可以直接在 he config init 时通过 -p-k 一次初始化
  • vLLM 的示例不是一条带全参数的固定命令,而是先执行 he config init,再在交互式流程中选择 local vLLM
  • 页面明确展示了“混合配置”场景:LLM 可来自 Bailian,而 Embedder 来自 vLLM,本页因此隐含支持 LLM 与嵌入器后端分离配置

字符串简写格式

create_client() 支持紧凑字符串语法,页面把它总结为三种格式:

格式示例结果
provider"bailian"使用预设默认的 LLM + embedder
provider:model"bailian:qwen3.6-plus"覆盖 LLM 模型,保留预设 embedder
provider:model@url"vllm:Qwen3.5-9B@localhost:8000/v1"完整手动指定

这部分是理解 Hyper-Extract Client String Shorthand 的直接来源。尤其要注意:

  • provider 级别表示最简写法,依赖预设
  • provider:model 只覆盖模型,不等于完全手工配置
  • provider:model@url 才是把 provider、模型和服务地址都一起显式写出

页面给出的完整手工指定例子与本地 vLLM 示例相呼应。虽然表格中的示例写成 @localhost:8000/v1,但前文正式代码示例中使用的是带协议头的 @http://localhost:8000/v1。整理时应优先保留代码示例里的完整 URL 写法。

使用配置文件替代内联配置

如果不想在代码里每次显式写 provider 参数,页面建议先运行一次 he config init,然后在 Python 中使用 Template.create()get_client()。示例代码为:

from hyperextract import get_client, AutoGraph

llm, emb = get_client() # Reads ~/.he/config.toml
graph = AutoGraph(..., llm_client=llm, embedder=emb)

这里可以确认几个事实:

  • get_client() 会读取 ~/.he/config.toml
  • 它同样返回 llm, emb
  • 即使改为配置文件模式,AutoGraph 侧仍然通过 llm_client=llm, embedder=emb 接收这两个对象
  • 页面还提到可使用 Template.create(),但摘录中没有展开其示例

因此,文件配置并没有改变运行时接口,只是把 provider 选择和参数来源从代码内联转移到配置文件。

相关条目