llm
模型客户端——多模型降级链/任务级预算/成本记账/分阶段路由/LLM 调用观测
概况
| 项 | 值 |
|---|---|
| 层 | tier 2 · 集成层(依赖 tier 0/1 + 重第三方地板) |
| oekit 对应 | httpx |
| 仓内依赖 | textx |
| 被依赖 | agent |
| 第三方地板 | github.com/cloudwego/eino、github.com/meguminnnnnnnnn/go-openai、github.com/cloudwego/eino-ext/components/model/openai、golang.org/x/time |
| 包数 | 6 |
安装
bash
go get github.com/oagentkit/llm@latest源码与该仓 AGENTS.md:oagentkit/llm
包
| 包 | 说明 |
|---|---|
llm | 模型客户端:多模型降级链、任务级预算、成本记账、分阶段路由、主备切换 |
llm/port | 窄接口层(不引 eino):Complete(ctx,req) 形态的降级链/预算/成本记账;无 eino 的内核(预算/成本/价表/熔断)由根包下沉而来,两条路径共用同一份实现 |
llm/wrap | 调用包装与限流适配 |
llm/llmtest | 模型层契约测试套件 |
obsx | eino callbacks 体系的 LLM 调用追踪 + token 用量采集 + 分阶段打标(自 obs/obsx 迁入) |
llm/decision | System One 协议判定面客户端(非自回归判定模型):choice/score/noul 三原语 + 校准置信口径(本地算,两端同义) |
本仓硬规则
以下约束出自该仓 AGENTS.md。改代码前先读仓库根目录的 AGENTS.md,此处是摘要,不是替代。
- 降级链的每一跳都必须记录原因(成本/限流/超时/内容策略),不得静默换模型。
- 预算判定必须在调用前,不能事后扣减 —— 事后扣减等于没有预算。
- panic 不能只转成 error。
RunSafe*系列会把 panic 收进全局PanicHandler(库不接SetPanicHandler,默认log.Printf)且返回的panic: X无哨兵类型, 无法挂回领域上下文。用RunSafeErr前先确认丢掉的结构化上下文可接受。 obsx自obs/obsx迁入(v0.12.0):它绑 eino 框架(callbacks 适配层),而本仓早已 import 它做成本记账与阶段打标——同一关注点,两个包住一起更顺。
日志约定
- 日志走
oekit/logx,组件 logger 用logx.Delegating("oagentkit-llm"), 禁止Default()/WithService声明包级 logger。 - 模型请求/响应落日志前必须脱敏(凭据与用户数据都可能出现在 prompt 里)。
相关
- 架构总览 —— 分层不变量与依赖方向
- AI Agent 编排
- 模型调用与路由
- 可观测