面向边缘与端侧应用的 C++ 算法编排框架。
LLM-EdgeFlow 用算法节点处理规则、检索、文本、图像和语音,由 Pipeline JSON 描述节点连线,供宿主程序通过 C++ Operator SDK 调用。 项目目前处于实际业务接入前的开发与验证阶段,仓库提供可运行示例和自动化测试,模型效果、性能及目标设备适配需按具体场景验收。
首次使用请先完成快速开始,再按任务选择入口:
| 你要做什么 | 主要修改 | 入口 |
|---|---|---|
| 拉方案:组合已有能力 | Pipeline 配置、规则、提示词与连线 | Studio 编排练习 · 修改提示词 |
| 开发 Node:补充业务算法 | 普通 C++ 函数、端口声明和测试 | 自定义 Node 入门 |
| 增加 Adapter:接入请求与响应 | 输入/输出转换器,优先复用现有载体 | 业务接入指南 |
以下命令在仓库根目录执行(Linux CPU;macOS Apple Silicon 使用 macos-arm64-cpu 预设,见跨平台构建)。
构建需要 C++17 编译器、CMake 3.19+、Ninja、Python 3 和 Git;首次构建需联网拉取固定版本依赖,模型权重需单独准备。
git clone https://github.com/chamsechan/LLM-EdgeFlow.git
cd LLM-EdgeFlow
cmake --preset=inferlet-cpu -B build
cmake --build build --target alg_sdk alg_demo alg_pipeline_tool alg_show --parallel 4上述 Linux 构建启用 Inferlet,也可运行无模型示例。其他 Backend 见构建变体;Inferlet 模型运行见 CPU 验证。主要产物:
build/libllm_edgeflow_sdk.so:集成到宿主程序的算法共享库build/alg_demo:统一示例运行入口build/alg_pipeline_tool:查询 Catalog、校验 Pipeline、查看执行计划build/alg_show:在终端查看 Pipeline 节点与连线
运行无需模型权重的关键词匹配示例:
./build/alg_pipeline_tool validate configs/pipeline_keyword_match_rules.json
./build/alg_demo --profile keyword_match_rules \
--dataset tests/fixtures/effects/keyword_inputs.txt \
--output-dir results/quickstart三条输入均处理成功(第一、三条命中 SYSTEM_INIT,第二条未命中),逐条结果与统计写入 results/quickstart/keyword_match_rules/ 下的 results.jsonl 和 summary.json。如需体验运行时更新规则,可执行 ./build/alg_demo --profile keyword_match_control。
# 查询当前构建可用的业务契约与节点
./build/alg_pipeline_tool catalog
./build/alg_pipeline_tool describe-node text_rule_match
# 查看经过校验的执行计划
./build/alg_pipeline_tool plan configs/pipeline_keyword_match_rules.json
# 启动本地 Web 工作台
./tools/pipeline_studio/server.py configs/pipeline_keyword_match_rules.json --web本地 Web 工作台监听 127.0.0.1,支持连线、参数编辑、检查与试运行。后续可按 Studio 编排练习修改规则并用 Demo 验证。
框架自上而下分为四层,通常先复用节点编排 Pipeline,出现能力缺口时再扩展对应层(详见架构设计):
| 职责 | 何时扩展 | 主要入口 |
|---|---|---|
| 接入适配层 · Integration | 请求/响应格式或语义变化,或新增宿主载体 | include/adapter/、include/edgeflow/operator/、src/adapter/ |
| 流程编排层 · Orchestration | 现有配置校验、调度或上下文无法满足需求 | include/core/、src/core/ |
| 能力节点层 · Capability Nodes | 新增领域算法、数据处理或模型调用组合 | src/custom_nodes/(通用操作在 src/common_nodes/) |
| 模型执行层 · Model Execution | 新增模型前后处理语义或接入推理后端 | src/engine/models/、src/engine/backends/ |
一个可运行方案通常包含三类配置(详见运行当前方案与配置目录):
- Pipeline JSON:声明
io.input/io.output转换器、节点连线、模型路径与参数,如 pipeline_keyword_match_rules.json。 - 部署
.conf:通过pipe_path指向目标 Pipeline JSON,如 pipeline_keyword_match_rules.conf。 - Demo Profile(可选):在 demo/profiles.json 中保存业务、配置与数据集预设。
涉及模型的方案需准备匹配的构建变体与模型权重,实际可用能力以目标构建的 ./build/alg_pipeline_tool catalog 为准。
| 场景 | 处理方式 | 配置与运行条件 |
|---|---|---|
| 关注词匹配 | 文本规则匹配与分类 | 配置;无需模型权重 |
| 实体抽取 | LLM 生成与结构化解析 | Inferlet 配置;Linux 默认构建 + 语言模型 |
| 文档问答 | 分块、向量检索与 LLM 回答 | 配置;full-cpu,ONNX Runtime + llama.cpp |
| 对话合规审核 | 检索、精排与 LLM 分析 | 配置;full-cpu,向量/精排/语言模型 |
| Cross-Encoder 精排 | 问题与候选文本相关性评分 | 配置;ONNX Runtime + 精排模型 |
| OCR 票据问答 | 图像转写(纯文本)、字段抽取与问答 | 配置;Kite + 视觉/语言模型,见 kiteLLM 说明 |
| 语音识别与意图 | Whisper 转写与规则分类 | 配置;full-cpu,whisper.cpp |
| 翻译 | JSON 请求中 query 翻译为中文 |
配置;full-cpu,llama.cpp |
查看全部预设或运行无需真实模型的 Smoke 套件(真实模型效果评估见业务效果验收):
./build/alg_demo --list
./build/alg_demo --suite smoke| 目标 | 入口 |
|---|---|
| 查阅全部文档与开发 Skills | 文档目录 |
| 理解节点端口、模型绑定与运行时控制 | Node 常用写法 · Control 入门 |
| 扩展框架、模型或后端 | 开发者指南 · 架构设计 |
| 源码目录、头文件边界与命名约定 | 源码布局与命名 · 配置目录 |
| 准备模型、构建变体与效果验收 | 模型、构建与效果验收 · 发布记录 |
在独立分支上开发,交付前运行完整质量门禁(需 clang-format 18、Java 17+ 及 CMake 所选 Python 环境中的 jsonschema):
./scripts/run_all_tests.sh开发与交付规约见 CONTRIBUTING.md,测试说明见 tests/README.md,Agent 规则见 AGENTS.md。
采用 MIT License,第三方组件及许可见 THIRD_PARTY_NOTICES.md。