ai-business-write/技术文档/AI对话日志使用说明.md

214 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/` - 日志文件目录