Appearance
大语言模型配置
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对话体验。记住要根据具体使用场景选择合适的模型和参数配置。