问题域/PD-524

SDK 客户端包装

SDK Client Wrapping

透明代理包装第三方 SDK 客户端,在不改变原始 API 的前提下注入增强功能

子问题

1.API 调用拦截与增强

2.同步异步双模式支持

3.上下文自动注入

4.向后兼容性保障

5.同步上下文调用异步检索的事件循环桥接

6.多模态消息格式(Vision content-as-list)的查询提取

各项目的解法1 solutions

Signals

横向对比

维度memU
包装层级三层代理链:Client → Chat → Completions,逐层 __getattr__ 透传
注入方式XML 标签 <memu_context> 追加到 system prompt 末尾
同步异步三级降级:running loop → ThreadPoolExecutor,idle loop → run_until_complete,无 loop → asyncio.run
容错策略bare except 返回空列表,记忆故障不阻断 LLM 调用
作用域隔离user_id + agent_id + session_id 三维 where 过滤
拦截器体系内部 LLMClientWrapper 支持 before/after/on_error 三钩子 + 优先级排序 + 条件过滤

最佳实践

1.使用 __getattr__ 代理未包装的属性保持完全兼容

2.记忆注入失败时 fail-silently 不影响原始调用

3.支持 sync/async 两种调用路径

4.注入前克隆消息列表避免修改用户原始数据

5.工厂函数提供快捷参数降低初始化复杂度

6.内部 LLM 调用与外部 SDK 包装使用独立的 Wrapper 层互不干扰