CodeRepoIndex 配置中心
CodeRepoIndex 提供了强大的配置中心,支持多种配置方式,让您能够灵活地管理API密钥、存储设置、模型参数等。
配置管理
CodeRepoIndex 提供了灵活的配置管理系统,支持分离配置 LLM 模型和 Embedding 模型的 API 密钥和基础 URL。
配置结构
新的分离式配置结构
从 v1.0 开始,CodeRepoIndex 支持分别配置 LLM 模型和 Embedding 模型:
{
"project_name": "CodeRepoIndex",
"version": "1.0.0",
"log_level": "INFO",
"llm": {
"provider_type": "api",
"model_name": "qwen-plus",
"api_key": "your-llm-api-key",
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"timeout": 30.0,
"extra_params": {
"temperature": 0.7,
"max_tokens": 2000
}
},
"embedding": {
"provider_type": "api",
"model_name": "text-embedding-v3",
"api_key": "your-embedding-api-key",
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"timeout": 30.0,
"batch_size": 32,
"extra_params": {}
},
"storage": {
"storage_backend": "local",
"vector_backend": "memory",
"base_path": "./storage",
"cache_enabled": true,
"cache_size": 1000,
"auto_backup": true,
"backup_interval": 3600
}
}
配置项说明
LLM 配置 (llm)
provider_type: 提供商类型 (默认: “api”)model_name: LLM 模型名称 (如: “qwen-plus”, “gpt-4”)api_key: LLM API 密钥base_url: LLM API 基础 URLtimeout: 请求超时时间 (秒)extra_params: 额外参数 (如 temperature, max_tokens)
Embedding 配置 (embedding)
provider_type: 提供商类型 (默认: “api”)model_name: Embedding 模型名称 (如: “text-embedding-v3”)api_key: Embedding API 密钥base_url: Embedding API 基础 URLtimeout: 请求超时时间 (秒)batch_size: 批处理大小max_tokens: 最大 token 数量extra_params: 额外参数
存储配置 (storage)
storage_backend: 存储后端 (“local”, “s3”, “azure”)vector_backend: 向量存储后端 (“memory”, “chromadb”, “faiss”)base_path: 基础存储路径cache_enabled: 是否启用缓存cache_size: 缓存大小auto_backup: 是否自动备份backup_interval: 备份间隔 (秒)
配置方式
1. 环境变量配置(推荐)
分离式环境变量
# LLM 配置
export CODEREPO_LLM_API_KEY="your-llm-api-key"
export CODEREPO_LLM_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export CODEREPO_LLM_MODEL="qwen-plus"
export CODEREPO_LLM_PROVIDER="api"
# Embedding 配置
export CODEREPO_EMBEDDING_API_KEY="your-embedding-api-key"
export CODEREPO_EMBEDDING_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export CODEREPO_EMBEDDING_MODEL="text-embedding-v3"
export CODEREPO_EMBEDDING_PROVIDER="api"
# 存储配置
export CODEREPO_STORAGE_PATH="./storage"
export CODEREPO_STORAGE_BACKEND="local"
export CODEREPO_VECTOR_BACKEND="memory"
# 基础配置
export CODEREPO_PROJECT_NAME="MyProject"
export CODEREPO_LOG_LEVEL="INFO"
兼容性环境变量(统一配置)
# 如果 LLM 和 Embedding 使用相同的 API
export CODEREPO_API_KEY="your-unified-api-key"
export CODEREPO_BASE_URL="https://api.example.com/v1"
2. 配置文件
创建配置文件
from coderepoindex.config import load_config, save_config
# 加载并修改配置
config = load_config()
config.llm.api_key = "your-llm-key"
config.embedding.api_key = "your-embedding-key"
# 保存到文件
save_config("coderepoindex.json")
使用配置文件
from coderepoindex.config import load_config
# 自动查找 coderepoindex.json 或 config.json
config = load_config()
# 或指定文件路径
config = load_config("my_config.json")
3. 字典配置
from coderepoindex.config import load_config
config_dict = {
"llm": {
"api_key": "llm-key",
"base_url": "https://llm-api.example.com",
"model_name": "gpt-4"
},
"embedding": {
"api_key": "embedding-key",
"base_url": "https://embedding-api.example.com",
"model_name": "text-embedding-ada-002"
},
"storage": {
"base_path": "./custom_storage"
}
}
config = load_config(config_dict=config_dict)
4. 直接传参
from coderepoindex.config import load_config
config = load_config(
llm_api_key="llm-key",
llm_base_url="https://llm-api.example.com",
llm_model_name="qwen-plus",
embedding_api_key="embedding-key",
embedding_base_url="https://embedding-api.example.com",
embedding_model_name="text-embedding-v3",
storage_base_path="./storage"
)
5. 配置模板
from coderepoindex.config import get_config_template, load_config
# 使用预定义模板
config = get_config_template("production")
# 修改配置
config.llm.api_key = "your-llm-key"
config.embedding.api_key = "your-embedding-key"
# 应用配置
from coderepoindex.config import ConfigManager
manager = ConfigManager()
manager.load_config(config_dict=config.__dict__)
可用模板:
default: 默认配置production: 生产环境配置development: 开发环境配置minimal: 最小配置
配置优先级
配置加载的优先级从高到低:
直接传参 (
load_config(llm_api_key="..."))环境变量 (
CODEREPO_LLM_API_KEY)字典配置 (
config_dict)配置文件 (
coderepoindex.json,config.json)默认值
使用示例
基本使用
from coderepoindex.config import load_config
from coderepoindex.core import CodeIndexer, CodeSearcher
# 加载配置
config = load_config()
# 创建索引器和搜索器
indexer = CodeIndexer() # 自动使用当前配置
searcher = CodeSearcher() # 自动使用当前配置
不同服务使用不同 API
from coderepoindex.config import load_config
# 配置不同的 API 服务
config = load_config(
llm_api_key="openai-key",
llm_base_url="https://api.openai.com/v1",
llm_model_name="gpt-4",
embedding_api_key="cohere-key",
embedding_base_url="https://api.cohere.ai/v1",
embedding_model_name="embed-english-v3.0"
)
动态配置更新
from coderepoindex.config import ConfigManager
manager = ConfigManager()
# 运行时更新配置
manager.update_config(
llm_model_name="qwen-turbo",
embedding_batch_size=64,
storage_cache_size=2000
)
兼容性
为了保持向后兼容性,系统仍然支持旧的统一配置方式:
# 旧方式仍然有效
config = load_config(
api_key="unified-key",
base_url="https://api.example.com"
)
# 会自动应用到 LLM 和 Embedding 配置
print(config.llm.api_key) # "unified-key"
print(config.embedding.api_key) # "unified-key"
最佳实践
生产环境: 使用环境变量配置,避免在代码中硬编码密钥
开发环境: 使用配置文件,便于版本控制和团队协作
测试环境: 使用配置模板,快速切换不同配置
安全考虑:
不要将 API 密钥提交到版本控制
使用
.env文件管理环境变量在
.gitignore中排除配置文件
性能优化:
根据使用场景选择合适的向量存储后端
调整批处理大小以优化内存使用
启用缓存以提高搜索性能
配置模板
CodeRepoIndex 提供了预定义的配置模板:
开发环境
from coderepoindex import get_config_template, CodeIndexer
# 使用开发模板
config = get_config_template("development")
config.embedding.api_key = "your-api-key"
config.embedding.base_url = "your-base-url"
indexer = CodeIndexer(config=config)
生产环境
# 使用生产模板
config = get_config_template("production")
config.embedding.api_key = "your-api-key"
config.embedding.base_url = "your-base-url"
indexer = CodeIndexer(config=config)
最小配置
# 使用最小模板
config = get_config_template("minimal")
config.embedding.api_key = "your-api-key"
config.embedding.base_url = "your-base-url"
indexer = CodeIndexer(config=config)
配置项说明
模型配置 (ModelConfig)
参数 |
说明 |
默认值 |
|---|---|---|
|
API密钥 |
None |
|
API基础URL |
None |
|
LLM模型名称 |
“qwen-plus” |
|
嵌入模型名称 |
“text-embedding-v3” |
|
请求超时时间(秒) |
30.0 |
存储配置 (StorageConfig)
参数 |
说明 |
默认值 |
|---|---|---|
|
存储后端类型 |
“local” |
|
向量存储后端 |
“memory” |
|
存储基础路径 |
“./storage” |
|
是否启用缓存 |
true |
|
缓存大小 |
1000 |
嵌入配置 (EmbeddingConfig)
参数 |
说明 |
默认值 |
|---|---|---|
|
提供商类型 |
“api” |
|
模型名称 |
“text-embedding-v3” |
|
API密钥 |
None |
|
API基础URL |
None |
|
批处理大小 |
32 |
|
请求超时时间(秒) |
30.0 |
动态配置更新
您可以在运行时更新配置:
from coderepoindex import update_config, get_current_config
# 更新全局配置
update_config(
api_key="new-api-key",
base_url="new-base-url",
storage_backend="local",
vector_backend="chromadb"
)
# 获取当前配置
current_config = get_current_config()
print(f"当前API密钥: {current_config.embedding.api_key}")
环境变量参考
CodeRepoIndex 支持以下环境变量:
环境变量 |
说明 |
映射的配置项 |
|---|---|---|
|
API密钥 |
|
|
API基础URL |
|
|
LLM模型名称 |
|
|
嵌入模型名称 |
|
|
存储路径 |
|
|
存储后端 |
|
|
向量后端 |
|
|
日志级别 |
|
最佳实践
1. 安全性
不要在代码中硬编码API密钥
使用环境变量或安全的配置文件
在版本控制中排除包含敏感信息的配置文件
# .gitignore
config.json
config.yaml
.env
2. 不同环境的配置
为不同的环境使用不同的配置:
import os
from coderepoindex import get_config_template
# 根据环境选择配置模板
env = os.getenv("ENVIRONMENT", "development")
config = get_config_template(env)
# 设置API密钥
config.embedding.api_key = os.getenv("CODEREPO_API_KEY")
config.embedding.base_url = os.getenv("CODEREPO_BASE_URL")
3. 性能优化
根据您的使用场景选择合适的配置:
# 小规模项目
config = get_config_template("minimal")
# 中等规模项目
config = get_config_template("development")
# 大规模生产环境
config = get_config_template("production")
config.storage.vector_backend = "chromadb" # 更好的向量存储
config.embedding.batch_size = 64 # 更大的批处理
4. 配置验证
在启动应用前验证配置:
from coderepoindex import load_config
try:
config = load_config()
# 验证必需的配置
if not config.embedding.api_key:
raise ValueError("API密钥未设置")
if not config.embedding.base_url:
raise ValueError("API基础URL未设置")
print("✅ 配置验证通过")
except Exception as e:
print(f"❌ 配置验证失败: {e}")
exit(1)
故障排除
常见问题
配置加载失败
检查环境变量是否正确设置
验证配置文件格式是否正确
确保配置文件路径正确
API调用失败
验证API密钥是否有效
检查API基础URL是否正确
确认网络连接正常
存储错误
检查存储路径权限
确保磁盘空间充足
验证存储后端配置
调试技巧
启用调试日志:
from coderepoindex import load_config
# 加载配置并设置调试日志
config = load_config(log_level="DEBUG")
或者通过环境变量:
export CODEREPO_LOG_LEVEL="DEBUG"
这将输出详细的配置加载和使用信息,帮助您诊断问题。