Skip to content

大语言模型配置

AnythingLLM 支持多种主流的大语言模型(LLM),为您提供灵活的AI对话体验。本指南将详细介绍如何配置和优化各种LLM服务。

支持的模型提供商

OpenAI 模型

GPT 系列

  • GPT-4 Turbo: 最新的GPT-4模型,具有更大的上下文窗口
  • GPT-4: 高质量的多模态模型
  • GPT-3.5 Turbo: 快速且经济的选择

配置示例

bash
# OpenAI 配置
LLM_PROVIDER=openai
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL_PREF=gpt-4-turbo-preview
OPENAI_API_BASE=https://api.openai.com/v1

Azure OpenAI

支持的部署

  • GPT-4 部署
  • GPT-3.5 Turbo 部署
  • 自定义微调模型

配置示例

bash
# Azure OpenAI 配置
LLM_PROVIDER=azure
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
AZURE_OPENAI_KEY=your_azure_key
AZURE_OPENAI_DEPLOYMENT_NAME=your_deployment_name
AZURE_OPENAI_VERSION=2023-12-01-preview

Anthropic Claude

Claude 系列

  • Claude-3 Opus: 最强大的推理能力
  • Claude-3 Sonnet: 平衡性能和速度
  • Claude-3 Haiku: 快速响应

配置示例

bash
# Anthropic 配置
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=your_anthropic_key
ANTHROPIC_MODEL_PREF=claude-3-opus-20240229

本地模型

Ollama

支持在本地运行开源模型:

bash
# Ollama 配置
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL_PREF=llama2:7b

支持的模型:

  • Llama 2 (7B, 13B, 70B)
  • Code Llama
  • Mistral 7B
  • Vicuna
  • Orca Mini

LM Studio

bash
# LM Studio 配置
LLM_PROVIDER=lmstudio
LMSTUDIO_BASE_URL=http://localhost:1234
LMSTUDIO_MODEL_TOKEN_LIMIT=4096

自定义本地端点

bash
# 自定义端点配置
LLM_PROVIDER=localai
LOCAL_AI_BASE_URL=http://your-local-endpoint:8080
LOCAL_AI_MODEL_PREF=your_model_name
LOCAL_AI_TOKEN_LIMIT=4096

模型选择指南

按用途选择

通用对话

  • 推荐: GPT-4 Turbo, Claude-3 Sonnet
  • 经济选择: GPT-3.5 Turbo, Claude-3 Haiku

代码生成

  • 推荐: GPT-4, Code Llama
  • 专业: GitHub Copilot (通过API)

文档分析

  • 推荐: Claude-3 Opus, GPT-4
  • 大文档: Claude-3 (100K+ tokens)

创意写作

  • 推荐: GPT-4, Claude-3 Opus
  • 快速草稿: GPT-3.5 Turbo

按性能需求选择

高质量输出

bash
# 高质量配置
OPENAI_MODEL_PREF=gpt-4-turbo-preview
OPENAI_TEMPERATURE=0.3
OPENAI_MAX_TOKENS=2048

快速响应

bash
# 快速响应配置
OPENAI_MODEL_PREF=gpt-3.5-turbo
OPENAI_TEMPERATURE=0.7
OPENAI_MAX_TOKENS=1024

成本优化

bash
# 成本优化配置
LLM_PROVIDER=ollama
OLLAMA_MODEL_PREF=llama2:7b
# 或使用 Claude Haiku
ANTHROPIC_MODEL_PREF=claude-3-haiku-20240307

高级配置

模型参数调优

温度设置

bash
# 创意任务 (0.7-1.0)
OPENAI_TEMPERATURE=0.8

# 分析任务 (0.0-0.3)
OPENAI_TEMPERATURE=0.1

# 平衡设置 (0.3-0.7)
OPENAI_TEMPERATURE=0.5

Token 限制

bash
# 短回答
OPENAI_MAX_TOKENS=512

# 中等长度
OPENAI_MAX_TOKENS=1024

# 长回答
OPENAI_MAX_TOKENS=2048

# 最大限制
OPENAI_MAX_TOKENS=4096

其他参数

bash
# Top-p 采样
OPENAI_TOP_P=0.9

# 频率惩罚
OPENAI_FREQUENCY_PENALTY=0.0

# 存在惩罚
OPENAI_PRESENCE_PENALTY=0.0

多模型配置

模型切换

javascript
// 动态模型选择
const modelConfig = {
  "conversation": "gpt-4-turbo-preview",
  "code": "gpt-4",
  "analysis": "claude-3-opus-20240229",
  "quick": "gpt-3.5-turbo"
};

负载均衡

bash
# 主要提供商
PRIMARY_LLM_PROVIDER=openai
PRIMARY_OPENAI_API_KEY=key1

# 备用提供商
FALLBACK_LLM_PROVIDER=anthropic
FALLBACK_ANTHROPIC_API_KEY=key2

# 启用自动切换
ENABLE_LLM_FALLBACK=true

性能优化

缓存策略

响应缓存

bash
# 启用LLM响应缓存
ENABLE_LLM_CACHE=true
LLM_CACHE_TTL=3600  # 1小时

# Redis缓存
LLM_CACHE_TYPE=redis
REDIS_URL=redis://localhost:6379

智能缓存

javascript
// 缓存配置
const cacheConfig = {
  enabled: true,
  ttl: 3600,
  keyStrategy: "content-hash",
  compression: true
};

请求优化

批量处理

bash
# 启用批量请求
ENABLE_LLM_BATCHING=true
LLM_BATCH_SIZE=5
LLM_BATCH_TIMEOUT=2000  # 2秒

流式响应

