Forge:自托管 LLM 工具调用的可靠性层
为自托管的 LLM 工具调用提供可靠性层,通过防护栏提升多步骤智能体工作流的成功率。
证据显示:代理服务器不认证调用者,但提供--backend-api-key用于后端认证;工具调用需用户定义,但无用户确认机制;数据流透明性部分体现(如代理模式说明不压缩历史);敏感数据处理未提及;依赖仅pydantic和httpx,但未提供漏洞扫描证据;外部影响包括代理可启动后端进程,但文档说明停止时卸载Ollama模型;无回滚机制;来源归属明确(作者和许可证)。扣分:用户确认缺失,敏感数据处理未提及,回滚缺失。
证据显示:项目结构清晰,模块划分合理;依赖pydantic和httpx,均为常见库,但未提供版本锁定;错误处理有ForgeError层次,但失败消息质量未详细评估。扣分:依赖可用性未完全验证,失败消息未详细说明。
证据显示:明确目标用户(开发者),场景包括代理服务器、WorkflowRunner、中间件;能力边界清晰(非编排器、非编码工具);触发条件明确(工具调用时应用防护栏);环境适配支持多种后端和Python版本。扣分:无重大扣分,但环境适配细节未完全验证。
证据显示:信息架构清晰(项目结构、文档链接);安装说明详细(pip install);命名稳定(版本0.9.0);示例丰富(快速开始、代理模式);已知限制明确(代理模式不压缩历史);许可证MIT;版本变更日志存在但未详细;维护责任明确(作者)。扣分:命名稳定性因版本升级有破坏性变更而扣分;版本变更日志未详细。
证据显示:输出可用性高(代理模式兼容OpenAI和Anthropic);边际价值明显(提升模型可靠性);成本效益合理(本地模型降低API成本)。扣分:无重大扣分,但成本效益未量化。
证据显示:README中声称的评估结果有链接(Hugging Face数据集),但未提供原始数据;跨来源验证有限;事实与推断区分不明确。扣分:声称的评估结果未完全可追溯,跨来源验证不足。
- 代理服务器不认证调用者,部署在不可信网络时需自行添加认证层。
- 敏感数据处理(如API密钥、用户数据)未在文档中明确说明,使用前需自行评估。
- 0.9.0版本有破坏性变更,升级前需阅读迁移指南。
这个 Agent 能做什么,适合哪些场景?
Forge 是一个 Python 框架,专注于增强自托管 LLM 的工具调用可靠性。它提供三种使用方式:作为代理服务器(支持 OpenAI 和 Anthropic API 格式)、作为 WorkflowRunner 运行结构化智能体循环,以及作为防护栏中间件集成到现有循环中。Forge 支持多种后端,包括 OpenAI 兼容端点、Ollama、llama-server、Llamafile、vLLM 和 Anthropic。其核心功能包括响应验证、救援解析(处理格式错误的工具调用)、重试循环和可选的步骤强制。Forge 不是智能体编排器,也不是编码工具,而是为单个智能体循环内部提供可靠性。它声称可以将 8B 本地模型的成功率从个位数提升到 84%,并将 Sonnet 4.6 从 85% 提升到 98%。
Forge 提供多种操作模式:python -m forge.proxy 启动一个代理服务器,监听 OpenAI chat-completions 和 Anthropic Messages API,将请求转发到本地模型后端,并透明地应用防护栏,包括响应验证(检查工具调用是否符合请求的 tools 数组)、救援解析(从 JSON 代码块或 XML 标签中提取工具调用)、重试循环(最多 3 次)以及可选的 respond 工具注入。WorkflowRunner 类接受一个包含工具定义和可选步骤约束(如 required_steps、prerequisites、terminal_tool)的 Workflow 对象,并管理完整的生命周期:系统提示、工具执行、上下文压缩(通过 ContextManager 和 TieredCompact 策略)以及防护栏。Guardrails 外观允许在外部循环中应用防护栏。Forge 支持通过 LlamafileClient、OllamaClient、OpenAICompatClient、VLLMClient 和 AnthropicClient 连接后端。
- 使用现有工具(如 opencode、Continue、aider 或 Cline)的开发人员,希望通过
python -m forge.proxy代理服务器获得防护栏,而无需重写代码。 - 构建多步骤智能体工作流的开发人员,通过
WorkflowRunner和SlotWorker管理共享 GPU 推理槽,并支持优先级队列和抢占。 - 在本地模型上进行可靠工具调用,但希望避免格式错误(如 Mistral 的
[TOOL_CALLS]或 Qwen 的 XML)的团队。 - 使用 Claude Code 但希望使用本地模型,同时保留 Anthropic Messages API 兼容性的用户,通过代理服务器设置
ANTHROPIC_BASE_URL。 - 需要监控模型性能的研究人员,通过评估工具(
tests.eval.eval_runner和batch_eval)运行标准化场景。 - 希望在其自定义编排循环中集成防护栏的工程师,使用
Guardrails中间件,而无需采用完整的WorkflowRunner。
这个 Agent 有哪些优点和局限?
- 多重防护栏:响应验证、救援解析和重试循环,显著提升自托管模型的工具调用成功率。
- 三种集成模式:代理服务器、
WorkflowRunner和Guardrails中间件,适用于不同场景。 - 后端灵活性:支持 OpenAI 兼容端点、Ollama、llama-server、Llamafile、vLLM 和 Anthropic。
- 包括评估框架(
eval_runner、batch_eval)和 Hugging Face 数据集,用于测量性能。 - 支持 Anthropic 和 OpenAI API 格式,包括 Claude Code 集成。
- 需要 Python 3.12+,相比旧版本增加了运行时要求。
- 代理模式是单次请求,不支持多轮工作流功能,如上下文压缩或步骤强制执行——这些仅在
WorkflowRunner中可用。 - 托管模式:停止 Forge 不会停止或拥有 Ollama 守护进程,并且某些 Ollama 选项被拒绝。
- 基准数据可能过时:Anthropic 数字在 v0.6.0 中测量,未在 v0.7.0 中重新运行。
- 代理服务器不进行身份验证,管理员需要在网络中信任它。
如何安装或部署这个 Agent?
安装 Forge:pip install forge-guardrails 或 pip install "forge-guardrails[anthropic]"。需要 Python 3.12+。对于开发:git clone https://github.com/antoinezambelli/forge.git && cd forge && pip install -e ".[dev]"。选择一个后端:llama-server(推荐)、Ollama 或 Anthropic。对于 llama-server,从 llama.cpp 发布版下载并运行:llama-server -m path/to/Ministral-3-8B-Instruct-2512-Q8_0.gguf --jinja -ngl 999 --port 8080。对于 Ollama:ollama pull ministral-3:8b-instruct-2512-q4_K_M。对于 Anthropic:设置 ANTHROPIC_API_KEY。
如何使用这个 Agent?
启动一个后端,然后以代理模式运行 Forge:python -m forge.proxy --backend-url http://localhost:8080 --backend llamaserver --port 8081。配置客户端使用 http://localhost:8081/v1 作为 API 基地址。或者,使用 WorkflowRunner:导入 Workflow, ToolDef, ToolSpec, WorkflowRunner, LlamafileClient, ContextManager 和 TieredCompact。定义一个 Workflow 对象,包含工具和可选的步骤约束,并异步运行 runner.run(workflow, "你的提示")。对于评估,使用 python -m tests.eval.eval_runner 或 batch_eval 生成 JSONL 报告。
这个 Agent 与同类方案有什么区别?
Forge 通常与 OpenAI 和 Anthropic API 提供的托管模型进行比较,但它不是像 LangChain 或 AutoGen 这样的编排器。它定位为专门提高工具调用可靠性的层,而不是完整的代理框架。
常见问题
Forge 是代理框架吗?
Forge 可以与 Claude Code 一起使用吗?
/v1/messages),因此您可以设置 ANTHROPIC_BASE_URL=http://localhost:8081 和 ANTHROPIC_AUTH_TOKEN=anything 来将 Claude Code 指向本地模型。Forge 会隐藏对话历史吗?
WorkflowRunner 中可用。