Files
journal_organizer/CLAUDE_API_CONFIGURATION.md
T
windyboy f7e54692a9 Initial project setup: Obsidian intelligent journal organizer
- Add core agent architecture with Command + Skill pattern
- Implement Claude API integration for content analysis
- Add Obsidian REST API integration for vault operations
- Create conversational interface (v2.0) with natural language processing
- Add comprehensive configuration management and validation
- Include project documentation and developer guides
- Set up testing framework with unit, integration, and property tests
- Add Kiro specs for Claude API configuration and code quality improvements
- Configure project steering files for development guidelines
2025-12-31 17:55:10 +08:00

581 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Claude API 配置指南
本指南详细介绍如何配置和使用 Claude API 的增强功能,包括自定义 API 端点、模型选择和环境变量管理。
## 概述
Claude API 配置系统支持以下增强功能:
- **自定义 API 端点**:支持代理服务器、区域端点和自定义部署
- **灵活的模型选择**:支持所有当前 Claude 模型和自动迁移
- **环境变量集成**:完整的环境变量支持和默认值处理
- **向后兼容性**:自动迁移旧配置格式
- **全面的错误处理**:详细的错误消息和修复建议
## 基本配置
### 最小配置
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
```
系统将自动使用以下默认值:
- `api_url`: `https://api.anthropic.com`
- `model`: `claude-3-5-sonnet-20241022`
- `max_tokens`: `4096`
- `temperature`: `0.7`
### 完整配置示例
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://api.anthropic.com"
model: "claude-3-5-sonnet-20241022"
max_tokens: 4096
temperature: 0.7
```
## API 端点配置
### 官方 API 端点
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://api.anthropic.com" # 默认官方端点
```
### 代理服务器配置
#### 企业代理服务器
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://claude-proxy.company.com"
```
#### 带端口的代理服务器
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://proxy.example.com:8080"
```
#### 内部 API 网关
```yaml
claude:
api_key: "${COMPANY_CLAUDE_KEY}"
api_url: "https://api-gateway.internal:8443/claude"
```
### 本地开发环境
#### HTTP 本地端点
```yaml
claude:
api_key: "local-dev-key"
api_url: "http://localhost:3128"
```
#### HTTPS 本地端点
```yaml
claude:
api_key: "local-dev-key"
api_url: "https://localhost:8080"
```
**注意**:本地 HTTPS 端点会自动禁用 SSL 证书验证。
### 区域端点(如果可用)
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}"
api_url: "https://api-eu.anthropic.com" # 欧洲端点
```
## 模型配置
### 支持的模型
#### 当前推荐模型
```yaml
claude:
model: "claude-3-5-sonnet-20241022" # 最新最强,推荐用于生产
```
#### 所有支持的模型
```yaml
# Claude 3.5 系列(最新)
model: "claude-3-5-sonnet-20241022" # 最强性能
model: "claude-3-5-haiku-20241022" # 快速响应
# Claude 3 系列
model: "claude-3-opus-20240229" # 最强推理能力
model: "claude-3-sonnet-20240229" # 平衡性能和成本
model: "claude-3-haiku-20240307" # 最快最经济
# 最新别名(自动使用最新版本)
model: "claude-3-5-sonnet-latest"
model: "claude-3-5-haiku-latest"
model: "claude-3-opus-latest"
model: "claude-3-sonnet-latest"
model: "claude-3-haiku-latest"
```
### 模型选择建议
#### 生产环境
```yaml
claude:
model: "claude-3-5-sonnet-20241022" # 最佳性能
max_tokens: 4096
temperature: 0.7
```
#### 开发和测试
```yaml
claude:
model: "claude-3-haiku-20240307" # 快速且经济
max_tokens: 2048
temperature: 0.5
```
#### 复杂分析任务
```yaml
claude:
model: "claude-3-opus-20240229" # 最强推理能力
max_tokens: 8192
temperature: 0.3
```
### 自动模型迁移
系统会自动迁移旧的模型名称:
```yaml
# 旧配置(自动迁移)
model: "claude-3-sonnet" # → claude-3-sonnet-20240229
model: "claude-3-opus" # → claude-3-opus-20240229
model: "claude-3-haiku" # → claude-3-haiku-20240307
model: "sonnet" # → claude-3-5-sonnet-20241022
model: "opus" # → claude-3-opus-20240229
model: "haiku" # → claude-3-haiku-20240307
```
## 环境变量配置
### 基本环境变量
#### 必需的环境变量
```bash
# Claude API 密钥(必需)
export ANTHROPIC_API_KEY="sk-ant-your-api-key-here"
```
#### 可选的环境变量
```bash
# 自定义 API 端点
export CLAUDE_API_URL="https://api.anthropic.com"
# 自定义模型
export CLAUDE_MODEL="claude-3-5-sonnet-20241022"
# 自定义参数
export CLAUDE_MAX_TOKENS="4096"
export CLAUDE_TEMPERATURE="0.7"
```
### 环境变量语法
#### 基本语法
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY}" # 必需变量
api_url: "${CLAUDE_API_URL}" # 可选变量
```
#### 带默认值的语法
```yaml
claude:
api_url: "${CLAUDE_API_URL:-https://api.anthropic.com}"
model: "${CLAUDE_MODEL:-claude-3-5-sonnet-20241022}"
max_tokens: "${CLAUDE_MAX_TOKENS:-4096}"
temperature: "${CLAUDE_TEMPERATURE:-0.7}"
```
#### 带错误消息的语法
```yaml
claude:
api_key: "${ANTHROPIC_API_KEY:?请设置 ANTHROPIC_API_KEY 环境变量}"
```
### 环境变量管理
#### 使用 .env 文件
```bash
# 创建 .env 文件
cat > .env << EOF
ANTHROPIC_API_KEY=sk-ant-your-api-key-here
CLAUDE_API_URL=https://api.anthropic.com
CLAUDE_MODEL=claude-3-5-sonnet-20241022
CLAUDE_MAX_TOKENS=4096
CLAUDE_TEMPERATURE=0.7
EOF
# 加载环境变量
set -a; source .env; set +a
```
#### 永久设置环境变量
```bash
# 添加到 shell 配置文件
echo 'export ANTHROPIC_API_KEY="sk-ant-your-api-key-here"' >> ~/.bashrc
echo 'export CLAUDE_API_URL="https://api.anthropic.com"' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
```
## 高级配置
### 参数调优
#### 最大 Token 数配置
```yaml
claude:
max_tokens: 1024 # 短回复,快速响应
max_tokens: 4096 # 标准回复(推荐)
max_tokens: 8192 # 长回复,详细分析
max_tokens: 16384 # 超长回复,复杂任务
```
#### 温度参数配置
```yaml
claude:
temperature: 0.0 # 最确定的输出
temperature: 0.3 # 较确定,适合分析任务
temperature: 0.7 # 平衡创造性和一致性(推荐)
temperature: 1.0 # 最有创造性的输出
```
### 多环境配置
#### 开发环境
```yaml
claude:
api_key: "${DEV_CLAUDE_KEY}"
api_url: "${DEV_CLAUDE_URL:-https://dev-api.example.com}"
model: "claude-3-haiku-20240307" # 快速且经济
max_tokens: 2048
temperature: 0.0 # 确定性输出用于测试
```
#### 生产环境
```yaml
claude:
api_key: "${PROD_CLAUDE_KEY}"
api_url: "https://api.anthropic.com"
model: "claude-3-5-sonnet-20241022" # 最佳性能
max_tokens: 4096
temperature: 0.7
```
#### 测试环境
```yaml
claude:
api_key: "${TEST_CLAUDE_KEY}"
api_url: "${TEST_CLAUDE_URL:-https://test-api.example.com}"
model: "claude-3-haiku-20240307"
max_tokens: 1024
temperature: 0.0
```
## 配置验证
### 验证配置文件
```bash
# 检查配置文件语法
python -c "
import yaml
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f)
print('配置文件语法正确')
"
```
### 验证环境变量
```bash
# 检查必需的环境变量
echo "ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-(未设置)}"
echo "CLAUDE_API_URL: ${CLAUDE_API_URL:-(使用默认值)}"
echo "CLAUDE_MODEL: ${CLAUDE_MODEL:-(使用默认值)}"
```
### 测试配置加载
```python
# 测试完整配置加载
from config import Config
try:
config = Config('config.yaml')
print('✅ 配置加载成功')
print(f'API URL: {config.claude.api_url}')
print(f'Model: {config.claude.model}')
print(f'Max Tokens: {config.claude.max_tokens}')
print(f'Temperature: {config.claude.temperature}')
except Exception as e:
print(f'❌ 配置错误: {e}')
```
## 故障排除
### 常见错误和解决方案
#### API 密钥格式错误
```
ClaudeAPIKeyError: Claude API key should start with 'sk-ant-'
```
**解决方案**
- 确保 API 密钥以 `sk-ant-` 开头
- 检查密钥长度(应该超过 50 个字符)
- 从 https://console.anthropic.com/ 获取正确的密钥
#### API URL 格式错误
```
ClaudeAPIURLError: Invalid URL format: not-a-url
```
**解决方案**
- 使用完整的 URL,包括协议(http:// 或 https://
- 检查 URL 格式是否正确
- 确保端点可访问
#### 模型名称无效
```
ClaudeModelValidationError: Invalid model name: invalid-model
```
**解决方案**
- 使用支持的模型名称
- 检查模型名称拼写
- 参考本文档的模型列表
#### 环境变量未设置
```
EnvironmentVariableError: Environment variable 'ANTHROPIC_API_KEY' is not set
```
**解决方案**
- 设置必需的环境变量
- 检查环境变量名称拼写
- 使用带默认值的语法
### 调试技巧
#### 启用详细日志
```bash
python -m journal_organizer --log-level DEBUG organize
```
#### 检查配置值
```python
from config import Config
config = Config('config.yaml')
print(f'实际配置值:')
print(f' API Key: {"已设置" if config.claude.api_key else "未设置"}')
print(f' API URL: {config.claude.api_url}')
print(f' Model: {config.claude.model}')
```
## 最佳实践
### 安全最佳实践
1. **使用环境变量存储敏感信息**
```yaml
# ✅ 推荐
api_key: "${ANTHROPIC_API_KEY}"
# ❌ 不推荐
api_key: "sk-ant-actual-key-here"
```
2. **设置适当的文件权限**
```bash
chmod 600 config.yaml
```
3. **使用 .gitignore 保护配置文件**
```bash
echo "config.yaml" >> .gitignore
echo ".env" >> .gitignore
```
### 性能最佳实践
1. **选择合适的模型**
- 生产环境:`claude-3-5-sonnet-20241022`
- 开发测试:`claude-3-haiku-20240307`
- 复杂任务:`claude-3-opus-20240229`
2. **优化参数设置**
- 根据任务调整 `max_tokens`
- 根据需求设置 `temperature`
3. **使用连接池和重试机制**
- 系统自动处理连接管理
- 内置错误重试机制
### 维护最佳实践
1. **定期更新配置**
- 检查新的模型版本
- 更新 API 端点配置
2. **监控配置变化**
- 记录配置迁移
- 验证配置更新
3. **备份重要配置**
```bash
cp config.yaml config.yaml.backup
```
## 示例配置
### 企业环境完整配置
```yaml
# 企业环境 Claude API 配置
claude:
# 使用企业 API 密钥
api_key: "${COMPANY_CLAUDE_KEY:?请设置企业 Claude API 密钥}"
# 使用企业代理服务器
api_url: "${CLAUDE_PROXY_URL:-https://claude-proxy.company.com}"
# 使用最新最强模型
model: "${CLAUDE_MODEL:-claude-3-5-sonnet-20241022}"
# 企业级参数设置
max_tokens: "${CLAUDE_MAX_TOKENS:-8192}"
temperature: "${CLAUDE_TEMPERATURE:-0.5}"
# 企业环境变量设置
# export COMPANY_CLAUDE_KEY="sk-ant-company-key-here"
# export CLAUDE_PROXY_URL="https://claude-proxy.company.com"
# export CLAUDE_MODEL="claude-3-5-sonnet-20241022"
# export CLAUDE_MAX_TOKENS="8192"
# export CLAUDE_TEMPERATURE="0.5"
```
### 开发环境完整配置
```yaml
# 开发环境 Claude API 配置
claude:
# 使用个人 API 密钥
api_key: "${ANTHROPIC_API_KEY:?请设置 ANTHROPIC_API_KEY 环境变量}"
# 可选择使用本地代理或官方 API
api_url: "${CLAUDE_API_URL:-https://api.anthropic.com}"
# 开发环境使用快速模型
model: "${CLAUDE_MODEL:-claude-3-haiku-20240307}"
# 开发环境参数设置
max_tokens: "${CLAUDE_MAX_TOKENS:-2048}"
temperature: "${CLAUDE_TEMPERATURE:-0.0}"
# 开发环境变量设置
# export ANTHROPIC_API_KEY="sk-ant-your-personal-key"
# export CLAUDE_API_URL="https://api.anthropic.com"
# export CLAUDE_MODEL="claude-3-haiku-20240307"
# export CLAUDE_MAX_TOKENS="2048"
# export CLAUDE_TEMPERATURE="0.0"
```
## 更新和迁移
### 从旧版本迁移
系统会自动检测和迁移旧配置:
1. **检查是否需要迁移**
```python
from configuration_migrator import ConfigurationMigrator
migrator = ConfigurationMigrator()
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f)
if migrator.check_migration_needed(config):
print('配置需要迁移')
preview = migrator.get_migration_preview(config)
for change in preview:
print(f' - {change}')
```
2. **执行迁移**
```python
migrated_config = migrator.migrate_configuration(config)
with open('config.yaml', 'w') as f:
yaml.dump(migrated_config, f, default_flow_style=False)
```
### 配置更新检查清单
- [ ] API 密钥是否有效
- [ ] API 端点是否可访问
- [ ] 模型名称是否支持
- [ ] 环境变量是否正确设置
- [ ] 配置文件权限是否安全
- [ ] 备份是否已创建
## 支持和帮助
如果遇到配置问题:
1. 查看 [TROUBLESHOOTING.md](TROUBLESHOOTING.md) 获取详细的故障排除指南
2. 检查日志文件中的错误信息
3. 验证环境变量和配置文件格式
4. 测试网络连接和 API 访问
更多信息请参考项目文档和示例配置文件。