bash
# 启用流式输出
ENABLE_LLM_STREAMING=true
STREAM_CHUNK_SIZE=1024

并发控制

速率限制

bash
# API调用限制
LLM_RATE_LIMIT_RPM=60      # 每分钟请求数
LLM_RATE_LIMIT_TPM=90000   # 每分钟Token数

# 并发限制
LLM_MAX_CONCURRENT=10

队列管理

bash
# 请求队列
ENABLE_LLM_QUEUE=true
LLM_QUEUE_SIZE=100
LLM_QUEUE_TIMEOUT=30000  # 30秒

监控与分析

使用统计

基础监控

bash
# 启用使用统计
ENABLE_LLM_ANALYTICS=true
LLM_ANALYTICS_PROVIDER=internal

# 详细日志
LLM_LOG_LEVEL=info
LLM_LOG_REQUESTS=true
LLM_LOG_RESPONSES=false  # 隐私考虑

成本追踪

javascript
// 成本监控配置
const costTracking = {
  enabled: true,
  providers: {
    openai: {
      inputCostPer1K: 0.01,
      outputCostPer1K: 0.03
    },
    anthropic: {
      inputCostPer1K: 0.008,
      outputCostPer1K: 0.024
    }
  }
};

性能监控

响应时间

bash
# 性能监控
ENABLE_LLM_METRICS=true
LLM_METRICS_INTERVAL=60000  # 1分钟

# 告警阈值
LLM_RESPONSE_TIME_THRESHOLD=5000  # 5秒
LLM_ERROR_RATE_THRESHOLD=0.05     # 5%

健康检查

javascript
// 健康检查端点
app.get('/api/llm/health', async (req, res) => {
  const health = await checkLLMHealth();
  res.json(health);
});

安全配置

API密钥管理

环境变量

bash
# 生产环境
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."

# 开发环境
cp .env.example .env
# 编辑 .env 文件

密钥轮换

bash
# 自动密钥轮换
ENABLE_KEY_ROTATION=true
KEY_ROTATION_INTERVAL=2592000  # 30天

# 多密钥支持
OPENAI_API_KEYS="key1,key2,key3"

内容过滤

输入过滤

bash
# 启用内容过滤
ENABLE_CONTENT_FILTER=true
CONTENT_FILTER_LEVEL=moderate

# 自定义过滤规则
CUSTOM_FILTER_RULES=/path/to/filter-rules.json

输出验证

javascript
// 输出验证
const outputValidation = {
  maxLength: 4096,
  bannedPatterns: [
    /personal.*information/i,
    /credit.*card/i
  ],
  requireModeration: true
};

故障排除

常见问题

API连接问题

bash
# 检查网络连接
curl -I https://api.openai.com/v1/models

# 验证API密钥
curl -H "Authorization: Bearer $OPENAI_API_KEY" \
     https://api.openai.com/v1/models

模型不可用

bash
# 检查模型列表
curl -H "Authorization: Bearer $OPENAI_API_KEY" \
     https://api.openai.com/v1/models | jq '.data[].id'

# 测试特定模型
curl -X POST https://api.openai.com/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello"}],
    "max_tokens": 10
  }'

性能问题

bash
# 检查响应时间
time curl -X POST https://api.openai.com/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Hi"}]}'

# 监控系统资源
top -p $(pgrep -f anythingllm)

调试工具

日志分析

bash
# 查看LLM相关日志
tail -f logs/anythingllm.log | grep -i llm

# 错误日志
grep -i error logs/anythingllm.log | grep -i llm

测试脚本

javascript
// test-llm.js
const { testLLMConnection } = require('./utils/llm-test');

async function runTests() {
  const providers = ['openai', 'anthropic', 'ollama'];
  
  for (const provider of providers) {
    console.log(`Testing ${provider}...`);
    const result = await testLLMConnection(provider);
    console.log(`${provider}: ${result.success ? 'OK' : 'FAILED'}`);
    if (!result.success) {
      console.error(`Error: ${result.error}`);
    }
  }
}

runTests();

最佳实践

生产部署

配置检查清单

  • [ ] API密钥已设置且有效
  • [ ] 模型名称正确
  • [ ] 速率限制已配置
  • [ ] 缓存已启用
  • [ ] 监控已设置
  • [ ] 备用提供商已配置
  • [ ] 安全过滤已启用

性能优化

  • 使用适当的模型大小
  • 启用响应缓存
  • 配置合理的超时时间
  • 实施请求队列
  • 监控API使用量

成本控制

  • 设置使用限额
  • 监控Token消耗
  • 使用经济型模型处理简单任务
  • 实施智能缓存策略

开发建议

测试策略

javascript
// 模型测试套件
describe('LLM Integration', () => {
  test('OpenAI connection', async () => {
    const response = await llm.chat('Hello');
    expect(response).toBeDefined();
  });
  
  test('Fallback mechanism', async () => {
    // 模拟主要提供商失败
    const response = await llm.chatWithFallback('Hello');
    expect(response.provider).toBe('fallback');
  });
});

错误处理

javascript
// 健壮的错误处理
async function safeLLMCall(prompt) {
  try {
    return await llm.chat(prompt);
  } catch (error) {
    if (error.code === 'rate_limit') {
      await sleep(1000);
      return await safeLLMCall(prompt);
    }
    throw error;
  }
}

通过合理配置和优化大语言模型,您可以为用户提供高质量、高性能的AI对话体验。记住要根据具体使用场景选择合适的模型和参数配置。

AnythingLLM 是一个功能强大的开源 AI 知识管理平台,支持多种 LLM 模型,让您轻松构建智能对话系统和知识库。