格式警察 Agent (Format Police Agent)
🚔 只做一件事:检查输出是否符合 JSON 格式,如果不符合则补全格式化 JSON 输出。
功能特性
- ✅ JSON 验证:检查内容是否为有效 JSON
- 🔧 自动修复:尝试修复常见的 JSON 格式问题
- 🤖 AI 辅助:无法自动修复时使用 AI 转换
- 📦 格式化输出:美化 JSON 输出
快速开始
1. 本地运行
# 安装依赖
pip install -r requirements.txt
# 启动服务
python run_api_server.py
2. Docker 运行
# 构建镜像
docker build -t format-police-agent:latest .
# 运行容器
docker run -p 8000:8000 -e OPENAI_API_KEY=your_key format-police-agent:latest
API 端点
健康检查
curl http://localhost:8000/health
MCP 端点
| 端点 | 方法 | 说明 |
|---|---|---|
/mcp |
POST | MCP HTTP 端点 |
/mcp/sse |
GET/POST | MCP SSE 端点 |
REST API
| 端点 | 方法 | 说明 | 需要 API Key |
|---|---|---|---|
/api/v1/check |
POST | 检查并修复 JSON | 是(使用 AI 时) |
/api/v1/validate |
POST | 仅验证 JSON | 否 |
/api/v1/format |
POST | 格式化 JSON | 否 |
MCP 工具
check_and_fix_json
检查并修复 JSON 格式。
{
"name": "check_and_fix_json",
"arguments": {
"content": "需要检查的内容",
"use_ai": true
}
}
参数:
content(必需): 需要检查和修复的内容use_ai(可选): 是否使用 AI 辅助修复,默认true
validate_json
仅验证 JSON 格式是否有效。
{
"name": "validate_json",
"arguments": {
"content": "需要验证的内容"
}
}
format_json
格式化已有效的 JSON。
{
"name": "format_json",
"arguments": {
"content": "{\"a\":1}",
"indent": 2
}
}
使用示例
1. 检查并修复 JSON
curl -X POST http://localhost:8000/api/v1/check \
-H "Content-Type: application/json" \
-H "api-key: your_api_key" \
-d '{"content": "{name: \"test\", value: 123}"}'
响应:
{
"success": true,
"result": {
"success": true,
"is_original_valid": false,
"message": "已自动修复 JSON 格式问题",
"formatted_json": {
"name": "test",
"value": 123
}
}
}
2. 验证 JSON(无需 API Key)
curl -X POST http://localhost:8000/api/v1/validate \
-H "Content-Type: application/json" \
-d '{"content": "{\"valid\": true}"}'
3. MCP 调用
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "api-key: your_api_key" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "check_and_fix_json",
"arguments": {
"content": "这不是JSON,但包含信息:名字是张三,年龄25"
}
}
}'
自动修复能力
格式警察可以自动修复以下问题:
- 单引号 → 双引号
- 末尾多余逗号 → 移除
- 未加引号的值 → 添加引号
- Markdown 代码块 → 提取 JSON
- BOM 字符 → 移除
无法自动修复时,会使用 AI 尝试转换。
环境变量
| 变量 | 必需 | 说明 | 默认值 |
|---|---|---|---|
| OPENAI_API_KEY | 使用 AI 时 | OpenAI API Key | - |
| OPENAI_BASE_URL | 否 | LLM API 地址 | LiteLLM Gateway |
| MODEL_NAME | 否 | 模型名称 | taiji/gpt-4o-mini |
| API_HOST | 否 | 监听地址 | 0.0.0.0 |
| API_PORT | 否 | 监听端口 | 8000 |
注册到 Agent Manager
在 k8s_manager.py 中添加:
# TEMPLATE_PORTS
"format_police": 8000,
# image_map
"format_police": "agnettaiji.azurecr.io/ai-agents/format-police-agent:latest",
在 app.py 的 valid_templates 中添加 "format_police"。
项目结构
format_police_agent/
├── Dockerfile
├── requirements.txt
├── run_api_server.py
├── README.md
└── src/
├── __init__.py
└── server/
├── __init__.py
├── api_server.py # FastAPI + MCP HTTP
└── mcp_server.py # MCP 工具定义
License
MIT