搭建开发环境
在本章中,我们将搭建完整的开发环境,为后续的治理平台开发做好准备。
环境要求
系统要求:
操作系统: Windows / macOS / Linux
Python版本: 3.12 或更高
内存: 最低 8GB(推荐 16GB)
磁盘: 最低 10GB 可用空间
外部服务:
OpenAI API密钥(可选,用于Moderation API)
网络连接(用于下载依赖)
项目初始化
步骤1: 创建项目目录
# 创建项目根目录
mkdir llm-governance-platform
cd llm-governance-platform
# 创建目录结构
mkdir -p api/routes
mkdir -p api/middleware
mkdir -p core
mkdir -p services
mkdir -p dashboard
mkdir -p tests
mkdir -p logs
mkdir -p data
步骤2: 创建虚拟环境
# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python3 -m venv venv
source venv/bin/activate
步骤3: 创建 requirements.txt
创建 requirements.txt 文件:
# Web框架
fastapi>=0.109.0
uvicorn[standard]>=0.27.0
python-multipart>=0.0.6
# LLM相关
openai>=1.10.0
langchain>=0.1.0
langchain-openai>=0.0.5
langchain-community>=0.0.15
# 数据处理
pydantic>=2.5.0
pydantic-settings>=2.1.0
# 向量数据库
chromadb>=0.4.0
# 监控
prometheus-client>=0.19.0
# 日志
loguru>=0.7.0
# 工具
python-dotenv>=1.0.0
httpx>=0.26.0
aiofiles>=23.2.0
# 前端
streamlit>=1.29.0
plotly>=5.18.0
# 测试
pytest>=7.4.0
pytest-asyncio>=0.23.0
步骤4: 安装依赖
pip install --upgrade pip
pip install -r requirements.txt
项目结构说明
graph TB
A[llm-governance-platform] --> B[api/]
A --> C[core/]
A --> D[services/]
A --> E[dashboard/]
A --> F[tests/]
A --> G[logs/]
A --> H[data/]
A --> I[配置文件]
B --> B1[routes/ - API路由]
B --> B2[middleware/ - 中间件]
C --> C1[content_auditor.py - 内容审核]
C --> C2[security_scanner.py - 安全扫描]
C --> C3[rule_engine.py - 规则引擎]
C --> C4[monitor.py - 监控]
D --> D1[llm_service.py - LLM服务]
D --> D2[audit_service.py - 审计服务]
D --> D3[alert_service.py - 告警服务]
E --> E1[app.py - Streamlit仪表盘]
F --> F1[单元测试]
F --> F2[集成测试]
I --> I1[.env - 环境变量]
I --> I2[config.py - 配置]
I --> I3[requirements.txt - 依赖]
环境变量配置
创建 .env 文件:
# OpenAI配置
OPENAI_API_KEY=your_api_key_here
OPENAI_MODEL=gpt-4o-mini
# 服务器配置
HOST=0.0.0.0
PORT=8000
DEBUG=True
# 数据库配置
CHROMA_PERSIST_DIR=./data/chroma_db
# 监控配置
PROMETHEUS_PORT=9090
# 日志配置
LOG_LEVEL=INFO
LOG_DIR=./logs
# 规则配置
RULES_FILE=./data/rules.json
# 监控阈值
MAX_TOKENS_PER_REQUEST=4000
MAX_REQUESTS_PER_MINUTE=60
基础配置文件
创建 config.py:
from pydantic_settings import BaseSettings
from typing import Optional
import os
class Settings(BaseSettings):
"""应用配置"""
# OpenAI配置
openai_api_key: str
openai_model: str = "gpt-4o-mini"
# 服务器配置
host: str = "0.0.0.0"
port: int = 8000
debug: bool = True
# 数据库配置
chroma_persist_dir: str = "./data/chroma_db"
# 监控配置
prometheus_port: int = 9090
# 日志配置
log_level: str = "INFO"
log_dir: str = "./logs"
# 规则配置
rules_file: str = "./data/rules.json"
# 监控阈值
max_tokens_per_request: int = 4000
max_requests_per_minute: int = 60
class Config:
env_file = ".env"
case_sensitive = False
# 创建全局配置实例
settings = Settings()
# 确保必要的目录存在
os.makedirs(settings.log_dir, exist_ok=True)
os.makedirs(settings.chroma_persist_dir, exist_ok=True)
os.makedirs(os.path.dirname(settings.rules_file), exist_ok=True)
基础日志配置
创建 logger.py:
from loguru import logger
import sys
from pathlib import Path
from config import settings
def setup_logger():
"""配置日志系统"""
# 移除默认处理器
logger.remove()
# 控制台输出
logger.add(
sys.stdout,
level=settings.log_level,
format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
colorize=True
)
# 文件输出 - 所有日志
logger.add(
Path(settings.log_dir) / "app.log",
rotation="500 MB",
retention="10 days",
level="DEBUG",
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}"
)
# 文件输出 - 错误日志
logger.add(
Path(settings.log_dir) / "error.log",
rotation="100 MB",
retention="30 days",
level="ERROR",
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}"
)
return logger
# 初始化日志
setup_logger()
创建测试文件
创建 tests/__init__.py:
# 测试包
创建 tests/test_config.py:
import pytest
from config import settings
def test_settings_openai_key():
"""测试OpenAI API密钥配置"""
assert settings.openai_api_key != ""
assert len(settings.openai_api_key) > 20
def test_settings_server():
"""测试服务器配置"""
assert settings.host in ["0.0.0.0", "127.0.0.1", "localhost"]
assert isinstance(settings.port, int)
assert 1024 < settings.port < 65536
def test_settings_limits():
"""测试限制配置"""
assert settings.max_tokens_per_request > 0
assert settings.max_requests_per_minute > 0
验证环境
运行测试
# 安装pytest插件
pip install pytest-asyncio
# 运行测试
pytest tests/ -v
创建健康检查脚本
创建 check_env.py:
#!/usr/bin/env python3
"""环境检查脚本"""
import sys
import os
from pathlib import Path
from loguru import logger
def check_python_version():
"""检查Python版本"""
version = sys.version_info
if version.major == 3 and version.minor >= 12:
logger.success(f"✅ Python版本: {version.major}.{version.minor}.{version.micro}")
return True
else:
logger.error(f"❌ Python版本过低: {version.major}.{version.minor}.{version.micro}")
logger.error(" 需要Python 3.12或更高版本")
return False
def check_directories():
"""检查必要目录"""
required_dirs = [
"api/routes",
"api/middleware",
"core",
"services",
"dashboard",
"tests",
"logs",
"data"
]
all_exist = True
for dir_path in required_dirs:
if Path(dir_path).exists():
logger.success(f"✅ 目录存在: {dir_path}")
else:
logger.error(f"❌ 目录不存在: {dir_path}")
all_exist = False
return all_exist
def check_dependencies():
"""检查依赖包"""
required_packages = [
"fastapi",
"uvicorn",
"openai",
"langchain",
"streamlit",
"loguru"
]
all_installed = True
for package in required_packages:
try:
__import__(package)
logger.success(f"✅ 包已安装: {package}")
except ImportError:
logger.error(f"❌ 包未安装: {package}")
all_installed = False
return all_installed
def check_env_file():
"""检查.env文件"""
env_file = Path(".env")
if env_file.exists():
logger.success(f"✅ .env文件存在")
# 检查关键配置
with open(".env", "r") as f:
content = f.read()
if "OPENAI_API_KEY" in content:
logger.success(f"✅ OPENAI_API_KEY已配置")
else:
logger.warning(f"⚠️ OPENAI_API_KEY未配置(可选)")
return True
else:
logger.error(f"❌ .env文件不存在")
return False
def main():
"""主函数"""
logger.info("=" * 50)
logger.info("LLM治理平台 - 环境检查")
logger.info("=" * 50)
checks = [
("Python版本", check_python_version),
("目录结构", check_directories),
("依赖包", check_dependencies),
("环境变量", check_env_file)
]
results = []
for name, check_func in checks:
logger.info(f"\n检查 {name}...")
results.append(check_func())
logger.info("\n" + "=" * 50)
if all(results):
logger.success("✅ 环境检查通过!可以开始开发了")
return 0
else:
logger.error("❌ 环境检查失败,请修复问题")
return 1
if __name__ == "__main__":
sys.exit(main())
运行检查脚本:
python check_env.py
快速启动测试
创建 test_server.py:
from fastapi import FastAPI
from loguru import logger
import uvicorn
app = FastAPI(title="LLM Governance Platform")
@app.get("/")
async def root():
return {
"message": "LLM Governance Platform",
"status": "running",
"version": "1.0.0"
}
@app.get("/health")
async def health():
return {"status": "healthy"}
if __name__ == "__main__":
logger.info("启动测试服务器...")
uvicorn.run(
app,
host="0.0.0.0",
port=8000,
log_level="info"
)
启动测试:
python test_server.py
访问 http://localhost:8000 查看响应。
学习要点
✅ 成功搭建Python开发环境 ✅ 创建完整的项目目录结构 ✅ 配置环境变量和日志系统 ✅ 安装所有必要的依赖包 ✅ 创建基础测试和健康检查
下一步: 创建治理框架结构 🏗️