large-models-interface
Version:
A comprehensive, unified interface for all types of AI models - natural language, vision, audio, and video. Supports 51 providers with dynamic model discovery and multi-modal capabilities.
1,265 lines (1,087 loc) • 37.3 kB
Markdown
# LLM Interface Expansion Plan: Supporting All Kinds of Large Models
## Executive Summary
This plan outlines a comprehensive strategy to expand the `large-models-interface` project with **dynamic support for the latest models** as the core functionality. The primary goal is to create a unified interface that automatically discovers, tracks, and supports the newest models from all major providers without requiring manual updates.
## Current State Analysis
### ✅ Already Supported (36 Providers)
- **Text Models**: OpenAI, Anthropic, Google Gemini, Mistral AI, Cohere, etc.
- **Embeddings**: 15+ providers with embedding support
- **Streaming**: 25+ providers with streaming support
- **Local Models**: Ollama, LLaMA.CPP
### 📊 Current Capabilities
- Chat completion
- Text streaming
- Text embeddings
- JSON output and repair
- Response caching
- Auto-retry with backoff
- Unified API interface
## 🎯 Core Mission: Dynamic Latest Model Support
### 🚀 **Primary Goal**
**自动发现并支持最新模型** - 无需手动更新,始终保持对最新发布模型的支持
### 🔧 **核心功能架构**
#### 🚀 **现有架构增强方案**
基于当前的 `src/config/providers/*.json` 和 `src/interfaces/` 架构,实现动态模型发现:
1. **简化配置文件结构**
```javascript
// 增强后的配置文件结构
{
"url": "https://api.openai.com/v1/chat/completions",
"modelsEndpoint": "https://api.openai.com/v1/models", // 新增:模型发现端点
"model": {
"default": "gpt-4o-mini",
"large": "gpt-4o",
"small": "gpt-4o-mini",
"agent": "gpt-4o"
},
"embeddingUrl": "https://api.openai.com/v1/embeddings",
"embeddings": {
"default": "text-embedding-ada-002",
"large": "text-embedding-3-large",
"small": "text-embedding-3-small"
},
"modelsFile": "./data/models/openai.json", // 新增:模型状态文件位置
"createMessageObject": "getMessageObject",
"stream": true,
"jsonMode": true,
"maxTokens": true,
"hasEmbeddings": true
}
```
2. **启动时自动更新模型状态**
- 应用启动时自动检查和更新所有提供商的模型列表
- 更新本地模型状态记录文件 `./data/models/{provider}.json`
- 失败时使用上次缓存的模型列表,确保服务可用
3. **模型状态记录文件**
- 每个提供商一个JSON文件记录最新模型状态
- 包含模型列表、能力信息、最后更新时间
- 作为备用,API失败时使用缓存
4. **BaseInterface 增强**
- 启动时自动调用 `updateModelsFile()` 方法
- 从模型状态文件加载最新可用模型
- 保持原有API完全向后兼容
5. **简单有效的更新机制**
- 无需复杂的定时任务
- 每次应用重启都获得最新模型
- 故障时优雅降级到缓存模型
### 🎯 **实现目标**
- **覆盖率**: 95%+ 主流大模型提供商
- **发现速度**: 新模型发布后24小时内支持
- **准确性**: 99%+ 模型信息准确率
- **可用性**: 99.9%+ 服务可用时间
## Phase 1: Missing Major Text/Chat Providers
### 🎯 High Priority Providers
1. **Azure AI/Azure OpenAI** - Enterprise critical
- Azure OpenAI Service
- Azure AI Studio models
- Azure Cognitive Services
2. **xAI (Grok)** - Elon Musk's AI company
- Grok-1, Grok-2 models
- Real-time information access
3. **SiliconFlow** - Already partially implemented
- Complete implementation and testing
4. **Alibaba Cloud AI** - Major cloud provider
- Qwen models
- Tongyi Qianwen
5. **Baidu AI** - Major Chinese provider
- ERNIE models
- Wenxin
6. **ByteDance/Volcano Engine**
- Doubao models
### 🇨🇳 Chinese Major Providers (从目标列表中识别)
7. **iFLYTEK Spark (讯飞星火认知大模型)** 🆕
- Spark Cognition models
- Voice + text capabilities
8. **360 AI Brain (360 智脑)** 🆕
- 360GPT models
- Security-focused AI
9. **Tencent Hunyuan (腾讯混元大模型)** 🆕
- Hunyuan models
- WeChat integration
10. **Baichuan AI (百川大模型)** 🆕
- Baichuan models
- Multi-language support
11. **StepFun (阶跃星辰)** 🆕
- Step models
- Code generation focus
### 🔄 Regional/Specialized Providers
12. **Claude Instant** (separate from main Anthropic)
13. **Inflection AI** (Pi)
14. **Character.AI**
15. **You.com AI**
16. **Poe by Quora**
17. **Stability AI** (StableLM)
18. **Coze (扣子)** 🆕
- Workflow automation
- Multi-agent systems
19. **DeepL** 🆕
- Translation models
- Language processing
### ✅ Already Supported (from target list)
- **01.AI (零一万物)** - Yi models
- **Moonshot AI (Kimi)** - Long context
- **MiniMax** - ChatBot API
- **Groq** - Fast inference
- **Ollama** - Local models
- **Cohere** - Enterprise NLP
- **DeepSeek** - Code + chat
- **Cloudflare Workers AI** - Edge computing
- **Together.ai** - Open source models
- **Novita.ai** - GPU cloud
- **SiliconFlow (硅基流动)** - Partial support
## Phase 2: Multimodal Model Support
### 🖼️ Vision Models
1. **OpenAI GPT-4V**
- Image understanding
- Image analysis
- Visual Q&A
2. **Google Gemini Vision**
- Image and video analysis
- Multimodal understanding
3. **Anthropic Claude Vision**
- Document analysis
- Image interpretation
4. **GPT-4o** (Omni)
- Text, image, audio integration
### 🎵 Audio Models
1. **OpenAI Whisper** - Speech-to-text
2. **OpenAI TTS** - Text-to-speech
3. **ElevenLabs** - Advanced TTS
4. **Murf AI** - Voice synthesis
5. **Azure Speech Services**
6. **Google Cloud Speech**
7. **Amazon Polly**
### 🎬 Video Models
1. **RunwayML**
2. **Pika Labs**
3. **Stable Video Diffusion**
## Phase 3: Specialized Model Types
### 💻 Code Models
1. **GitHub Copilot API**
2. **Tabnine**
3. **Codeium**
4. **CodeT5**
5. **StarCoder**
6. **WizardCoder**
### 🔬 Scientific Models
1. **AlphaFold** (Protein folding)
2. **ESMFold**
3. **ChemCrow** (Chemistry)
4. **BioGPT**
### 🎨 Creative Models
1. **DALL-E 3**
2. **Midjourney** (if API available)
3. **Stable Diffusion**
4. **Adobe Firefly**
5. **Canva AI**
### 📊 Data Analysis Models
1. **OpenAI Code Interpreter**
2. **NotebookLM**
3. **Pandas AI**
## Phase 4: Local and Open Source Models
### 🏠 Local Model Runners
1. **Llama.cpp** (already supported)
2. **Ollama** (already supported)
3. **GPT4All**
4. **Jan.ai**
5. **LM Studio**
6. **Text Generation WebUI**
### 🔓 Open Source Models
1. **Llama 3.1/3.2**
2. **Mixtral 8x7B/8x22B**
3. **Falcon**
4. **Vicuna**
5. **WizardLM**
6. **CodeLlama**
## Phase 5: Enterprise and Specialized Platforms
### 🏢 Enterprise Platforms
1. **IBM Watson**
2. **Amazon Bedrock**
3. **Google Vertex AI**
4. **Microsoft Azure AI**
5. **Oracle Cloud AI**
6. **Salesforce Einstein**
### 🎯 Specialized APIs
1. **Wolfram Alpha** - Mathematical computation
2. **Semantic Scholar** - Academic search
3. **Perplexity** (enhanced search capabilities)
4. **You.com** - Search-augmented AI
## Implementation Strategy
### 🚀 Dynamic Model Detection System
#### 1. Automatic Model Discovery
```javascript
class ModelDiscovery {
// 定期检查提供商的新模型
async checkForNewModels(provider) {
const discoveredModels = await this.fetchProviderModels(provider);
const existingModels = this.getExistingModels(provider);
const newModels = this.compareModels(discoveredModels, existingModels);
if (newModels.length > 0) {
await this.updateModelRegistry(provider, newModels);
this.notifyNewModels(provider, newModels);
}
}
// 从提供商API获取可用模型列表
async fetchProviderModels(provider) {
const endpoints = {
'openai': '/v1/models',
'anthropic': '/v1/models',
'zhipuai': '/api/paas/v4/models',
'moonshot': '/v1/models',
'deepseek': '/v1/models',
// ... 更多提供商
};
return await this.apiCall(provider, endpoints[provider]);
}
}
```
#### 2. Model Version Tracking
```javascript
class ModelVersionTracker {
// 跟踪模型版本变化
async trackModelVersions() {
const providers = Object.keys(this.supportedProviders);
for (const provider of providers) {
const currentModels = await this.getProviderModels(provider);
const previousModels = await this.getStoredModels(provider);
// 检测新模型、更新的模型和废弃的模型
const changes = this.detectChanges(currentModels, previousModels);
if (changes.hasChanges) {
await this.updateModelDatabase(provider, changes);
await this.notifyModelChanges(provider, changes);
}
}
}
// 获取模型详细信息
async getModelDetails(provider, modelName) {
const modelRegistry = await this.getModelRegistry(provider);
return modelRegistry[modelName] || null;
}
}
```
#### 3. Provider Health Monitoring
```javascript
class ProviderHealthMonitor {
// 监控提供商状态和新功能
async monitorProviderHealth() {
const providers = this.getAllProviders();
for (const provider of providers) {
const health = await this.checkProviderHealth(provider);
const capabilities = await this.detectNewCapabilities(provider);
// 更新提供商状态
await this.updateProviderStatus(provider, {
health,
capabilities,
lastChecked: new Date()
});
}
}
// 检测新功能(如新的API端点、参数等)
async detectNewCapabilities(provider) {
const currentSpec = await this.fetchApiSpec(provider);
const storedSpec = await this.getStoredApiSpec(provider);
return this.compareApiSpecs(currentSpec, storedSpec);
}
}
```
### 🏗️ Architecture Enhancements
#### 4. Model Type Classification
```javascript
const MODEL_TYPES = {
TEXT: 'text',
VISION: 'vision',
AUDIO: 'audio',
VIDEO: 'video',
CODE: 'code',
MULTIMODAL: 'multimodal',
EMBEDDING: 'embedding',
IMAGE_GENERATION: 'image_generation'
};
```
#### 2. Enhanced Interface Structure
```javascript
class BaseInterface {
// Existing methods
sendMessage()
streamMessage()
embeddings()
// New methods
processImage()
processAudio()
processVideo()
generateImage()
analyzeCode()
multimodalInput()
}
```
#### 3. Universal Input Format
```javascript
const input = {
type: 'multimodal',
content: [
{ type: 'text', data: 'Describe this image' },
{ type: 'image', data: 'base64_or_url' },
{ type: 'audio', data: 'audio_file_path' }
],
model: 'gpt-4o',
options: {}
};
```
### 📋 Development Priorities
#### Priority 1 (Q1 2024) - 🚀 启动时自动更新模型状态
- [ ] **BaseInterface Enhancement** - 增强基础接口类,启动时自动更新模型
- [ ] **Config File Upgrade** - 添加 `modelsEndpoint` 和 `modelsFile` 配置
- [ ] **Models State Files** - 实现 `./data/models/{provider}.json` 状态文件
- [ ] **Auto Model Discovery** - 应用启动时自动获取最新模型列表
- [ ] **Graceful Fallback** - API失败时使用缓存的模型状态
- [ ] **Provider Parsers** - 各提供商的模型响应解析器
- [ ] **Backward Compatibility** - 确保现有API完全兼容
#### Priority 2 (Q2 2024) - 中文大模型重点集成
- [ ] **Baidu ERNIE (百度文心一言)** - 完整实现
- [ ] **Alibaba Qwen (阿里通义千问)** - 完整实现
- [ ] **ByteDance Doubao (字节跳动豆包)** - 新增支持
- [ ] **iFLYTEK Spark (讯飞星火)** - 新增支持
- [ ] **Tencent Hunyuan (腾讯混元)** - 新增支持
- [ ] **Azure AI/OpenAI integration** - 企业关键
#### Priority 3 (Q3 2024) - 全球化和特色功能
- [ ] **xAI (Grok) support** - 实时信息访问
- [ ] **Coze (扣子) integration** - 工作流自动化
- [ ] **DeepL integration** - 专业翻译
- [ ] **Audio model integration** (Whisper, TTS)
- [ ] **Code model specialization** - 代码生成优化
- [ ] **Provider Health Monitoring** - 健康状态监控
#### Priority 4 (Q4 2024) - 高级功能
- [ ] **Scientific model integration** - 科学计算模型
- [ ] **Image generation models** - 图像生成
- [ ] **Video model support** - 视频处理
- [ ] **Enterprise platform APIs** - 企业级集成
- [ ] **Advanced local model support** - 本地模型增强
- [ ] **Performance optimization** - 性能优化
### 🧪 Testing Strategy
#### 1. Provider Testing Framework
- Automated testing for each provider
- Model capability validation
- Performance benchmarking
- Error handling verification
#### 2. Multimodal Testing
- Image processing accuracy
- Audio quality assessment
- Video analysis capabilities
- Cross-modal consistency
#### 3. Integration Testing
- End-to-end workflows
- Provider failover testing
- Caching validation
- Rate limiting compliance
### 📊 Success Metrics
#### Coverage Metrics
- [ ] **50+ Providers** by end of 2024
- [ ] **5+ Model Types** supported
- [ ] **95%+ Uptime** across all providers
- [ ] **<100ms** average latency
#### Quality Metrics
- [ ] **100%** test coverage for new providers
- [ ] **Zero** breaking changes to existing API
- [ ] **Comprehensive** documentation for all features
- [ ] **Active** community contributions
## Technical Implementation Details
### 🔧 New Configuration Structure
```json
{
"provider": "openai",
"capabilities": {
"text": true,
"vision": true,
"audio": true,
"streaming": true,
"embeddings": true,
"json_mode": true
},
"models": {
"text": ["gpt-4", "gpt-3.5-turbo"],
"vision": ["gpt-4v"],
"audio": ["whisper-1", "tts-1"]
}
}
```
### 🇨🇳 Chinese Provider Implementation Examples
#### 中文大模型专用配置
```javascript
// 百度文心一言 (Baidu ERNIE)
const baiduConfig = {
provider: 'baidu',
apiKey: process.env.BAIDU_API_KEY,
secretKey: process.env.BAIDU_SECRET_KEY,
models: {
'ernie-4.0-8k': { context: 8000, multimodal: true },
'ernie-3.5-8k': { context: 8000, multimodal: false },
'ernie-speed-128k': { context: 128000, multimodal: false }
}
};
// 阿里通义千问 (Alibaba Qwen)
const alibabaConfig = {
provider: 'alibaba',
apiKey: process.env.DASHSCOPE_API_KEY,
models: {
'qwen-max': { context: 30000, multimodal: true },
'qwen-plus': { context: 30000, multimodal: false },
'qwen-turbo': { context: 8000, multimodal: false }
}
};
// 字节跳动豆包 (ByteDance Doubao)
const bytedanceConfig = {
provider: 'bytedance',
apiKey: process.env.VOLCENGINE_API_KEY,
models: {
'doubao-pro-32k': { context: 32000, multimodal: true },
'doubao-lite-4k': { context: 4000, multimodal: false }
}
};
```
#### 增强后的API使用示例
```javascript
// 🚀 应用启动时自动更新所有模型状态(无需手动调用)
const { LLMInterface } = require('large-models-interface');
// ✅ 传统方式完全兼容 - 无需修改现有代码
const response = await LLMInterface.sendMessage('openai', 'Hello!', {
model: 'default' // 使用别名,现在会自动使用最新模型
});
// 🆕 获取当前可用的所有模型
const openaiInterface = LLMInterface.getInterface('openai');
const availableModels = await openaiInterface.getAvailableModels();
console.log('OpenAI可用模型:', availableModels);
// 🆕 直接使用最新发现的模型
const response2 = await LLMInterface.sendMessage('openai', 'Hello!', {
model: 'gpt-4o-2024-01-15' // 启动时自动发现的新模型
});
// 🆕 查看模型状态文件内容
const fs = require('fs');
const modelsData = JSON.parse(fs.readFileSync('./data/models/openai.json', 'utf8'));
console.log('OpenAI模型状态:', modelsData);
// 🆕 查看模型能力
const model = availableModels.find(m => m.name === 'gpt-4o');
console.log('GPT-4o 能力:', model.capabilities);
// 🆕 手动强制更新某个提供商的模型状态(可选)
await openaiInterface.updateModelsFile();
console.log('模型状态已手动更新');
```
#### 模型状态文件示例
```json
// ./data/models/openai.json
{
"provider": "openai",
"lastUpdated": "2024-01-15T10:30:00Z",
"totalModels": 15,
"models": [
{
"id": "gpt-4o",
"name": "gpt-4o",
"object": "model",
"created": 1706178600,
"owned_by": "openai",
"provider": "openai",
"capabilities": {
"chat": true,
"streaming": true,
"embeddings": false,
"vision": true,
"audio": false,
"jsonMode": true
},
"lastUpdated": "2024-01-15T10:30:00Z"
}
],
"aliases": {
"default": "gpt-4o-mini",
"large": "gpt-4o",
"small": "gpt-4o-mini",
"agent": "gpt-4o"
}
}
```
### 🚀 Enhanced API Methods
```javascript
// Multimodal input
await LLMInterface.processMultimodal('openai', {
text: 'What is in this image?',
image: './image.jpg',
model: 'gpt-4v'
});
// Audio processing
await LLMInterface.processAudio('openai', {
audio: './speech.mp3',
task: 'transcription',
model: 'whisper-1'
});
// Image generation
await LLMInterface.generateImage('openai', {
prompt: 'A sunset over mountains',
model: 'dall-e-3',
size: '1024x1024'
});
// Dynamic model discovery
const newModels = await LLMInterface.discoverNewModels();
console.log('发现的新模型:', newModels);
// Provider health check
const healthStatus = await LLMInterface.checkProviderHealth('all');
```
### 📚 Documentation Expansion
1. **Provider-specific guides** for each new platform
2. **Model capability matrices** showing what each provider supports
3. **Best practices** for multimodal applications
4. **Performance optimization** guides
5. **Migration guides** for existing users
## Risk Mitigation
### 🔒 Security Considerations
- API key management for new providers
- Data privacy compliance (GDPR, CCPA)
- Content filtering and safety measures
- Rate limiting and abuse prevention
### 🛡️ Reliability Measures
- Provider health monitoring
- Automatic failover mechanisms
- Response validation and error handling
- Backward compatibility guarantees
### 💰 Cost Management
- Usage tracking and billing alerts
- Cost optimization recommendations
- Provider cost comparison tools
- Caching strategies for expensive operations
## Conclusion
This comprehensive expansion plan will transform the `large-models-interface` from a text-focused LLM interface into the definitive universal AI model interface. By supporting all major model types and providers, it will become the go-to solution for developers working with AI models of any kind.
The phased approach ensures manageable development cycles while maintaining quality and reliability. The focus on backward compatibility means existing users can upgrade seamlessly while gaining access to powerful new capabilities.
**Timeline**: 12-month implementation across 4 quarters
**Investment**: Significant development effort but with clear ROI through market leadership
**Impact**: Position as the industry-standard interface for all AI models
## 🛠️ Implementation Roadmap
### Phase 1 实现细节 (Q1 2024)
#### 1. 现有架构增强实现
##### A. 增强 BaseInterface 类
```javascript
// src/interfaces/baseInterface.js 增强
class BaseInterface {
constructor(interfaceName, apiKey, baseURL, headers = {}) {
// ... 现有代码
this.modelDatabase = require('../core/modelDatabase');
// 🚀 启动时自动更新模型状态文件
this.initializeModels();
}
// 🆕 初始化时更新模型状态
async initializeModels() {
try {
await this.updateModelsFile();
console.log(`✅ ${this.interfaceName} 模型状态已更新`);
} catch (error) {
console.warn(`⚠️ ${this.interfaceName} 模型更新失败,使用缓存:`, error.message);
}
}
// 🆕 更新模型状态文件
async updateModelsFile() {
if (!this.config.modelsEndpoint) {
console.log(`📌 ${this.interfaceName} 未配置模型端点,跳过更新`);
return;
}
try {
// 从API获取最新模型列表
const response = await this.client.get(this.config.modelsEndpoint);
const models = this.parseModelsResponse(response.data);
// 获取模型详细信息
const modelDetails = await this.enrichModelData(models);
// 保存到状态文件
await this.saveModelsFile(modelDetails);
console.log(`🔄 ${this.interfaceName} 发现 ${models.length} 个模型`);
} catch (error) {
console.warn(`❌ ${this.interfaceName} 模型更新失败:`, error.message);
throw error;
}
}
// 🆕 解析模型响应(需要各接口实现)
parseModelsResponse(data) {
// 默认实现,各提供商可以重写
if (data.data && Array.isArray(data.data)) {
return data.data.map(model => ({
id: model.id,
name: model.id,
object: model.object,
created: model.created,
owned_by: model.owned_by
}));
}
return [];
}
// 🆕 丰富模型数据
async enrichModelData(models) {
return models.map(model => ({
...model,
provider: this.interfaceName,
capabilities: this.detectModelCapabilities(model),
lastUpdated: new Date().toISOString()
}));
}
// 🆕 检测模型能力
detectModelCapabilities(model) {
const capabilities = {
chat: true,
streaming: this.config.stream || false,
embeddings: false,
vision: false,
audio: false,
jsonMode: this.config.jsonMode || false
};
// 基于模型名称推断能力
const name = model.name.toLowerCase();
if (name.includes('vision') || name.includes('4v') || name.includes('4o')) {
capabilities.vision = true;
}
if (name.includes('embedding') || name.includes('embed')) {
capabilities.embeddings = true;
capabilities.chat = false;
}
return capabilities;
}
// 🆕 保存模型状态文件
async saveModelsFile(models) {
const modelsFile = this.config.modelsFile || `./data/models/${this.interfaceName}.json`;
const fs = require('fs').promises;
const path = require('path');
// 确保目录存在
await fs.mkdir(path.dirname(modelsFile), { recursive: true });
const modelsData = {
provider: this.interfaceName,
lastUpdated: new Date().toISOString(),
totalModels: models.length,
models: models,
aliases: this.config.model || {},
embeddingAliases: this.config.embeddings || {}
};
await fs.writeFile(modelsFile, JSON.stringify(modelsData, null, 2));
}
// 🆕 获取所有可用模型
async getAvailableModels() {
try {
const modelsFile = this.config.modelsFile || `./data/models/${this.interfaceName}.json`;
const fs = require('fs').promises;
const data = await fs.readFile(modelsFile, 'utf8');
const modelsData = JSON.parse(data);
return modelsData.models || [];
} catch (error) {
// 降级到配置文件中的静态模型
console.warn(`📁 ${this.interfaceName} 读取模型文件失败,使用配置文件`);
return Object.values(this.config.model || {}).map(name => ({
id: name,
name,
provider: this.interfaceName
}));
}
}
}
```
##### B. 简化配置文件结构
```javascript
// 更新现有的 src/config/providers/openai.json
{
"url": "https://api.openai.com/v1/chat/completions",
"modelsEndpoint": "https://api.openai.com/v1/models", // 🆕 模型发现端点
"model": {
"default": "gpt-4o-mini",
"large": "gpt-4o",
"small": "gpt-4o-mini",
"agent": "gpt-4o"
},
"embeddingUrl": "https://api.openai.com/v1/embeddings",
"embeddings": {
"default": "text-embedding-ada-002",
"large": "text-embedding-3-large",
"small": "text-embedding-3-small"
},
"modelsFile": "./data/models/openai.json", // 🆕 模型状态文件
"createMessageObject": "getMessageObject",
"stream": true,
"jsonMode": true,
"maxTokens": true,
"hasEmbeddings": true
}
```
##### C. 中文提供商配置示例
```javascript
// src/config/providers/baidu.json - 🆕 新增支持
{
"url": "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat",
"modelsEndpoint": "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/models",
"model": {
"default": "ernie-3.5-8k",
"large": "ernie-4.0-8k",
"small": "ernie-speed-128k",
"agent": "ernie-4.0-8k"
},
"modelsFile": "./data/models/baidu.json",
"authType": "access_token",
"createMessageObject": "getBaiduMessageObject",
"stream": true,
"jsonMode": false,
"maxTokens": true,
"hasEmbeddings": false
}
// src/config/providers/zhipuai.json - 🆕 新增支持
{
"url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
"modelsEndpoint": "https://open.bigmodel.cn/api/paas/v4/models",
"model": {
"default": "glm-4-flash",
"large": "glm-4",
"small": "glm-4-flash",
"agent": "glm-4"
},
"modelsFile": "./data/models/zhipuai.json",
"createMessageObject": "getMessageObject",
"stream": true,
"jsonMode": false,
"maxTokens": true,
"hasEmbeddings": false
}
```
#### 2. 模型信息数据库设计
```javascript
// src/core/modelDatabase.js - 模型信息数据库
class ModelDatabase {
constructor(dbPath = './data/models.db') {
this.dbPath = dbPath;
this.db = null;
this.jsonBackup = './data/models.json'; // JSON备份文件
}
// 初始化数据库
async initialize() {
// 支持SQLite和JSON两种存储方式
if (this.useSQLite) {
await this.initializeSQLite();
} else {
await this.initializeJSON();
}
console.log('📊 模型数据库初始化完成');
}
// 插入或更新模型信息
async upsertModel(modelInfo) {
const modelData = {
id: `${modelInfo.provider}_${modelInfo.name}`,
provider: modelInfo.provider,
name: modelInfo.name,
displayName: modelInfo.displayName || modelInfo.name,
description: modelInfo.description,
capabilities: {
chat: modelInfo.capabilities?.chat || false,
streaming: modelInfo.capabilities?.streaming || false,
vision: modelInfo.capabilities?.vision || false,
audio: modelInfo.capabilities?.audio || false,
embeddings: modelInfo.capabilities?.embeddings || false,
jsonMode: modelInfo.capabilities?.jsonMode || false
},
parameters: {
maxTokens: modelInfo.parameters?.maxTokens,
contextWindow: modelInfo.parameters?.contextWindow,
inputCostPer1k: modelInfo.parameters?.inputCostPer1k,
outputCostPer1k: modelInfo.parameters?.outputCostPer1k
},
metadata: {
releaseDate: modelInfo.metadata?.releaseDate,
version: modelInfo.metadata?.version,
status: modelInfo.metadata?.status || 'active', // active, deprecated, beta
lastUpdated: new Date().toISOString(),
discoveredAt: modelInfo.metadata?.discoveredAt || new Date().toISOString()
},
apiInfo: {
endpoint: modelInfo.apiInfo?.endpoint,
authType: modelInfo.apiInfo?.authType,
rateLimit: modelInfo.apiInfo?.rateLimit
}
};
await this.saveModel(modelData);
console.log(`💾 已保存模型信息: ${modelData.id}`);
}
// 查询模型信息
async queryModels(filters = {}) {
const allModels = await this.getAllModels();
return allModels.filter(model => {
if (filters.provider && model.provider !== filters.provider) return false;
if (filters.capability && !model.capabilities[filters.capability]) return false;
if (filters.status && model.metadata.status !== filters.status) return false;
if (filters.maxTokens && model.parameters.maxTokens < filters.maxTokens) return false;
return true;
});
}
// 获取提供商的所有模型
async getProviderModels(provider) {
return await this.queryModels({ provider });
}
// 获取最新发现的模型
async getRecentlyDiscovered(hours = 24) {
const cutoff = new Date(Date.now() - hours * 60 * 60 * 1000);
const allModels = await this.getAllModels();
return allModels.filter(model =>
new Date(model.metadata.discoveredAt) > cutoff
);
}
// 模型统计信息
async getModelStats() {
const allModels = await this.getAllModels();
const providers = [...new Set(allModels.map(m => m.provider))];
return {
totalModels: allModels.length,
totalProviders: providers.length,
modelsByProvider: providers.reduce((acc, provider) => {
acc[provider] = allModels.filter(m => m.provider === provider).length;
return acc;
}, {}),
modelsByCapability: {
chat: allModels.filter(m => m.capabilities.chat).length,
vision: allModels.filter(m => m.capabilities.vision).length,
audio: allModels.filter(m => m.capabilities.audio).length,
embeddings: allModels.filter(m => m.capabilities.embeddings).length
},
lastUpdated: new Date().toISOString()
};
}
}
```
#### 2. JSON数据库结构
```json
{
"version": "1.0",
"lastUpdated": "2024-01-15T10:30:00Z",
"models": {
"openai_gpt-4o": {
"id": "openai_gpt-4o",
"provider": "openai",
"name": "gpt-4o",
"displayName": "GPT-4o",
"description": "Latest multimodal model from OpenAI",
"capabilities": {
"chat": true,
"streaming": true,
"vision": true,
"audio": false,
"embeddings": false,
"jsonMode": true
},
"parameters": {
"maxTokens": 4096,
"contextWindow": 128000,
"inputCostPer1k": 0.005,
"outputCostPer1k": 0.015
},
"metadata": {
"releaseDate": "2024-01-01",
"version": "1.0",
"status": "active",
"lastUpdated": "2024-01-15T10:30:00Z",
"discoveredAt": "2024-01-01T00:00:00Z"
},
"apiInfo": {
"endpoint": "/v1/chat/completions",
"authType": "bearer",
"rateLimit": "10000/min"
}
},
"baidu_ernie-4.0": {
"id": "baidu_ernie-4.0",
"provider": "baidu",
"name": "ernie-4.0",
"displayName": "文心大模型4.0",
"description": "百度文心大模型4.0版本",
"capabilities": {
"chat": true,
"streaming": true,
"vision": true,
"audio": false,
"embeddings": false,
"jsonMode": false
},
"parameters": {
"maxTokens": 8000,
"contextWindow": 8000,
"inputCostPer1k": 0.008,
"outputCostPer1k": 0.02
},
"metadata": {
"releaseDate": "2024-01-10",
"version": "4.0",
"status": "active",
"lastUpdated": "2024-01-15T10:30:00Z",
"discoveredAt": "2024-01-10T08:00:00Z"
},
"apiInfo": {
"endpoint": "/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-4.0",
"authType": "access_token",
"rateLimit": "1000/min"
}
}
},
"providers": {
"openai": {
"name": "OpenAI",
"website": "https://openai.com",
"apiDocs": "https://platform.openai.com/docs",
"status": "active",
"lastChecked": "2024-01-15T10:25:00Z"
},
"baidu": {
"name": "百度智能云",
"website": "https://cloud.baidu.com",
"apiDocs": "https://cloud.baidu.com/doc/WENXINWORKSHOP",
"status": "active",
"lastChecked": "2024-01-15T10:25:00Z"
}
},
"stats": {
"totalModels": 2,
"totalProviders": 2,
"lastDiscovery": "2024-01-15T10:00:00Z"
}
}
```
#### 3. 核心:动态模型发现系统
```javascript
// src/core/modelDiscovery.js - 核心模型发现引擎
class DynamicModelDiscovery {
constructor() {
this.modelDatabase = new ModelDatabase();
this.discoveryScheduler = null;
this.healthMonitor = null;
this.versionTracker = new ModelVersionTracker();
}
// 🚀 核心功能:启动动态发现
async startDynamicDiscovery() {
console.log('🚀 启动动态模型发现系统...');
// 立即进行一次全面扫描
await this.performFullDiscovery();
// 设置定期扫描
this.discoveryScheduler = setInterval(async () => {
await this.discoverLatestModels();
}, 6 * 60 * 60 * 1000); // 每6小时扫描一次
// 启动健康监控
this.startHealthMonitoring();
}
// 发现最新模型
async discoverLatestModels() {
const timestamp = new Date().toISOString();
console.log(`🔍 [${timestamp}] 开始扫描最新模型...`);
const allProviders = this.getAllProviders();
const discoveries = await Promise.allSettled(
allProviders.map(provider => this.scanProvider(provider))
);
let newModelsCount = 0;
discoveries.forEach((result, index) => {
if (result.status === 'fulfilled' && result.value.newModels > 0) {
newModelsCount += result.value.newModels;
console.log(`✅ ${allProviders[index]}: 发现 ${result.value.newModels} 个新模型`);
}
});
if (newModelsCount > 0) {
console.log(`🎉 总共发现 ${newModelsCount} 个新模型!`);
await this.notifyNewModels(newModelsCount);
}
}
// 扫描单个提供商
async scanProvider(provider) {
try {
const currentModels = await this.fetchProviderModels(provider);
const existingModels = this.modelRegistry.get(provider) || [];
const newModels = this.compareAndUpdateModels(provider, currentModels, existingModels);
return { provider, newModels: newModels.length, status: 'success' };
} catch (error) {
console.warn(`⚠️ ${provider} 扫描失败:`, error.message);
return { provider, newModels: 0, status: 'failed', error };
}
}
// 零延迟集成新模型
async integrateNewModel(provider, model) {
// 立即可用,无需重启
const modelInfo = {
provider,
name: model.name,
displayName: model.displayName,
description: model.description,
capabilities: await this.detectModelCapabilities(provider, model),
parameters: model.parameters,
metadata: {
releaseDate: model.releaseDate,
version: model.version,
status: 'active',
discoveredAt: new Date().toISOString()
},
apiInfo: model.apiInfo
};
// 保存到数据库
await this.modelDatabase.upsertModel(modelInfo);
// 更新运行时注册表
await this.updateRuntimeRegistry(modelInfo);
console.log(`⚡ 新模型已集成并保存: ${provider}/${model.name}`);
}
}
}
```
#### 4. 数据库API使用示例
```javascript
// 使用模型数据库的API示例
const modelDB = new ModelDatabase();
// 初始化数据库
await modelDB.initialize();
// 查询所有OpenAI模型
const openaiModels = await modelDB.getProviderModels('openai');
console.log('OpenAI模型:', openaiModels);
// 查询支持vision的模型
const visionModels = await modelDB.queryModels({ capability: 'vision' });
console.log('支持视觉的模型:', visionModels);
// 获取最近24小时发现的新模型
const newModels = await modelDB.getRecentlyDiscovered(24);
console.log('最新发现的模型:', newModels);
// 获取数据库统计信息
const stats = await modelDB.getModelStats();
console.log('数据库统计:', stats);
// 集成到LLMInterface
LLMInterface.modelDatabase = modelDB;
// 动态获取可用模型
const availableModels = await LLMInterface.getAvailableModels('baidu');
console.log('百度可用模型:', availableModels);
```
#### 5. 中文提供商接口实现
```javascript
// src/interfaces/baidu.js - 百度文心一言实现
class BaiduInterface extends BaseInterface {
constructor() {
super();
this.baseUrl = 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop';
this.supportedModels = {
'ernie-4.0-8k': { maxTokens: 8000, multimodal: true },
'ernie-3.5-8k': { maxTokens: 8000, multimodal: false },
'ernie-speed-128k': { maxTokens: 128000, multimodal: false }
};
}
async sendMessage(message, options = {}) {
const accessToken = await this.getAccessToken();
const model = options.model || 'ernie-3.5-8k';
const response = await this.makeRequest(`/chat/${model}`, {
messages: this.formatMessages(message),
...options
}, accessToken);
return this.formatResponse(response);
}
// 动态获取最新模型列表
async getLatestModels() {
const accessToken = await this.getAccessToken();
const response = await this.makeRequest('/models', {}, accessToken);
return response.data.models;
}
}
```
### 成功指标监控
- **模型覆盖率**: 目标 95% 的主要中文大模型
- **发现延迟**: 新模型发布后 24 小时内检测到
- **数据库完整性**: 99%+ 模型信息准确率
- **数据库性能**: 查询响应时间 < 100ms
- **API响应时间**: 平均 < 2 秒
- **错误率**: < 1% API调用失败率
- **数据同步**: 实时数据库更新成功率 > 99.5%
- **社区贡献**: 每月 5+ 新模型提交
---
*Last Updated: January 2024*
*Next Review: Quarterly*
*版本: v3.0 规划 (支持全球大模型)*