Skip to content

Provider

MicroAgent 的 Provider 层提供统一的 LLM、嵌入模型和向量数据库访问接口。

架构

整体架构

加载中...

Embedding Provider

加载中...

LLM Provider

加载中...

LLM Provider 实现

加载中...

Storage/Vector Provider

加载中...

LLM Provider

接口定义

typescript
interface LLMProvider {
  readonly type: 'llm';
  
  chat(
    messages: LLMMessage[],
    tools?: LLMToolDefinition[],
    model?: string,
    config?: GenerationConfig
  ): Promise<LLMResponse>;
  
  getDefaultModel(): string | undefined;
  isAvailable(): Promise<boolean>;
  getModelCapabilities(modelId: string): ProviderCapabilities;
  listModels(): Promise<string[] | null>;
}

能力定义

typescript
interface ProviderCapabilities {
  vision: boolean;   // 支持视觉能力(图片识别)
  think: boolean;    // 支持思考能力(推理模型)
  tool: boolean;     // 支持工具调用
}

支持的厂商

厂商API 端点思考模型特殊处理
OpenAIapi.openai.com/v1o1, o3 系列o1 系列删除 temperature/top_p
DeepSeekapi.deepseek.com/v1deepseek-reasoner, r1需显式启用 thinking
GLMopen.bigmodel.cnglm-4-plus, glm-5支持 CoT 思维链
Kimiapi.moonshot.cn/v1kimi-k2思考内容为数组格式
MiniMaxapi.minimax.chat/v1m2.x 系列支持 group_id
Ollamalocalhost:11434/v1deepseek-r1, qwen3<think/> 标签提取

自动厂商检测

typescript
// 根据 URL 和模型名称自动检测
detectVendor(baseUrl, model) → ProviderVendor

// 检测逻辑
if (url.includes('openai.com')) return 'openai';
if (url.includes('deepseek.com')) return 'deepseek';
if (url.includes('bigmodel.cn')) return 'glm';
if (url.includes('moonshot.cn')) return 'kimi';
if (url.includes('minimax.chat')) return 'minimax';
if (url.includes('localhost:11434')) return 'ollama';
// 默认使用 OpenAI 兼容模式
return 'openai-compatible';

思考模型支持

参数设置

厂商参数
OpenAIreasoning_effort: 'high'
DeepSeekthinking: { type: 'enabled' }
GLMenable_cot: true
Kimireasoning: { effort: 'high' }
MiniMaxthinking: { type: 'enabled' }

响应解析

typescript
// 不同厂商的思考内容字段
if (message?.reasoning_content) {
  // DeepSeek 格式
  reasoning = message.reasoning_content;
} else if (message?.reasoning_details) {
  // Kimi 格式(数组)
  reasoning = message.reasoning_details.map(d => d.text).join('');
} else if (message?.reasoning) {
  // GLM 格式
  reasoning = message.reasoning;
}

模型路由器

配置

typescript
interface ModelRouterConfig {
  chatModel: string;      // 对话模型
  visionModel?: string;   // 视觉模型
  coderModel?: string;    // 编程模型
  intentModel?: string;   // 意图识别模型
  models: Map<string, ModelConfig[]>;
}

路由策略

任务类型选择策略失败降级
visionvisionModel抛出错误
codercoderModel降级到 chatModel
chatchatModel
intentintentModel默认为 chatModel

使用示例

typescript
import { createModelRouter } from '@micro-agent/sdk/runtime';

const router = createModelRouter({
  chatModel: 'openai/gpt-4o',
  visionModel: 'openai/gpt-4o',
  coderModel: 'deepseek/deepseek-coder',
});

// 根据任务类型选择模型
const result = router.selectByTaskType('coder');
// { model: 'deepseek/deepseek-coder', config: {...}, reason: 'coder task' }

Embedding Provider

接口定义

typescript
interface EmbeddingProvider {
  readonly name: string;
  embed(text: string): Promise<EmbeddingResult>;
  embedBatch(texts: string[]): Promise<EmbeddingResult[]>;
  getDimension(): number;
  isAvailable(): Promise<boolean>;
}

支持的实现

Provider默认模型维度
OpenAIEmbeddingProvidertext-embedding-3-small1536
LocalEmbeddingProvider (Ollama)nomic-embed-text768

使用示例

typescript
import { OpenAIEmbeddingProvider } from '@micro-agent/sdk/runtime';

const embedding = new OpenAIEmbeddingProvider({
  apiKey: process.env.OPENAI_API_KEY,
  model: 'text-embedding-3-small',
});

const result = await embedding.embed('Hello, world!');
console.log(result.vector.length); // 1536

Vector DB Provider

接口定义

typescript
interface VectorDBProvider {
  readonly name: string;
  initialize(): Promise<void>;
  insert(record: VectorRecord): Promise<void>;
  insertBatch(records: VectorRecord[]): Promise<void>;
  search(vector: number[], limit?: number): Promise<SearchResult[]>;
  get(id: string): Promise<VectorRecord | null>;
  delete(id: string): Promise<void>;
  clear(): Promise<void>;
  count(): Promise<number>;
  close(): Promise<void>;
}

支持的实现

Provider存储适用场景
LanceDBProvider持久化文件生产环境
LocalVectorProvider内存开发测试

配置

yaml
providers:
  openai:
    baseUrl: https://api.openai.com/v1
    apiKey: ${OPENAI_API_KEY}
    models:
      - gpt-4o
      - gpt-4o-mini
  
  deepseek:
    baseUrl: https://api.deepseek.com/v1
    apiKey: ${DEEPSEEK_API_KEY}
    models:
      - deepseek-chat
      - deepseek-coder
  
  ollama:
    baseUrl: http://localhost:11434/v1
    models:
      - llama3
      - qwen2

agents:
  models:
    chat: openai/gpt-4o
    tool: openai/gpt-4o
    embed: openai/text-embedding-3-small
    vision: openai/gpt-4o
    coder: deepseek/deepseek-coder

基于 MIT 许可证开源