# AI对话日志使用说明 ## 功能概述 系统已集成AI对话日志记录功能,可以自动记录每次大模型调用的详细信息,包括: - 输入提示词(prompt) - API请求参数 - API响应内容(完整响应) - 提取后的结构化数据 - 错误信息(如果有) ## 日志文件位置 日志文件保存在项目根目录下的 `logs/ai_conversations/` 目录中。 日志文件命名格式:`conversation_YYYYMMDD_HHMMSS_mmm.json` 例如:`conversation_20241215_143025_123.json` ## 日志文件格式 每个日志文件是一个JSON文件,包含以下字段: ```json { "timestamp": "2024-12-15T14:30:25.123456", "session_id": "session_1702627825123", "prompt": "请从以下输入文本中提取结构化信息...", "api_request": { "endpoint": "http://10.100.31.26:3001/v1/chat/completions", "model": "DeepSeek-R1-Distill-Llama-70B", "messages": [ { "role": "system", "content": "..." }, { "role": "user", "content": "..." } ], "temperature": 0.2, "max_tokens": 12000, "enable_thinking": true }, "api_response": { "choices": [...], "usage": {...} }, "extracted_data": { "target_name": "张三", "target_gender": "男", ... }, "error": null, "success": true } ``` ## 启用/禁用日志记录 日志记录功能默认启用。可以通过环境变量控制: ### 方法1:设置环境变量 ```bash # Windows set AI_LOG_ENABLED=false # Linux/Mac export AI_LOG_ENABLED=false ``` ### 方法2:在代码中修改 编辑 `services/ai_logger.py`,修改 `__init__` 方法中的默认值: ```python self.enabled = os.getenv('AI_LOG_ENABLED', 'false').lower() == 'true' # 改为默认禁用 ``` ## 查看日志文件 ### 方法1:直接查看JSON文件 日志文件是标准的JSON格式,可以用任何文本编辑器或JSON查看器打开。 ### 方法2:使用Python脚本查看 可以使用以下Python代码查看最近的日志: ```python from services.ai_logger import get_ai_logger logger = get_ai_logger() # 获取最近的10条日志 recent_logs = logger.get_recent_logs(limit=10) for log_file in recent_logs: print(f"日志文件: {log_file}") log_data = logger.read_log(log_file) if log_data: print(f" 时间: {log_data['timestamp']}") print(f" 成功: {log_data['success']}") if log_data.get('error'): print(f" 错误: {log_data['error']}") print() ``` ### 方法3:使用命令行工具 在项目根目录下,可以使用以下命令查看日志: ```bash # Windows PowerShell Get-ChildItem logs\ai_conversations\*.json | Sort-Object LastWriteTime -Descending | Select-Object -First 10 # Linux/Mac ls -lt logs/ai_conversations/*.json | head -10 ``` ## 日志文件管理 ### 自动清理 日志文件会按日期组织,建议定期清理旧日志文件以节省磁盘空间。 ### 手动清理 可以删除指定日期之前的日志文件: ```bash # Windows PowerShell - 删除7天前的日志 Get-ChildItem logs\ai_conversations\*.json | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Remove-Item # Linux/Mac - 删除7天前的日志 find logs/ai_conversations -name "*.json" -mtime +7 -delete ``` ## 排查问题 ### 查看失败的对话 查找包含错误的日志: ```python from services.ai_logger import get_ai_logger import json logger = get_ai_logger() recent_logs = logger.get_recent_logs(limit=50) for log_file in recent_logs: log_data = logger.read_log(log_file) if log_data and not log_data.get('success'): print(f"失败日志: {log_file}") print(f"错误: {log_data.get('error')}") print(f"提示词: {log_data.get('prompt')[:200]}...") print() ``` ### 查看特定字段的提取情况 ```python from services.ai_logger import get_ai_logger logger = get_ai_logger() recent_logs = logger.get_recent_logs(limit=20) for log_file in recent_logs: log_data = logger.read_log(log_file) if log_data and log_data.get('extracted_data'): extracted = log_data['extracted_data'] if 'target_gender' in extracted: print(f"日志: {log_file}") print(f" 性别: {extracted.get('target_gender', '(空)')}") print(f" 姓名: {extracted.get('target_name', '(空)')}") print() ``` ## 注意事项 1. **隐私和安全**:日志文件可能包含敏感信息,请妥善保管,不要将日志文件提交到公共代码仓库。 2. **磁盘空间**:日志文件会持续增长,建议定期清理旧日志。 3. **性能影响**:日志记录是异步的,对性能影响很小,但如果大量调用,建议定期清理日志文件。 4. **日志文件大小**:每个日志文件通常几KB到几十KB,取决于响应内容的大小。 ## 常见问题 ### Q: 日志文件在哪里? A: 日志文件保存在 `logs/ai_conversations/` 目录中。 ### Q: 如何禁用日志记录? A: 设置环境变量 `AI_LOG_ENABLED=false`。 ### Q: 日志文件会占用多少空间? A: 每个日志文件通常几KB到几十KB,取决于响应内容。如果每天有100次调用,大约占用几MB空间。 ### Q: 可以自定义日志目录吗? A: 可以,在创建 `AILogger` 实例时传入 `log_dir` 参数。 ### Q: 日志文件格式可以修改吗? A: 可以,修改 `services/ai_logger.py` 中的 `log_conversation` 方法。 ## 相关文件 - `services/ai_logger.py` - 日志记录器实现 - `services/ai_service.py` - AI服务(集成日志记录) - `logs/ai_conversations/` - 日志文件目录