@agentaily/llm
多家大模型的统一客户端:一个 Provider 接口 + 各家具体 provider。 零依赖。
各家(DeepSeek、Bailian / 通义千问、Volcengine / 豆包、Anthropic)都建在一个共享的 OpenAI 兼容底座(openai-compat)上;另有一个 mock provider 给测试用。对外统一成 Anthropic 风格的内容块(text / tool_use / tool_result / image),@agentaily/agent 的循环就吃这一套。
ts
import { createDeepSeekProvider, createBailianProvider, createAnthropicProvider } from '@agentaily/llm';
const provider = createDeepSeekProvider({ apiKey });
const res = await provider.send({ system, messages, tools, model: 'deepseek-v4-flash', maxTokens: 2048 });- 工厂:
createOpenAICompatProvider/createDeepSeekProvider/createBailianProvider/createVolcengineProvider/createAnthropicProvider/createMockProvider,各配一个*Options类型。 - provider 负责把统一请求翻成各家线缆形状、再把响应(含
tool_calls)翻回内容块。 - 各家 model id / 端点差异见对应 skill(如
deepseek-api):model id 大小写敏感,OpenAI 端点对未知 id 直接 400。
测试:仓库根 pnpm test(vitest,全工作区)。