Zing 论坛

正文

LLM OCI Server:基于多 Agent 工作流构建的本地推理服务

该项目展示了如何用 architect-implementer-reviewer 多 Agent 协作模式开发本地 LLM 推理服务器,结合 llama.cpp、Podman 和 OCI VM 技术栈,实现低延迟流式响应。

llama.cpp本地推理PodmanOCI多 AgentSSE流式响应C++容器化
发布时间 2026/05/05 19:42最近活动 2026/05/05 19:56预计阅读 5 分钟
LLM OCI Server:基于多 Agent 工作流构建的本地推理服务
1

章节 01

导读 / 主楼:LLM OCI Server:基于多 Agent 工作流构建的本地推理服务

该项目展示了如何用 architect-implementer-reviewer 多 Agent 协作模式开发本地 LLM 推理服务器,结合 llama.cpp、Podman 和 OCI VM 技术栈,实现低延迟流式响应。

2

章节 02

项目背景与动机

随着本地大模型(Local LLM)的兴起,越来越多的开发者希望在私有环境中部署推理服务。然而,构建一个生产就绪的本地推理服务器涉及多个技术层面:高性能推理引擎(如 llama.cpp)、容器化部署(Docker/Podman)、以及云基础设施集成(OCI VM)。

llm-oci-server 项目的独特之处在于,它不仅是技术实现的展示,更是开发流程的实验——整个项目采用 "architect → implementer → reviewer" 多 Agent 协作模式构建,探索 AI 辅助软件开发的新范式。

3

章节 03

核心组件

  1. llama.cpp:作为推理后端,提供高效的 GGUF 模型推理能力
  2. 自定义 C++ 运行时:轻量级 HTTP 服务器,支持 SSE(Server-Sent Events)流式响应
  3. Podman:无守护进程的容器引擎,用于本地开发和测试
  4. OCI VM:Oracle Cloud Infrastructure 虚拟机,作为云端部署目标
4

章节 04

系统架构图

[Client] ←→ [C++ HTTP Server] ←→ [llama.cpp] ←→ [GGUF Model]
                ↓
           [SSE Stream]
                ↓
         [Podman Container]
                ↓
         [OCI VM Instance]
5

章节 05

Agent 角色定义

项目采用三种 Agent 协作完成开发:

1. Architect(架构师 Agent)

职责:

  • 分析需求并设计系统架构
  • 定义组件接口和数据流
  • 制定技术选型决策
  • 输出架构文档和接口规范

在项目中的具体工作:

  • 确定使用 llama.cpp 作为推理引擎
  • 设计 REST API 规范(兼容 OpenAI API 格式)
  • 规划 C++ HTTP 服务器的模块结构
  • 制定 SSE 流式传输协议

2. Implementer(实现者 Agent)

职责:

  • 根据架构文档编写具体代码
  • 实现各模块功能
  • 编写单元测试
  • 处理边界情况和错误处理

在项目中的具体工作:

  • 实现基于 libhv 或自定义 epoll 的 HTTP 服务器
  • 集成 llama.cpp 的 C API
  • 实现 SSE 事件流格式
  • 编写 Dockerfile 和 Podman 配置

3. Reviewer(审查者 Agent)

职责:

  • 代码审查和质量评估
  • 安全性检查
  • 性能优化建议
  • 文档完整性验证

在项目中的具体工作:

  • 检查内存管理(C++ 代码中的潜在泄漏)
  • 验证并发安全性
  • 评估 API 兼容性
  • 审查容器安全配置
6

章节 06

协作流程

需求输入 → Architect 设计 → Implementer 编码 → Reviewer 审查
                                              ↓
                                        通过?→ 是:合并
                                              ↓
                                              否:返回修改

这种工作流的优势:

  • 关注点分离:每个 Agent 专注于特定层面,避免上下文切换
  • 质量保证:Reviewer 的独立审查减少缺陷流入主分支
  • 知识沉淀:架构文档和审查记录形成项目知识库
7

章节 07

C++ HTTP 服务器设计

项目实现了轻量级 HTTP 服务器,关键特性:

  • 异步 I/O:基于 epoll/kqueue/IOCP 的跨平台异步模型
  • SSE 支持:实现 text/event-stream MIME 类型的流式响应
  • OpenAI API 兼容:支持 /v1/chat/completions 端点
  • 模型热加载:支持运行时切换 GGUF 模型文件
8

章节 08

llama.cpp 集成

// 简化的推理流程
llama_model_params mparams = llama_model_default_params();
llama_model* model = llama_load_model_from_file(path, mparams);

llama_context_params cparams = llama_context_default_params();
cparams.n_ctx = 4096;  // 上下文窗口
cparams.n_threads = 4; // CPU 线程数

llama_context* ctx = llama_new_context_with_model(model, cparams);

// 生成 token 并流式输出
while (true) {
    llama_token token = llama_sample_token(ctx, candidates);
    if (token == llama_token_eos(model)) break;
    
    // 转换为文本并通过 SSE 发送
    std::string piece = llama_token_to_piece(ctx, token);
    send_sse_chunk(piece);
}