214 lines
5.5 KiB
Markdown
214 lines
5.5 KiB
Markdown
# 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/` - 日志文件目录
|
||
|