基于语义内核的Grafana代理PoC
该项目演示了使用语义内核Python SDK构建AI代理的概念验证,该SDK通过本地MCP服务器与Grafana接口。
先决条件
- Python 3.8+
- Docker和Docker Compose
- 没有
设置
- 创建虚拟环境并激活它:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 配置环境变量:
- 复制.env.example文件以创建新的.env文件:
cp .env.example .env- 用您的凭据更新.env文件: - AZURE_OPENAI_DEPLOYMENT_NAME:您的AZURE OPENAI部署名称 - AZURE_OPENAI_API_VERSION:neneneba API版本(例如,2024-12-01预览版) - AZURE_OPENAI_API_KEY:你的AZURE OPENAI API密钥 - AZURE_OPENAI_BASE_URL:您的AZURE OPENAI基本URL - GRAFANA_MCP_URL:本地MCP服务器URL(默认值:http://localhost:8000/sse) - GRAFANA_URL:GRAFANA实例URL(默认值:http://localhost:3000) - GRAFANA_ADMIN用户名:GRAFANA管理员用户名 - GRAFANA_ADMIN_PASSWORD:GRAFANA管理员密码 - GRAFANA_API_KEY:您的GRAFANA API密钥(在GRAFANA UI中创建一个)
- 使用Docker Compose启动Grafana:
cd docker
docker-compose up -d- 配置Grafana:
- 访问 Grafana 和http://localhost:3000 - 使用.env文件中设置的凭据登录 - 转至配置->API密钥 - 创建具有管理员角色的新API密钥 - 将生成的密钥复制到.env文件的GRAFANA_API_key
运行应用程序
该项目提供了三种与Grafana互动的方式:
- 基本控制台界面 (src/console.py):
python src/console.py基于llm和语义内核的基本聊天控制台界面。
- 交互式控制台代理 (src/console_agent.py):
python src/console_agent.py基于代理的控制台接口由llm和语义内核提供支持,允许更复杂的交互。
- REST API服务器 (src/main.py):
PYTHONPATH=. uvicorn src.main:app --reload --host 0.0.0.0 --port 8080 --log-level debug访问APIhttp://localhost:8080
- REST API文档:http://localhost:8080/docs - 健康检查:http://localhost:8080/health
API终点
健康检查
GET /health查询代理
POST /query
Content-Type: application/json
{
"query": "Your natural language query here"
}Grafana通道
Grafana UI可在http://localhost:3000
- 使用.env文件中指定的凭据
示例用法
以下是您可以发送给代理的一些示例查询:
- 创建新仪表板:
{
"query": "Create a new dashboard called 'System Metrics'"
}- 获取仪表板信息:
{
"query": "Show me the details of dashboard with UID xyz123"
}- 更新仪表板:
{
"query": "Update the System Metrics dashboard to include a CPU usage panel"
}项目结构
graphana-agent-poc/
├── docker/
│ └── docker-compose.yml # Grafana container configuration
├── src/
│ ├── agent/
│ │ ├── plugins/
│ │ │ └── grafana_plugin.py # Semantic Kernel plugin for Grafana
│ │ └── skills/
│ │ └── grafana_skills.py # Implementation of Grafana operations
│ └── main.py # FastAPI application and agent setup
├── requirements.txt # Python dependencies
└── README.md # This file