Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

agentkits

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

agentkits - npm Package Compare versions

Comparing version
1.10.2
to
2.0.0
+29
-0
dist/cost/cost.test.js

@@ -42,2 +42,31 @@ import { describe, it, expect } from 'vitest';

});
describe('getPricing – new providers', () => {
it('returns grok pricing', () => {
const result = getPricing('grok');
expect(result.length).toBeGreaterThan(0);
expect(result[0].provider).toBe('grok');
});
it('returns cohere LLM and embedding pricing', () => {
const result = getPricing('cohere');
expect(result.length).toBeGreaterThanOrEqual(2);
const llm = result.find(p => p.model === 'command-r-plus');
const emb = result.find(p => p.model === 'embed-english-v3.0');
expect(llm).toBeDefined();
expect(emb).toBeDefined();
expect(emb.embeddingPer1M).toBe(0.10);
});
it.each(['grok', 'groq', 'perplexity'])('estimateCost works for %s', (provider) => {
const cost = estimateCost(provider, { promptTokens: 1000, completionTokens: 500 });
expect(cost.totalCost).toBeGreaterThan(0);
});
it.each(['yi', 'baichuan', 'siliconflow', 'stepfun', 'fireworks', 'together'])('estimateCost works for %s', (provider) => {
const cost = estimateCost(provider, { promptTokens: 1000, completionTokens: 500 });
expect(cost.totalCost).toBeGreaterThan(0);
});
it.each(['jina', 'voyage'])('getPricing returns embedding for %s', (provider) => {
const result = getPricing(provider);
expect(result.length).toBeGreaterThan(0);
expect(result[0].embeddingPer1M).toBeDefined();
});
});
describe('comparePricing', () => {

@@ -44,0 +73,0 @@ it('returns LLM pricing by default', () => {

@@ -27,2 +27,12 @@ /**

{ provider: 'minimax', model: 'MiniMax-Text-01', currency: 'CNY', inputPer1M: 1.00, outputPer1M: 8.00, updated: '2026-04' },
{ provider: 'grok', model: 'grok-3', currency: 'USD', inputPer1M: 3.00, outputPer1M: 15.00, updated: '2026-04' },
{ provider: 'cohere', model: 'command-r-plus', currency: 'USD', inputPer1M: 2.50, outputPer1M: 10.00, updated: '2026-04' },
{ provider: 'yi', model: 'yi-large', currency: 'CNY', inputPer1M: 20.00, outputPer1M: 20.00, updated: '2026-04' },
{ provider: 'baichuan', model: 'Baichuan4', currency: 'CNY', inputPer1M: 100.00, outputPer1M: 100.00, updated: '2026-04' },
{ provider: 'siliconflow', model: 'deepseek-ai/DeepSeek-V3', currency: 'CNY', inputPer1M: 2.00, outputPer1M: 8.00, updated: '2026-04' },
{ provider: 'stepfun', model: 'step-2-16k', currency: 'CNY', inputPer1M: 38.00, outputPer1M: 120.00, updated: '2026-04' },
{ provider: 'fireworks', model: 'accounts/fireworks/models/llama-v3p1-70b-instruct', currency: 'USD', inputPer1M: 0.90, outputPer1M: 0.90, updated: '2026-04' },
{ provider: 'together', model: 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo', currency: 'USD', inputPer1M: 0.88, outputPer1M: 0.88, updated: '2026-04' },
{ provider: 'groq', model: 'llama-3.3-70b-versatile', currency: 'USD', inputPer1M: 0.59, outputPer1M: 0.79, updated: '2026-04' },
{ provider: 'perplexity', model: 'sonar-pro', currency: 'USD', inputPer1M: 3.00, outputPer1M: 15.00, updated: '2026-04' },
{ provider: 'ollama', model: 'any', currency: 'USD', inputPer1M: 0, outputPer1M: 0, updated: '2026-04' },

@@ -36,2 +46,5 @@ // Embedding

{ provider: 'zhipu', model: 'embedding-3', currency: 'CNY', inputPer1M: 0.50, outputPer1M: 0, embeddingPer1M: 0.50, updated: '2026-04' },
{ provider: 'cohere', model: 'embed-english-v3.0', currency: 'USD', inputPer1M: 0.10, outputPer1M: 0, embeddingPer1M: 0.10, updated: '2026-04' },
{ provider: 'jina', model: 'jina-embeddings-v3', currency: 'USD', inputPer1M: 0.02, outputPer1M: 0, embeddingPer1M: 0.02, updated: '2026-04' },
{ provider: 'voyage', model: 'voyage-3', currency: 'USD', inputPer1M: 0.06, outputPer1M: 0, embeddingPer1M: 0.06, updated: '2026-04' },
{ provider: 'ollama', model: 'nomic-embed-text', currency: 'USD', inputPer1M: 0, outputPer1M: 0, embeddingPer1M: 0, updated: '2026-04' },

@@ -38,0 +51,0 @@ ];

+2
-3
{
"name": "agentkits",
"version": "1.10.2",
"version": "2.0.0",
"description": "Multi-provider AI toolkit for agents. One interface, any model.",

@@ -13,5 +13,4 @@ "type": "module",

".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
"types": "./dist/index.d.ts"
},

@@ -18,0 +17,0 @@ "./errors": {

+275
-320
<div align="center">
# 📊 AgentKits
# 🧰 AgentKits
**带记忆的 OpenRouter:统一模型 API + 智能推荐 + 记忆增强**
**多模型 AI 智能体工具库 · Multi-provider AI toolkit for agents**
[![npm version](https://img.shields.io/badge/npm-v1.9.0-blue?style=flat-square)](https://www.npmjs.com/package/agentkits)
[![npm version](https://img.shields.io/npm/v/agentkits.svg?style=flat-square)](https://www.npmjs.com/package/agentkits)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg?style=flat-square)](LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.7+-blue.svg?style=flat-square)](https://www.typescriptlang.org/)
[![Tests](https://img.shields.io/badge/tests-571%20passing-brightgreen.svg?style=flat-square)](#)
[![Node.js](https://img.shields.io/badge/node-%3E%3D18-green.svg?style=flat-square)](https://nodejs.org/)
**一个 API 接入所有 LLM,自动推荐最优模型,每次调用自带记忆增强。**
*19 个大模型 · 15 个向量化引擎 · 40 个功能模块 · 零锁定*
[快速开始](#快速开始) · [功能亮点](#功能亮点) · [模型列表](#支持模型) · [API 参考](#api-参考) · [English](#english-version)
[Quick Start](#快速开始-quick-start) · [Providers](#大模型供应商-llm-providers) · [Modules](#模块目录-module-catalog)

@@ -19,247 +21,260 @@ </div>

## 快速开始
## 为什么选择 AgentKits?
```bash
npm install agentkits
```
构建 AI 智能体不应被锁定在单一供应商。AgentKits 提供**统一接口**,覆盖 19 个大模型和 15 个向量化引擎。切换模型只需改一个配置,无需重写代码。
```typescript
import { recommendModel, createChat, withBrain } from 'agentkits';
> **🇨🇳 深度支持中国大模型生态**:通义千问、智谱AI、月之暗面、零一万物、硅基流动、阶跃星辰、百川智能、DeepSeek深度求索、MiniMax — 一等公民,不是附加品。
// 🎯 智能推荐:按任务 + 预算自动选最优模型
const picks = recommendModel({ task: 'coding', budget: 'medium' });
console.log(picks[0]);
// { model: 'deepseek-coder-v2', provider: 'deepseek', reason: 'Best cost/perf for coding tasks', ... }
```ts
import { createChat, createEmbedding } from 'agentkits';
// 🤖 统一调用:切换供应商只改一个词
const chat = createChat({ provider: 'deepseek', model: 'deepseek-chat' });
const reply = await chat.complete('用 TypeScript 写一个快排');
// 切换供应商只需改一个词
const chat = createChat({ provider: 'deepseek' }); // 深度求索
const reply = await chat.complete('解释量子计算');
// 🧠 记忆增强:自动从 DeepBrain 召回上下文
const smartChat = withBrain(chat.complete.bind(chat), { brainUrl: 'http://localhost:3333' });
const response = await smartChat({ messages: [{ role: 'user', content: '继续优化昨天的方案' }] });
const emb = createEmbedding({ provider: 'dashscope' }); // 通义千问
const vector = await emb.embed('你好世界');
```
---
## 快速开始 Quick Start
## 功能亮点
```bash
npm install agentkits
```
| | 功能 | 说明 |
|---|---|---|
| 🤖 | **统一模型 API** | OpenAI / Anthropic / Google / DeepSeek / 通义 / 智谱 / Moonshot / Ollama — 一个接口搞定 |
| 🎯 | **智能推荐** | `recommendModel()` 按任务 + 预算 + 速度推荐最优模型 |
| 💰 | **成本估算** | `estimateModelCost()` 20+ 模型精确定价,按 token 算钱 |
| 🏥 | **健康检查** | `checkProvider()` 7 个 provider 实时可用性 + 延迟检测 |
| 🧠 | **记忆增强** | `withBrain()` 每次调用自动串联 DeepBrain,recall → chat → learn |
| 🎨 | **Web UI** | `KitsUI` 模型管理面板 + Playground,零配置启动 |
| 📊 | **40 个模块** | RAG / Agent / 工作流 / MCP / A2A / 视觉 / TTS / STT / 护栏 |
### 对话补全 Chat
---
```ts
import { createChat } from 'agentkits';
## 支持模型
// 使用任意供应商
const chat = createChat({ provider: 'deepseek', model: 'deepseek-chat' });
const reply = await chat.complete('你好!');
### LLM 大模型 (19 providers)
// 流式输出
for await (const chunk of chat.stream('给我讲个故事')) {
process.stdout.write(chunk.content ?? '');
}
```
| 模型 | 供应商 | 输入价格 ($/1M tokens) | 输出价格 ($/1M tokens) | 上下文窗口 | 最佳场景 |
|------|--------|----------------------|----------------------|-----------|---------|
| gpt-4o | OpenAI | $2.50 | $10.00 | 128K | 通用、视觉、编程 |
| gpt-4o-mini | OpenAI | $0.15 | $0.60 | 128K | 简单任务、快速 |
| claude-3.5-sonnet | Anthropic | $3.00 | $15.00 | 200K | 推理、编程 |
| claude-3-haiku | Anthropic | $0.25 | $1.25 | 200K | 快速、低成本 |
| gemini-1.5-pro | Google | $1.25 | $5.00 | 2M | 超长上下文分析 |
| gemini-2.5-flash | Google | $0.15 | $0.60 | 1M | 快速、低成本 |
| deepseek-chat | DeepSeek 深度求索 | $0.14 | $0.28 | 128K | GPT-4 级质量,极致性价比 |
| deepseek-reasoner | DeepSeek 深度求索 | $0.55 | $2.19 | 128K | 深度推理 |
| qwen-turbo | 通义千问 | $0.04 | $0.08 | 128K | 快速、超低成本 |
| qwen-plus | 通义千问 | $0.11 | $0.28 | 128K | 中等质量 |
| glm-4-flash | 智谱 AI | $0.01 | $0.01 | 128K | 近乎免费 |
| glm-4-plus | 智谱 AI | $7.00 | $7.00 | 128K | 高质量中文 |
| moonshot-v1-8k | 月之暗面 (Kimi) | $0.17 | $0.17 | 8K | 中文对话 |
| grok-2 | xAI | — | — | 128K | 实时信息 |
| 本地模型 | Ollama | 免费 | 免费 | 可变 | Llama3 / Qwen2.5 / 任意 |
### 向量化 Embedding
还支持:Yi (零一万物)、Baichuan (百川)、SiliconFlow (硅基流动)、StepFun (阶跃星辰)、MiniMax、Cohere、Fireworks、Together、Groq、Perplexity、Custom (任意 OpenAI 兼容)。
```ts
import { createEmbedding } from 'agentkits';
### 向量化引擎 (15 providers)
const emb = createEmbedding({ provider: 'dashscope' }); // 通义千问向量化
const vector = await emb.embed('语义搜索');
const batch = await emb.embedBatch(['文档1', '文档2', '文档3']);
```
| 模型 | 供应商 | 维度 | 价格 ($/1M tokens) |
|------|--------|------|-------------------|
| text-embedding-3-small | OpenAI | 1536 | $0.02 |
| text-embedding-3-large | OpenAI | 3072 | $0.13 |
| text-embedding-004 | Google | 768 | — |
| text-embedding-v3 | 通义千问 | 1024 | — |
| embedding-3 | 智谱 AI | 2048 | — |
| jina-embeddings-v3 | Jina | 1024 | — |
| nomic-embed-text | Ollama | 768 | 免费 |
### 函数调用 Tool Calling
还支持:DeepSeek、SiliconFlow、Cohere、Voyage、Mixedbread、Fireworks、Together、Custom。
```ts
import { createToolChat, defineTool } from 'agentkits';
---
const weather = defineTool({
name: 'get_weather',
description: '获取城市天气',
parameters: { type: 'object', properties: { city: { type: 'string' } }, required: ['city'] },
handler: async ({ city }) => `${city}:晴,25°C`,
});
## API 参考
const chat = createToolChat({ provider: 'zhipu', tools: [weather] }); // 智谱AI
const result = await chat.run('北京今天天气怎么样?');
```
### 智能推荐
### 工作流引擎 Workflow
```typescript
import { recommendModel, estimateModelCost } from 'agentkits';
```ts
import { createWorkflow } from 'agentkits';
// 按任务 + 预算推荐
const picks = recommendModel({
task: 'coding', // 'chat' | 'coding' | 'analysis' | 'embedding' | 'vision'
budget: 'low', // 'free' | 'low' | 'medium' | 'high'
speed: 'fast', // 'fast' | 'medium' | 'slow'
local: false, // true = 仅推荐 Ollama 本地模型
const workflow = createWorkflow({
name: 'research-pipeline',
startStep: 'search',
steps: [
{
id: 'search', type: 'tool',
tool: { name: 'search', handler: async (input) => await searchWeb(input.query) },
input: (ctx) => ({ query: ctx.variables.topic }),
output: 'searchResults', next: 'summarize',
},
{
id: 'summarize', type: 'llm',
llm: { provider: 'deepseek', prompt: '总结以下内容:{{searchResults}}' },
output: 'summary',
},
],
});
// → [{ model, provider, reason, estimatedCostPer1kTokens, speed, quality }]
// 精确成本估算
const cost = estimateModelCost('gpt-4o', 5000, 2000);
// → { cost: 0.0325, currency: 'USD', breakdown: { input: 0.0125, output: 0.02 } }
```
### 统一对话
### MCP 客户端
```typescript
import { createChat } from 'agentkits';
```ts
import { createMCPClient } from 'agentkits';
const chat = createChat({ provider: 'deepseek', model: 'deepseek-chat' });
const reply = await chat.complete('你好');
// 流式输出
for await (const chunk of chat.stream('给我讲个故事')) {
process.stdout.write(chunk.content ?? '');
}
const mcp = await createMCPClient({ serverUrl: 'http://localhost:3001/sse' });
const tools = await mcp.listTools();
const result = await mcp.callTool('search', { query: 'hello' });
```
### 记忆增强 (DeepBrain)
### A2A 协议(Agent-to-Agent)
```typescript
import { withBrain, recall, learn } from 'agentkits';
```ts
import { createA2AClient, createA2AServer } from 'agentkits';
// 中间件模式:自动 recall → chat → learn
const smartChat = withBrain(originalChatFn, {
brainUrl: 'http://localhost:3333',
agentId: 'my-agent',
autoRecall: true,
autoLearn: true,
recallLimit: 5,
const client = createA2AClient({ baseUrl: 'http://localhost:8080' });
const card = await client.getAgentCard();
const task = await client.sendTask({
id: 'task-1',
message: { role: 'user', parts: [{ type: 'text', text: '研究AI趋势' }] },
});
// 手动调用
const memories = await recall('昨天的讨论', { brainUrl: 'http://localhost:3333' });
await learn('新的知识点...', { brainUrl: 'http://localhost:3333' });
```
### 健康检查
### 可运行示例 Runnable Examples
```typescript
import { checkProvider } from 'agentkits';
`examples/` 目录提供 6 个开箱即用的 `.mjs` 示例,`node` 直接运行:
const status = await checkProvider('openai', { apiKey: 'sk-...' });
// → { available: true, latencyMs: 234 }
| 文件 | 说明 |
|------|------|
| [chat-basic.mjs](examples/chat-basic.mjs) | 最简对话(3 行代码)|
| [chat-stream.mjs](examples/chat-stream.mjs) | 流式输出,逐字打印 |
| [embedding-search.mjs](examples/embedding-search.mjs) | 文本向量化 + 余弦相似度搜索 |
| [rag-pipeline.mjs](examples/rag-pipeline.mjs) | 完整 RAG 流程(分块 → 向量化 → 检索 → 生成)|
| [multi-provider.mjs](examples/multi-provider.mjs) | 同一问题发给多个供应商,对比回答 |
| [benchmark.mjs](examples/benchmark.mjs) | 响应速度、TTFT、Token 数基准测试 |
// 支持的 provider: openai, anthropic, gemini, deepseek, moonshot, zhipu, ollama
```bash
# 设置环境变量
export GEMINI_API_KEY=your-key
# 运行任意示例
node examples/chat-basic.mjs
node examples/chat-stream.mjs
node examples/embedding-search.mjs
node examples/rag-pipeline.mjs
node examples/multi-provider.mjs
# 基准测试(支持 --providers 指定供应商)
node examples/benchmark.mjs --providers gemini,deepseek,groq
```
### Web UI
---
```typescript
import { KitsUI } from 'agentkits';
## 大模型供应商 LLM Providers (29)
const ui = new KitsUI({ port: 4002 });
await ui.start();
// 打开 http://localhost:4002 → 模型管理面板 + Playground
```
| 供应商 Provider | 中文名 | 模型 Models | 流式 | 函数调用 | 视觉 |
|---------|--------|------------|------|---------|------|
| **OpenAI** | — | GPT-4o, GPT-4o-mini, o1, o3 | ✅ | ✅ | ✅ |
| **Gemini** | — | Gemini 2.0/1.5 Pro/Flash | ✅ | ✅ | ✅ |
| **DeepSeek** | 深度求索 | DeepSeek-V3, R1 | ✅ | ✅ | ❌ |
| **DashScope** | 通义千问 | Qwen-Max/Plus/Turbo | ✅ | ✅ | ✅ |
| **Zhipu** | 智谱AI | GLM-4, GLM-4V | ✅ | ✅ | ✅ |
| **Moonshot** | 月之暗面 (Kimi) | moonshot-v1 | ✅ | ✅ | ❌ |
| **Yi** | 零一万物 | Yi-Large | ✅ | ✅ | ❌ |
| **Baichuan** | 百川智能 | Baichuan-4 | ✅ | ✅ | ❌ |
| **SiliconFlow** | 硅基流动 | 多模型聚合 | ✅ | ✅ | ❌ |
| **StepFun** | 阶跃星辰 | Step-2 | ✅ | ✅ | ❌ |
| **MiniMax** | MiniMax | abab6.5s | ✅ | ✅ | ❌ |
| **Grok** | — | grok-2 | ✅ | ✅ | ❌ |
| **Cohere** | — | Command R+ | ✅ | ✅ | ❌ |
| **Fireworks** | — | FireFunction, Mixtral | ✅ | ✅ | ❌ |
| **Together** | — | Llama, Mixtral | ✅ | ✅ | ❌ |
| **Groq** | — | Llama, Mixtral | ✅ | ✅ | ❌ |
| **Perplexity** | — | Sonar | ✅ | ❌ | ❌ |
| **Ollama** | 本地部署 | 任意本地模型 | ✅ | ✅ | ✅ |
| **Custom** | 自定义 | 任意 OpenAI 兼容 | ✅ | ✅ | ✅ |
### 更多能力
### 向量化引擎 Embedding Providers (18)
```typescript
// 向量化
import { createEmbedding } from 'agentkits';
const emb = createEmbedding({ provider: 'openai' });
const vector = await emb.embed('语义搜索');
| 供应商 Provider | 中文名 | 模型 Models | 维度 |
|---------|--------|------------|------|
| **OpenAI** | — | text-embedding-3-small/large, ada-002 | 256–3072 |
| **Gemini** | — | text-embedding-004 | 768 |
| **DashScope** | 通义千问 | text-embedding-v3 | 1024 |
| **DeepSeek** | 深度求索 | (兼容接口) | 可变 |
| **Zhipu** | 智谱AI | embedding-3 | 2048 |
| **SiliconFlow** | 硅基流动 | 多模型 | 可变 |
| **Cohere** | — | embed-v3 | 1024 |
| **Jina** | — | jina-embeddings-v3 | 1024 |
| **Voyage** | — | voyage-3 | 1024 |
| **Mixedbread** | — | mxbai-embed-large | 1024 |
| **Nomic** | — | nomic-embed-text | 768 |
| **Fireworks** | — | nomic, thenlper | 可变 |
| **Together** | — | 多模型 | 可变 |
| **Ollama** | 本地部署 | 任意本地模型 | 可变 |
| **Custom** | 自定义 | 任意兼容接口 | 可变 |
// 函数调用
import { createToolChat, defineTool } from 'agentkits';
const tool = defineTool({ name: 'search', description: '搜索', parameters: {...}, handler: async (p) => '...' });
const chat = createToolChat({ provider: 'openai', tools: [tool] });
---
// RAG 管线
import { createRAG } from 'agentkits';
const rag = createRAG({ chatProvider: 'deepseek', embeddingProvider: 'openai' });
## 模块目录 Module Catalog
// Agent 循环
import { createAgent } from 'agentkits';
const agent = createAgent({ provider: 'openai', tools: [...] });
### 核心 Core
// 工作流引擎
import { createWorkflow } from 'agentkits';
| 模块 | 引入路径 | 说明 |
|------|---------|------|
| **大模型对话** | `agentkits/llm` | 统一对话补全接口,支持 19 个供应商 |
| **向量化** | `agentkits/embedding` | 统一向量化接口,支持 15 个引擎 |
| **流式输出** | `agentkits/streaming` | SSE 解析、流组合、中断控制 |
| **结构化输出** | `agentkits/structured` | JSON Schema 校验的 LLM 输出 |
| **函数调用** | `agentkits/function-calling` | 跨供应商的函数/工具调用格式转换 |
// MCP 客户端
import { createMCPClient } from 'agentkits';
### 智能体构建 Agent Building
// A2A 协议
import { createA2AClient, createA2AServer } from 'agentkits';
| 模块 | 引入路径 | 说明 |
|------|---------|------|
| **Agent 循环** | `agentkits/agent` | ReAct 风格智能体,支持工具调用循环 |
| **工具调用** | `agentkits/tools` | 定义和执行工具,适配任意大模型 |
| **多轮对话** | `agentkits/conversation` | 多轮对话管理,滑动窗口 |
| **Agent 记忆** | `agentkits/agent-memory` | 短期/长期记忆,自动摘要 |
| **提示词模板** | `agentkits/prompt-template` | Handlebars 风格模板引擎 |
| **安全护栏** | `agentkits/guardrails` | 输入输出校验、内容过滤、PII 检测 |
// 故障转移
import { createChatWithFailover } from 'agentkits';
### RAG 检索增强生成
// 智能路由
import { createRouter, createModelRouter } from 'agentkits';
| 模块 | 引入路径 | 说明 |
|------|---------|------|
| **RAG 管线** | `agentkits/rag` | 完整的检索-增强-生成管线 |
| **重排序** | `agentkits/rerank` | API 重排序(Cohere、Jina 等) |
| **本地重排** | `agentkits/reranker` | Cross-encoder 本地重排序 |
| **网页搜索** | `agentkits/web-search` | Brave、Tavily、Serper、SearXNG |
| **PDF 解析** | `agentkits/pdf-parser` | PDF 文本提取与分块 |
| **文本分块** | `agentkits/chunker` | 智能分块(固定、句子、递归、语义) |
// 结构化输出、护栏、重排序、TTS、STT、图像生成...
// 完整 40 个模块见下方模块目录
```
### 多模态 Multimodal
---
| 模块 | 引入路径 | 说明 |
|------|---------|------|
| **视觉理解** | `agentkits/vision` | 跨供应商图像理解 |
| **语音合成** | `agentkits/tts` | TTS(OpenAI、Azure、ElevenLabs) |
| **语音识别** | `agentkits/stt` | STT 语音转文字 |
| **图像生成** | `agentkits/image` | DALL-E、Stability 等 |
## 模块目录 (40 modules)
### 基础设施 Infrastructure
<details>
<summary>展开查看完整模块列表</summary>
| 模块 | 引入路径 | 说明 |
|------|---------|------|
| **故障转移** | `agentkits/failover` | 自动供应商切换与健康检测 |
| **智能路由** | `agentkits/router` | 按成本、速度、能力路由请求 |
| **模型路由** | `agentkits/model-router` | 高级路由:模型画像与规则引擎 |
| **限流器** | `agentkits/ratelimit` | Token bucket 限流 |
| **供应商限流** | `agentkits/rate-limiter` | 按供应商限流(内置默认值) |
| **响应缓存** | `agentkits/response-cache` | LRU + TTL 缓存 |
| **重试** | `agentkits/retry` | 指数退避 + 抖动 |
| **成本计算** | `agentkits/cost` | 跨供应商定价对比 |
| **Token 计数** | `agentkits/token-counter` | 按模型精确计数 |
| **代理服务器** | `agentkits/proxy` | OpenAI 兼容代理 |
| **性能基准** | `agentkits/benchmark` | 供应商延迟与吞吐量基准测试 |
| **供应商测试** | `agentkits/test` | 一键检测已配置供应商的连通性 |
| **日志** | `agentkits/logger` | 结构化日志 |
| **链路追踪** | `agentkits/tracing` | OpenTelemetry 兼容分布式追踪 |
| **代码解释器** | `agentkits/code-interpreter` | 沙箱代码执行(JS、Python、Shell) |
| **模型评估** | `agentkits/evaluation` | 多模型输出对比:延迟、成本、质量 |
| 分类 | 模块 | 引入路径 | 说明 |
|------|------|---------|------|
| **核心** | 大模型对话 | `agentkits/llm` | 19 个供应商统一接口 |
| | 向量化 | `agentkits/embedding` | 15 个引擎统一接口 |
| | 流式输出 | `agentkits/streaming` | SSE 解析、流组合、中断控制 |
| | 结构化输出 | `agentkits/structured` | JSON Schema 校验 |
| | 函数调用 | `agentkits/function-calling` | 跨供应商工具调用格式转换 |
| **智能体** | Agent 循环 | `agentkits/agent` | ReAct 风格智能体 |
| | 工具调用 | `agentkits/tools` | 定义和执行工具 |
| | 多轮对话 | `agentkits/conversation` | 滑动窗口管理 |
| | 记忆 | `agentkits/agent-memory` | 短期/长期记忆、自动摘要 |
| | 提示词模板 | `agentkits/prompt-template` | Handlebars 风格模板 |
| | 安全护栏 | `agentkits/guardrails` | 输入输出校验、PII 检测 |
| **RAG** | RAG 管线 | `agentkits/rag` | 检索-增强-生成 |
| | 重排序 (API) | `agentkits/rerank` | Cohere / Jina 重排 |
| | 重排序 (本地) | `agentkits/reranker` | Cross-encoder 本地重排 |
| | 网页搜索 | `agentkits/web-search` | Brave / Tavily / Serper / SearXNG |
| | PDF 解析 | `agentkits/pdf-parser` | 文本提取与分块 |
| | 文本分块 | `agentkits/chunker` | 固定 / 句子 / 递归 / 语义 |
| **多模态** | 视觉理解 | `agentkits/vision` | 跨供应商图像理解 |
| | 语音合成 | `agentkits/tts` | OpenAI / Azure / ElevenLabs |
| | 语音识别 | `agentkits/stt` | 语音转文字 |
| | 图像生成 | `agentkits/image` | DALL-E / Stability |
| **基础设施** | 故障转移 | `agentkits/failover` | 自动供应商切换 |
| | 智能路由 | `agentkits/router` | 按成本/速度/能力路由 |
| | 模型路由 | `agentkits/model-router` | 规则引擎 |
| | 限流器 | `agentkits/ratelimit` | Token bucket |
| | 供应商限流 | `agentkits/rate-limiter` | 按供应商限流 |
| | 响应缓存 | `agentkits/response-cache` | LRU + TTL |
| | 重试 | `agentkits/retry` | 指数退避 + 抖动 |
| | 成本计算 | `agentkits/cost` | 跨供应商定价对比 |
| | Token 计数 | `agentkits/token-counter` | 按模型精确计数 |
| | 代理服务器 | `agentkits/proxy` | OpenAI 兼容代理 |
| | 基准测试 | `agentkits/benchmark` | 延迟与吞吐量 |
| | 供应商测试 | `agentkits/test` | 一键检测连通性 |
| | 日志 | `agentkits/logger` | 结构化日志 |
| | 链路追踪 | `agentkits/tracing` | OpenTelemetry 兼容 |
| | 代码解释器 | `agentkits/code-interpreter` | 沙箱执行 JS/Python/Shell |
| | 模型评估 | `agentkits/evaluation` | 多模型输出对比 |
| **协议** | MCP 客户端 | `agentkits/mcp-client` | 连接 MCP 服务器 |
| | 工作流引擎 | `agentkits/workflow` | 分支 / 并行 / 重试 |
| | A2A 协议 | `agentkits/a2a` | Google Agent-to-Agent |
### 协议与互操作 Protocol & Interop
</details>
| 模块 | 引入路径 | 说明 |
|------|---------|------|
| **MCP 客户端** | `agentkits/mcp-client` | 连接 MCP 服务器,自动转换工具定义 |
| **工作流引擎** | `agentkits/workflow` | 多步骤工作流:分支、并行、重试 |
| **A2A 协议** | `agentkits/a2a` | Google A2A 智能体间通信 |

@@ -271,10 +286,10 @@ ---

```bash
npx agentkits chat [--provider P] [--model M] # 交互式对话
npx agentkits embed "文本" [--provider P] # 生成向量
npx agentkits benchmark [--providers a,b,c] [--runs N] # 供应商对比
npx agentkits test # 测试已配置供应商
npx agentkits cost # 定价对比
npx agentkits serve [--port N] # OpenAI 兼容代理
npx agentkits list # 列出所有供应商
npx agentkits mcp connect <url> # 连接 MCP 服务器
npx agentkits chat [--provider P] [--model M] # 交互式对话
npx agentkits embed "文本" [--provider P] # 生成向量
npx agentkits benchmark [--providers a,b,c] [--runs N] # 供应商对比
npx agentkits test # 测试已配置供应商
npx agentkits cost # 定价对比
npx agentkits serve [--port N] # OpenAI 兼容代理
npx agentkits list # 列出所有供应商
npx agentkits mcp connect <url> # 连接 MCP 服务器
```

@@ -284,42 +299,28 @@

## 在 OPC Agent 中使用
## 架构 Architecture
[opc-agent](https://github.com/Deepleaper/opc-agent) 基于 AgentKits 构建,展示了完整的生产级用法:
```typescript
// opc-agent 内部使用 AgentKits 的模型推荐 + 统一调用
import { recommendModel, createChat, withBrain, checkProvider } from 'agentkits';
// 1. 推荐最适合当前任务的模型
const picks = recommendModel({ task: 'coding', budget: 'low' });
// 2. 创建带记忆的对话
const chat = createChat({ provider: picks[0].provider, model: picks[0].model });
const smartChat = withBrain(chat.complete.bind(chat), { brainUrl: process.env.BRAIN_URL });
// 3. 健康检查确保可用
const health = await checkProvider(picks[0].provider);
if (!health.available) { /* fallback */ }
```
---
## 四件套生态
AgentKits 是跃盟科技 AI 四件套的核心层:
| 层级 | 项目 | 定位 |
|------|------|------|
| 🧠 | [DeepBrain](https://github.com/Deepleaper/deepbrain) | 知识大脑 — 语义存储 + 自动关联 |
| 📊 | **AgentKits** ← 你在这里 | 模型层 — 统一 API + 推荐 + 记忆增强 |
| 🤖 | [OPC Agent](https://github.com/Deepleaper/opc-agent) | 智能体 — 基于 AgentKits 的生产级 Agent |
| 🔌 | [OpenClaw](https://github.com/Deepleaper/openclaw) | 运行时 — Agent 编排 + 多端接入 |
┌──────────────────────────────────────────────────────────┐
│ 你的应用 Your App │
├──────────────────────────────────────────────────────────┤
│ Agent 循环 │ 工作流 │ RAG │ 工具 │ 多轮对话 │
├──────────────────────────────────────────────────────────┤
│ 安全护栏 │ 记忆 │ 结构化输出 │ 提示词模板 │
├──────────────────────────────────────────────────────────┤
│ 路由 │ 故障转移 │ 缓存 │ 限流 │ 重试 │
├──────────────────────────────────────────────────────────┤
│ MCP 客户端 │ A2A 协议 │ 链路追踪 │ 日志 │
├──────────────────────────────────────────────────────────┤
│ 统一供应商接口 │
│ ┌─────┐ ┌──────┐ ┌──────┐ ┌─────┐ ┌─────┐ │
│ │ LLM │ │ 向量 │ │ 视觉 │ │ TTS │ │ STT │ ... │
│ └──┬──┘ └──┬───┘ └──┬───┘ └──┬──┘ └──┬──┘ │
├─────┼───────┼────────┼────────┼───────┼────────────────┤
│ OpenAI · Gemini · DeepSeek · 通义 · 智谱 · Ollama +13 │
└──────────────────────────────────────────────────────────┘
```
DeepBrain (知识) → AgentKits (模型) → OPC Agent (智能体) → OpenClaw (运行时)
```
---
## 环境变量
## 环境变量 Environment Variables

@@ -330,3 +331,2 @@ ```bash

GEMINI_API_KEY=AI...
ANTHROPIC_API_KEY=sk-ant-...

@@ -336,3 +336,3 @@ # 中国供应商

DASHSCOPE_API_KEY=sk-... # 通义千问
ZHIPU_API_KEY=... # 智谱 AI
ZHIPU_API_KEY=... # 智谱AI
MOONSHOT_API_KEY=sk-... # 月之暗面 (Kimi)

@@ -344,2 +344,7 @@ YI_API_KEY=... # 零一万物

MINIMAX_API_KEY=... # MiniMax
# 更多
GROQ_API_KEY=gsk_...
COHERE_API_KEY=...
JINA_API_KEY=jina_...
```

@@ -349,24 +354,19 @@

## License
## 开源协议 License
Apache-2.0 · Made by [Deepleaper 跃盟科技](https://github.com/Deepleaper)
Apache-2.0 · Made by [Deepleaper 跃盟科技](https://github.com/Magicray1217)
---
<a name="english-version"></a>
<details>
<summary>English</summary>
# English Version
## Why AgentKits?
<div align="center">
AgentKits provides a **unified TypeScript interface** across 29 LLM providers and 18 embedding providers. Switching models requires changing one config value — no code rewrite needed.
## 📊 AgentKits
**First-class support for Chinese LLM ecosystem**: DashScope (Qwen), Zhipu AI (GLM), Moonshot (Kimi), Yi, Baichuan, SiliconFlow, StepFun, DeepSeek, MiniMax.
**OpenRouter with Memory: Unified Model API + Smart Recommendation + Memory-Enhanced**
## Install
One API for all LLMs. Auto-recommend the best model. Every call enhanced with memory.
</div>
### Install
```bash

@@ -376,87 +376,42 @@ npm install agentkits

### Quick Start
## Quick Examples
```typescript
import { recommendModel, createChat, withBrain } from 'agentkits';
```ts
import { createChat, createEmbedding } from 'agentkits';
// 🎯 Smart recommendation: pick the best model by task + budget
const picks = recommendModel({ task: 'coding', budget: 'medium' });
console.log(picks[0]);
// { model: 'deepseek-coder-v2', provider: 'deepseek', reason: 'Best cost/perf for coding tasks', ... }
const chat = createChat({ provider: 'deepseek' });
const reply = await chat.complete('Explain quantum computing');
// 🤖 Unified API: switch providers by changing one word
const chat = createChat({ provider: 'deepseek', model: 'deepseek-chat' });
const reply = await chat.complete('Write a quicksort in TypeScript');
// 🧠 Memory-enhanced: auto-recall context from DeepBrain
const smartChat = withBrain(chat.complete.bind(chat), { brainUrl: 'http://localhost:3333' });
const emb = createEmbedding({ provider: 'openai' });
const vector = await emb.embed('semantic search');
```
### Features
See the sections above for full code examples — all code blocks are bilingual.
| | Feature | Description |
|---|---|---|
| 🤖 | **Unified Model API** | OpenAI / Anthropic / Google / DeepSeek / Qwen / Zhipu / Moonshot / Ollama — one interface |
| 🎯 | **Smart Recommendation** | `recommendModel()` picks optimal model by task + budget + speed |
| 💰 | **Cost Estimation** | `estimateModelCost()` precise pricing for 20+ models |
| 🏥 | **Health Check** | `checkProvider()` real-time availability + latency for 7 providers |
| 🧠 | **Memory-Enhanced** | `withBrain()` auto-chains DeepBrain: recall → chat → learn |
| 🎨 | **Web UI** | Model management dashboard + Playground |
| 📊 | **40 Modules** | RAG / Agent / Workflow / MCP / A2A / Vision / TTS / STT / Guardrails |
## Providers
### Supported Models
- **LLM (19)**: OpenAI, Gemini, DeepSeek, DashScope, Zhipu, Moonshot, Yi, Baichuan, SiliconFlow, StepFun, MiniMax, Grok, Cohere, Fireworks, Together, Groq, Perplexity, Ollama, Custom
- **Embedding (15)**: OpenAI, Gemini, DashScope, DeepSeek, Zhipu, SiliconFlow, Cohere, Jina, Voyage, Mixedbread, Nomic, Fireworks, Together, Ollama, Custom
**LLM (19 providers):** OpenAI (GPT-4o), Anthropic (Claude 3.5), Google (Gemini 2.5), DeepSeek, DashScope (Qwen), Zhipu (GLM-4), Moonshot (Kimi), Yi, Baichuan, SiliconFlow, StepFun, MiniMax, Grok, Cohere, Fireworks, Together, Groq, Perplexity, Ollama, Custom.
## Module Catalog (40 modules)
**Embedding (15 providers):** OpenAI, Google, DashScope, DeepSeek, Zhipu, SiliconFlow, Cohere, Jina, Voyage, Mixedbread, Nomic, Fireworks, Together, Ollama, Custom.
Refer to the [Module Catalog](#模块目录-module-catalog) table above — all import paths work as `import { ... } from 'agentkits/<module>'`.
See the [Chinese section above](#支持模型) for the full pricing table.
## CLI
### API Reference
```typescript
// Recommend
recommendModel({ task, budget, speed, local }) → ModelRecommendation[]
estimateModelCost(model, inputTokens, outputTokens) → ModelCostEstimate
// Chat
createChat({ provider, model }) → ChatClient
chat.complete(prompt) → string
chat.stream(prompt) → AsyncIterable<StreamChunk>
// Memory (DeepBrain)
withBrain(chatFn, config) → wrappedChatFn // middleware
recall(query, config) → RecallResult[]
learn(text, config) → void
// Health
checkProvider(provider, config?) → HealthCheckResult
// Web UI
new KitsUI({ port }).start()
// And 40 more modules...
```
### CLI
```bash
npx agentkits chat | embed | benchmark | test | cost | serve | list | mcp connect
npx agentkits chat [--provider P] [--model M]
npx agentkits embed "text" [--provider P]
npx agentkits benchmark [--providers a,b,c] [--runs N]
npx agentkits test
npx agentkits cost
npx agentkits serve [--port N]
npx agentkits list
npx agentkits mcp connect <url>
```
### Ecosystem
## License
```
DeepBrain (knowledge) → AgentKits (models) → OPC Agent (agents) → OpenClaw (runtime)
```
Apache-2.0 · Made by [Deepleaper 跃盟科技](https://github.com/Magicray1217)
| Layer | Project | Role |
|-------|---------|------|
| 🧠 | [DeepBrain](https://github.com/Deepleaper/deepbrain) | Knowledge brain — semantic store + auto-linking |
| 📊 | **AgentKits** ← you are here | Model layer — unified API + recommendation + memory |
| 🤖 | [OPC Agent](https://github.com/Deepleaper/opc-agent) | Agent — production-grade agent built on AgentKits |
| 🔌 | [OpenClaw](https://github.com/Deepleaper/openclaw) | Runtime — agent orchestration + multi-platform |
### License
Apache-2.0 · Made by [Deepleaper 跃盟科技](https://github.com/Deepleaper)
</details>

@@ -35,3 +35,3 @@ <div align="center">

> 💡 **差异化优势**:市面上大多数 AI 框架只象征性支持 1-2 个中国模型。AgentKits 深度集成 **9 个中国大模型供应商**,覆盖对话、向量化、函数调用、流式输出全场景。
> 💡 **中国模型支持**:AgentKits 深度集成 **9 个中国大模型供应商**,覆盖对话、向量化、函数调用、流式输出全场景。

@@ -38,0 +38,0 @@ ---

@@ -54,2 +54,12 @@ /**

{ provider: 'minimax', model: 'MiniMax-Text-01', currency: 'CNY', inputPer1M: 1.00, outputPer1M: 8.00, updated: '2026-04' },
{ provider: 'grok', model: 'grok-3', currency: 'USD', inputPer1M: 3.00, outputPer1M: 15.00, updated: '2026-04' },
{ provider: 'cohere', model: 'command-r-plus', currency: 'USD', inputPer1M: 2.50, outputPer1M: 10.00, updated: '2026-04' },
{ provider: 'yi', model: 'yi-large', currency: 'CNY', inputPer1M: 20.00, outputPer1M: 20.00, updated: '2026-04' },
{ provider: 'baichuan', model: 'Baichuan4', currency: 'CNY', inputPer1M: 100.00,outputPer1M: 100.00,updated: '2026-04' },
{ provider: 'siliconflow',model: 'deepseek-ai/DeepSeek-V3', currency: 'CNY', inputPer1M: 2.00, outputPer1M: 8.00, updated: '2026-04' },
{ provider: 'stepfun', model: 'step-2-16k', currency: 'CNY', inputPer1M: 38.00, outputPer1M: 120.00,updated: '2026-04' },
{ provider: 'fireworks', model: 'accounts/fireworks/models/llama-v3p1-70b-instruct', currency: 'USD', inputPer1M: 0.90, outputPer1M: 0.90, updated: '2026-04' },
{ provider: 'together', model: 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo', currency: 'USD', inputPer1M: 0.88, outputPer1M: 0.88, updated: '2026-04' },
{ provider: 'groq', model: 'llama-3.3-70b-versatile', currency: 'USD', inputPer1M: 0.59, outputPer1M: 0.79, updated: '2026-04' },
{ provider: 'perplexity', model: 'sonar-pro', currency: 'USD', inputPer1M: 3.00, outputPer1M: 15.00, updated: '2026-04' },
{ provider: 'ollama', model: 'any', currency: 'USD', inputPer1M: 0, outputPer1M: 0, updated: '2026-04' },

@@ -64,2 +74,5 @@

{ provider: 'zhipu', model: 'embedding-3', currency: 'CNY', inputPer1M: 0.50, outputPer1M: 0, embeddingPer1M: 0.50, updated: '2026-04' },
{ provider: 'cohere', model: 'embed-english-v3.0', currency: 'USD', inputPer1M: 0.10, outputPer1M: 0, embeddingPer1M: 0.10, updated: '2026-04' },
{ provider: 'jina', model: 'jina-embeddings-v3', currency: 'USD', inputPer1M: 0.02, outputPer1M: 0, embeddingPer1M: 0.02, updated: '2026-04' },
{ provider: 'voyage', model: 'voyage-3', currency: 'USD', inputPer1M: 0.06, outputPer1M: 0, embeddingPer1M: 0.06, updated: '2026-04' },
{ provider: 'ollama', model: 'nomic-embed-text', currency: 'USD', inputPer1M: 0, outputPer1M: 0, embeddingPer1M: 0, updated: '2026-04' },

@@ -66,0 +79,0 @@ ];