我们构建了一个源码可用的LLM可靠性库(对研究/个人/内部评估免费),可在保持同等质量的前提下将推理成本降低一半,只需更改一个import语句即可采用 [P] [R]
摘要
AgentCodec 是一个源代码可用的库,它将 28 种 LLM 可靠性技术(如重试、集成、生成器/判别器优化等)统一到单一兼容 OpenAI 的 API 下,并配备自适应路由器,在匹配质量的情况下可降低约 56% 的推理成本。该库采用通信理论框架,支持即插即用替代 OpenAI、Anthropic 和 Ollama 客户端。
**TL;DR:** *可靠性技术*(通过额外推理来提升LLM正确性的方法,例如带反馈的重试、集成、生成/批评精炼、验证通道、难度感知路由)分散在文献中,各自对应论文特有的代码库。我们将**28种可靠性技术**(**21种通信理论方法**,涵盖6个家族,外加**7种先验方法基线**:Self-Consistency、Self-Refine、CoVe、BoN、Weighted BoN、CISC、MoA)统一到单一API下,每种技术都对比未编码的单通道基线,并在顶层部署了**3种自适应路由器**(SemKNN + 两种本地ACM路由器)。然后证明,**根据每段提示词自适应地路由技术**,可以沿着一条质量/成本前沿曲线滑动。**在我们的论文基准测试中,使用一组特定阵容(Nemotron + Devstral作为两个生成器,GLM-5.1作为评判者),与同阵容下最佳固定方法相比,自适应路由器在匹配质量时实现了约56%的成本降低,或者在匹配成本时实现了约7%的质量提升**。一个旋钮(`λ`)即可控制滑动。定性模式(自适应优于固定)应该具有普适性,但绝对数字因阵容而异,我们尚未在其他模型组合上完成全面扫描。采用方式是`改动一个导入`:
```python
- from openai import OpenAI
+ from agentcodec.openai import OpenAI
```
传递 `reliability="harq_ir"`(或28种技术中的任何一种),现有的 `client.chat.completions.create(...)` 调用将保持原生OpenAI响应格式。Anthropic和Ollama也有相同的即插即用封装。
- GitHub:https://github.com/intellerce/agentcodec
- 论文预印本:https://arxiv.org/abs/2605.09121
---
在研究论文中的可靠性方法一段时间后,我们不断遇到同一个障碍:每篇论文都提供自己专属的代码库,有自己的提示格式、评分标准和模型封装器。要评估“在这里应该用self-refine还是best-of-N?”,每次比较都需要一周的管道搭建工作。通信理论的框架将这一切串联起来:LLM是一个随机信道 `Y = A(X) + N`,而**无线领域的每一项可靠性技术,在智能体领域都有直接对应物**:
| 无线领域 | 智能体领域 |
|---|---|
| ARQ / HARQ | 带反馈的重试循环 |
| 分集合并(MRC/SC/EGC) | 集成多个模型 |
| Turbo译码 | 迭代式生成器/批评者相互精炼 |
| 喷泉码 | 无码率采样,当评判者自信时停止 |
| FEC | 答案 + 结构化奇偶校验通道(重新推导、验证、替代方案),通过交叉检查解码 |
| ACM(自适应编码调制) | 根据难度路由 |
我们将所有这些放入一个库中:28种可靠性技术(其中包含7种先验方法基线,并非额外叠加),还有它们对比的未编码单通道基线,加上3种自适应路由器(SemKNN + 两种本地ACM路由器),用于根据每段提示词选择技术。详细分类见README。
## 最简版本
```python
from agentcodec import ReliabilityModule
mod = ReliabilityModule.from_dict({
"models": [
# 空间分集:两个不同家族 = 不相关错误
{"model": "qwen3:8b", "base_url": "http://localhost:11434/v1", "api_key": "ollama"},
{"model": "llama3.1:8b", "base_url": "http://localhost:11434/v1", "api_key": "ollama"},
],
"judge": {"model": "gemma3:12b", "base_url": "http://localhost:11434/v1", "api_key": "ollama"},
"critic": {"same": True},
"strategy": {"type": "fixed", "technique": "harq_ir", "params": {"max_rounds": 4}},
})
result = mod.run("证明前n个奇数的和是n²。", category="reasoning")
print(result.text, result.cost_usd, result.cost_source, result.technique_used)
```
将 `"harq_ir"` 替换为 `"diversity_mrc"`、`"turbo"`、`"fountain"` 等。相同的API,相同的 `ReliabilityResult` 形状,每个输出都有相同的成本来源层级。用于生产环境时,将`strategy`设为 `routed`,库会为每段提示词自动选择技术(简单提示词使用廉价的基线,困难提示词使用 `diversity_mrc`)。
## 三个值得指出的方面
除了技术目录外,实现中还有三个部分花费了实际功夫:
**1. 除2种技术(`acm_soft`、`acm_learned`)外,全部原生异步流式,带有角色标记的事件。** `mod.astream()` 端到端驱动 `AsyncOpenAI` / `AsyncAnthropic` / `httpx.AsyncClient`(无需工作线程桥接),并发出带有角色标记的 TokenEvent:`"answer"`、`"thinking"`、`"draft"`、`"critique"`、`"verification"`、`"candidate"`、`"synthesis"`。因此,当你流式运行HARQ-IR时,可以实时呈现逐轮草稿和批评,而不仅仅是最终答案:
```python
async for ev in mod.astream("解释QUIC与TCP。"):
if isinstance(ev, TokenEvent):
if ev.role == "answer":
print(ev.text, end="", flush=True)
elif ev.role == "draft":
print(f"\n[草稿] {ev.text}")
elif ev.role == "critique":
print(f"\n[批评] {ev.text}")
elif ev.role == "thinking":
pass # 捕获到 result.thinking_text
elif isinstance(ev, FinalEvent):
print(f"\n完成 — {ev.result.technique_used}, "
f"思考成本=${ev.result.thinking_cost_usd:.4f}")
```
并行分支技术通过 `asyncio.gather` 并发展开。`diversity_mrc` 使用两个模型时,确实并行运行,并且你会看到每个分支完成时的 `ProgressEvent`。
**2. 所有后端均支持思考文本捕获。** Anthropic 的 `ThinkingBlock`、OpenAI 的 `reasoning_content`(以及来自 `usage.completion_tokens_details` 的精确 `reasoning_tokens`)、Ollama 的 `msg.thinking`,**以及**内联 `<think>...</think>` 标签剥离(DeepSeek-R1、Qwen3、GLM-4.5+、Nemotron),所有这些都能填充 `result.thinking_text`,并将 `result.cost_usd` 拆分为 `thinking_cost_usd` + `answer_cost_usd`。因此,你终于可以看清 o系列 / Claude / DeepSeek 实际向你收取的费用。
**3. 即插即用兼容封装,带 `expose_reliability_stream=True`。** 默认情况下:封装看起来与原生SDK完全一样,`delta.content` 用于答案,`delta.reasoning_content` 用于推理。草稿/批评被隐藏,以便现有代码保持原样运行。设置该标志后,封装会通过哨兵字段(`delta.agentcodec_role`、`delta.agentcodec_call_id`)暴露内部角色,现有消费者会无害地忽略它们:
```python
from agentcodec.openai import AsyncOpenAI
client = AsyncOpenAI(api_key=KEY, reliability="harq_ir", expose_reliability_stream=True)
# 现在草稿/批评会通过原生OpenAI流传递,并带有哨兵字段。
```
相同的标志和语义也适用于 `agentcodec.anthropic.AsyncAnthropic` 和 `agentcodec.ollama.AsyncClient`。
## 其他有用的小功能
- **内置成本透明度**:每个结果都带有一个 `cost_source` 层级,标明价格获取方式,从 `exact_user_rate`(你提供了费率)经 `openrouter_rate` / `exact_table_rate` / `inferred_table_rate` 到 `default_fallback`,以及仅在可用字符数时的token估算标志。实时定价从OpenRouter获取,本地缓存7天。不再出现“我觉得这次运行花了40美元,也许吧?”的情况。
- **与任何你已有的服务兼容**:OpenAI、Anthropic(原生SDK)、Ollama(原生 + python库 + OpenAI兼容接口)、vLLM、OpenRouter、LM Studio、Together。无需Docker、独立推理服务器或LangChain。
- **严格的配置模式**:YAML/dict配置中的拼写错误会在加载时报错,而不是在第一次 `.run()` 时。
- **195个测试,25个可运行示例**,位于 `examples/` 下:异步流、思考捕获、三个后端的即插即用兼容,以及一个完整注释的YAML配置。
## 注意事项
- **文中的主要数字是针对特定模型阵容的。** 约56%成本/约7%质量的数字来自一次基准测试,使用Nemotron + Devstral作为两个生成器,GLM-5.1作为评判者。我们预计定性模式(自适应路由优于固定)对于其他模型组合也成立,因为这正是框架的初衷,但绝对数字会随阵容而变化,我们尚未完成跨阵容的全
相似文章
@akshay_pachaar:重大突破!自托管LLM的成本刚刚降低了约75%:大多数Agent流水线现在在底层运行4-5个小模型……
Superlinked发布了SIE,一个开源推理引擎,通过一个API提供85+个模型,支持按需加载和LRU逐出,为Agent流水线节省约75%的自托管GPU成本。
我构建了一个开源代理,其推理核心融合了多个LLM(面板、裁判、合成器),而不是路由到单一模型
作者构建了一个开源代理,它使用一组不同的LLM(包括裁判和合成器)来处理困难的推理步骤,同时具备成本感知路由、分层记忆、治理和子代理支持。该软件处于alpha阶段,关于融合效果的基准测试结果不一。
我发布过的最可靠的数据代理,其 ~90% 是确定性代码。LLM 只负责解析意图和进行对话。不服来辩。
作者认为,AI 代理的可靠性来自于确定性代码,而非 LLM,并分享了在混乱的真实世界数据上构建可信代理的五项关键实践。
@AlphaSignalAI:现在你可以在不训练的情况下,将任意LLM的准确率提升2-10倍。大多数团队通过微调或更换更大模型来提高模型准确率…
OptiLLM是一个开源代理,通过在推理时增加额外计算,将任意LLM的准确率提升2-10倍,使用了多智能体交叉验证和蒙特卡洛树搜索等技术。
低延迟系统中工具制作与自进化LLM代理
本文提出了一种方法,将重复的标准操作流程步骤编译为经过验证、有版本管理的工具,在部署前完成,替代推理时的代码生成。在一个配送中心的报警分类系统中,该方法将p50延迟降低了42%,端到端错误率降低了最多53%。