HugeGraph-LLM SDK 快速上手
hugegraph-llm-sdk 是面向独立 Python 项目的轻量级 SDK,提供编程式 Schema 设计、非结构化文本属性图抽取、遵循 HugeGraph 规则的结构校验,以及多轮模型审阅与有限修复能力。
与完整的 hugegraph-llm 应用不同,该 SDK 采用无界面(Headless)设计,无需依赖 HugeGraph Server、Gradio Web 界面、FastAPI 服务或向量数据库。基础运行环境仅依赖 pydantic>=2.14,<3。
Apache License 2.0 · Ask DeepWiki
环境要求与安装
- Python 版本:
>=3.12(在 Python 3.12、3.13 与 3.14 上均通过验证与支持)。 - 发行包名:
hugegraph-llm-sdk - 导入模块名:
hugegraph_llm_sdk
从源码或本地 wheel 安装
当前 SDK 随 hugegraph-ai 源码提供,尚未发布到公共软件包索引。请从本地源码目录或自行构建的 wheel 安装。
模型厂商适配器(Extras)
请从同一源码目录安装所需的适配器 extra:
快速上手:最小示例
以下展示使用自定义模型函数完成“设计 Schema → 校验 Schema → 抽取并审阅属性图”的完整流程:
核心接口说明
| 接口名称 | 签名 | 说明 |
|---|---|---|
design_schema | (texts, *, model, questions=(), example_schema=None, prompt=None) -> SchemaDraft | 根据文本与问题生成候选图结构草案(SchemaDraft(schema, issues))。 |
adesign_schema | (texts, *, model, questions=(), example_schema=None, prompt=None) -> SchemaDraft | 异步版本的 Schema 设计接口。 |
validate_schema | (schema) -> list[Issue] | 校验 Schema 结构是否符合 HugeGraph 属性图约束,不修改输入对象。 |
extract_graph | (texts, *, schema, model=None, model_factory=None, review=True, options=None, prompts=None, validators=()) -> ExtractionResult | 执行分块图抽取、结构校验以及多轮审阅修复循环。 |
aextract_graph | (texts, *, schema, model=None, model_factory=None, review=True, options=None, prompts=None, validators=()) -> ExtractionResult | 异步版本的图抽取接口。 |
Schema 校验规则
validate_schema检查顶点标签、边标签、主键策略(DEFAULT、AUTOMATIC、PRIMARY_KEY、CUSTOMIZE_STRING、CUSTOMIZE_NUMBER、CUSTOMIZE_UUID)以及属性声明。- 省略
propertykeys时,不对全局属性引用作硬性约束;省略标签的properties时,不限制其属性集合。 - 显式声明
properties: []表示该标签严禁携带任何属性。 - 边标签的
sort_keys不能同时属于nullable_keys;当frequency为SINGLE或DEFAULT时禁止排序键,为MULTIPLE时必须声明非空排序键。
模型适配器
SDK 在 hugegraph_llm_sdk.providers 模块中提供了常见大模型的适配器:
FunctionModel:包装任意同步函数generate(prompt: str) -> str或异步函数agenerate(prompt: str) -> str。OpenAIClient:适用于 OpenAI 及兼容接口的适配器(支持close()与await aclose()显式资源释放)。OllamaClient:适用于本地私有化 Ollama 服务的适配器。LiteLLMClient:基于 LiteLLM 路由连接池的适配器。ThreadedModel:包装同步模型,在异步事件循环中通过独立工作线程执行模型调用,避免阻塞主循环。
审阅与有限修复机制
默认情况下,属性图抽取会执行迭代审阅与有限自动修复流程:
审阅参数可通过 ExtractionOptions 进行配置:
分块与整体状态
- 分块状态(Chunk status):
final:子图成功通过结构校验与模型审阅。只有final状态的分块会被合并到全局result.graph中。candidate:通过了结构校验,但审阅配额耗尽或未能完成最终核对。blocked:未能通过 Schema 校验修复,或被模型审阅判定存在明显事实错误予以拦截。failed:在准备、调用或解析阶段发生异常。
- 整体状态(Aggregate status):
succeeded:所有文本分块均达成final状态。partial:至少一个分块达成final,但同时存在未完成(candidate、blocked 或 failed)的分块。failed:没有任何分块达成final状态。
并发与异步批量抽取
当配置 max_workers > 1 时,必须传入无参 model_factory 可调用对象,而不是单一的 model 实例,以保证各并发线程状态隔离:
SDK 会自动管理由 model_factory 创建的实例生命周期,每批 Worker 执行完毕后自动释放对应连接资源。
与 HugeGraph-LLM 的关系
hugegraph-llm-sdk 与 hugegraph-llm 同属 hugegraph-ai 代码仓库:
hugegraph-llm-sdk:适合嵌入数据处理流水线、LLM Agent 工具链或外部 Python 应用中,专门负责 Schema 建模与属性图提取。hugegraph-llm:面向终端用户的完整生产服务,提供 Web 界面、RESTful API(POST /graph/extract、POST /rag)、向量索引持久化与图数据直接入库能力。