5.5 KiB
5.5 KiB
AI对话日志使用说明
功能概述
系统已集成AI对话日志记录功能,可以自动记录每次大模型调用的详细信息,包括:
- 输入提示词(prompt)
- API请求参数
- API响应内容(完整响应)
- 提取后的结构化数据
- 错误信息(如果有)
日志文件位置
日志文件保存在项目根目录下的 logs/ai_conversations/ 目录中。
日志文件命名格式:conversation_YYYYMMDD_HHMMSS_mmm.json
例如:conversation_20241215_143025_123.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:设置环境变量
# Windows
set AI_LOG_ENABLED=false
# Linux/Mac
export AI_LOG_ENABLED=false
方法2:在代码中修改
编辑 services/ai_logger.py,修改 __init__ 方法中的默认值:
self.enabled = os.getenv('AI_LOG_ENABLED', 'false').lower() == 'true' # 改为默认禁用
查看日志文件
方法1:直接查看JSON文件
日志文件是标准的JSON格式,可以用任何文本编辑器或JSON查看器打开。
方法2:使用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:使用命令行工具
在项目根目录下,可以使用以下命令查看日志:
# 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
日志文件管理
自动清理
日志文件会按日期组织,建议定期清理旧日志文件以节省磁盘空间。
手动清理
可以删除指定日期之前的日志文件:
# 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
排查问题
查看失败的对话
查找包含错误的日志:
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()
查看特定字段的提取情况
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()
注意事项
-
隐私和安全:日志文件可能包含敏感信息,请妥善保管,不要将日志文件提交到公共代码仓库。
-
磁盘空间:日志文件会持续增长,建议定期清理旧日志。
-
性能影响:日志记录是异步的,对性能影响很小,但如果大量调用,建议定期清理日志文件。
-
日志文件大小:每个日志文件通常几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/- 日志文件目录