返回顶部
e

epidbot

Interact with EpidBot - AI-powered assistant for Brazilian public health data (DATASUS/SINAN)

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.1.1
安全检测
已通过
69
下载量
0
收藏
概述
安装方式
版本历史

epidbot

# EpidBot OpenClaw Skill Enables AI agents to interact with EpidBot's REST API for analyzing Brazilian public health data. EpidBot uses natural language processing to help users query, download, and analyze health data from DATASUS. ## Overview EpidBot provides access to: - **Brazilian health data**: SINAN disease notifications, SIM mortality, SIH hospital admissions - **International data sources**: WHO, PAHO, HealthData.gov, World Bank, ECDC - **Data analysis**: Temporal trends, spatial distribution, demographic breakdowns - **Visualizations**: Charts, maps, heatmaps, and reports - **SQL queries**: Execute DuckDB SQL on parquet files ## Authentication ### Option 1: API Key (Recommended for agents) 1. Login to EpidBot web interface at https://epidbot.kwar-ai.com.br 2. Go to Admin Panel -> API Keys -> Create new API key 3. Set the API key as an environment variable: ```bash export EPIDBOT_API_KEY="your-api-key-here" export EPIDBOT_BASE_URL="https://api.epidbot.kwar-ai.com.br" ``` ### Option 2: Username/Password (Returns JWT tokens) ```bash curl -X POST "$EPIDBOT_BASE_URL/api/v1/auth/login" \ -H "Content-Type: application/json" \ -d '{"username": "user", "password": "pass"}' # Response: # { # "access_token": "eyJ...", # "refresh_token": "eyJ...", # "token_type": "bearer", # "expires_in": 900 # } ``` ## API Base URL Default: `https://api.epidbot.kwar-ai.com.br/api/v1` Configure via `EPIDBOT_BASE_URL` environment variable. ## Quick Examples ### Check API Health ```bash curl -H "X-API-Key: $EPIDBOT_API_KEY" \ "$EPIDBOT_BASE_URL/api/v1/health" ``` ### Send a Chat Message (Async Submit + Poll) Chat messages are processed asynchronously. Submit a message to get a job_id, then poll for the result. ```bash # Step 1: Submit the message (returns immediately with job_id) JOB=$(curl -s -X POST "$EPIDBOT_BASE_URL/api/v1/chat" \ -H "X-API-Key: $EPIDBOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"message": "Show me dengue cases in São Paulo for 2023", "locale": "en"}') JOB_ID=$(echo $JOB | jq -r '.job_id') # Step 2: Poll for result (every 3 seconds) while true; do RESULT=$(curl -s "$EPIDBOT_BASE_URL/api/v1/chat/$JOB_ID" \ -H "X-API-Key: $EPIDBOT_API_KEY") STATUS=$(echo $RESULT | jq -r '.status') if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then echo $RESULT | jq . break fi sleep 3 done ``` ### List Available Tools ```bash curl -H "X-API-Key: $EPIDBOT_API_KEY" \ "$EPIDBOT_BASE_URL/api/v1/tools" ``` ## Tools / Capabilities ### chat (async submit) Submit a chat message for async processing. Returns a job_id immediately. LLM responses typically take 5-120 seconds. **Request:** ```json { "message": "What data is available for dengue in 2023?", "session_id": null, "locale": "en" } ``` **Submit Response (200):** ```json { "job_id": "job_a1b2c3d4...", "session_id": 1, "status": "processing" } ``` ### chat_poll Poll for the status and result of a chat job. Endpoint: `GET /api/v1/chat/{job_id}` Recommended polling interval: 2-5 seconds. **Poll Response -- still processing:** ```json { "job_id": "job_a1b2c3d4...", "status": "processing", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:05Z" } ``` **Poll Response -- completed:** ```json { "job_id": "job_a1b2c3d4...", "status": "completed", "session_id": 1, "content": "EpidBot has access to SINAN dengue data for 2023...", "images": ["![plot](plots/abc.png)"], "thinking": "The user is asking about available data...", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:45Z" } ``` **Poll Response -- failed:** ```json { "job_id": "job_a1b2c3d4...", "status": "failed", "error": "Error message description", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:10Z" } ``` ### chat_stream (WebSocket) For streaming responses, connect via WebSocket at: ``` wss://api.epidbot.kwar-ai.com.br/api/v1/chat/stream?api_key=<your-api-key> ``` **Client -> Server Messages:** ```json {"type": "start", "payload": {"message": "...", "session_id": null, "locale": "en"}} {"type": "cancel"} {"type": "ping"} ``` **Server -> Client Messages:** ```json {"type": "thinking", "data": {"content": "..."}} {"type": "chunk", "data": {"content": "..."}} {"type": "complete", "data": {"content": "...", "images": [], "usage": {...}}} {"type": "error", "data": {"error": "..."}} {"type": "cancelled"} {"type": "pong"} ``` ### list_sessions List all chat sessions for the authenticated user. **Endpoint:** `GET /api/v1/sessions` **Output:** ```json [ { "id": 1, "name": "Dengue Analysis", "message_count": 12, "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-02T00:00:00Z" } ] ``` ### get_session_messages Get message history for a specific session. **Endpoint:** `GET /api/v1/sessions/{session_id}/messages` **Output:** ```json { "session_id": 1, "messages": [ { "id": 1, "role": "user", "text_content": "Show me dengue data", "thinking": null, "created_at": "2024-01-01T00:00:00Z" }, { "id": 2, "role": "assistant", "text_content": "Here is the dengue data...", "thinking": "The user is asking about...", "created_at": "2024-01-01T00:00:01Z" } ] } ``` ### list_reports List all generated reports. **Endpoint:** `GET /api/v1/reports` **Output:** ```json [ { "id": 1, "title": "Dengue Analysis 2023", "report_type": "analysis", "image_count": 3, "content_size_bytes": 15234, "has_pdf": true, "created_at": "2024-01-01T00:00:00Z" } ] ``` ### get_report Get full details of a specific report. **Endpoint:** `GET /api/v1/reports/{report_id}` **Output:** ```json { "id": 1, "title": "Dengue Analysis 2023", "report_type": "analysis", "prompt": "Show me dengue cases...", "content": "# Dengue Analysis\n\n...", "image_count": 3, "content_size_bytes": 15234, "has_pdf": true, "created_at": "2024-01-01T00:00:00Z" } ``` ### download_report Download report as a markdown file. **Endpoint:** `GET /api/v1/reports/{report_id}/download` **Output:** File download with `Content-Disposition` header. ### list_tools List all available agent tools with descriptions. **Endpoint:** `GET /api/v1/tools` **Output:** ```json [ { "name": "download_sinan_data", "description": "Download SINAN disease notification data for a given disease", "parameters": null }, { "name": "execute_sql_query", "description": "Execute a SQL query on the health database", "parameters": null }, { "name": "get_temporal_trend", "description": "Calculate temporal trend for a dataset", "parameters": null } ] ``` ## Error Handling All endpoints may return errors: ```json { "detail": "Error message description" } ``` **Common Status Codes:** - `400` - Bad Request (invalid input) - `401` - Unauthorized (missing/invalid authentication) - `403` - Forbidden (valid auth but insufficient permissions) - `404` - Not Found - `429` - Too Many Requests - `500` - Internal Server Error ## Agent Usage Patterns ### Pattern 1: Async Chat (Submit + Poll) -- Recommended ``` Agent: POST /chat -> get job_id -> poll GET /chat/{job_id} every 3s -> return result Best for: All queries. Avoids timeout issues since LLM responses take 5-120s. ``` ### Pattern 2: Streaming Chat (WebSocket) ``` Agent: Connect to WebSocket -> Send start message -> Receive streaming chunks -> Receive complete Best for: Long responses, real-time feedback, progress indicators ``` ### Pattern 3: Session-Aware Chat ``` Agent: List sessions -> Get session messages -> Continue conversation in same session Best for: Multi-turn analysis workflows ``` ### Pattern 4: Tool-Based Workflow ``` Agent: List tools -> Execute specific tool -> Process result -> Chat about results Best for: Automated data retrieval pipelines ``` ## Available Data Sources ### Brazilian Data (PySUS) - **SINAN**: Disease notifications (dengue, Zika, chikungunya, measles, etc.) - **SIM**: Mortality data - **SIH**: Hospital admissions - **CNES**: Health facilities - **IBGE**: Census and demographic data ### International Data - **WHO/GHO**: Global health indicators - **PAHO**: Americas health data - **HealthData.gov**: US hospital capacity, COVID metrics - **World Bank**: Development indicators - **ECDC**: European disease surveillance ### Specialized - **Mosqlimate/Infodengue**: Brazilian epidemiological parameters ## Configuration | Environment Variable | Default | Description | |---------------------|---------|-------------| | `EPIDBOT_API_KEY` | - | API key for authentication | | `EPIDBOT_BASE_URL` | `https://api.epidbot.kwar-ai.com.br` | Base URL of EpidBot API | ## Rate Limits | Endpoint | Limit | |----------|-------| | `POST /auth/login` | 10 requests/minute | | `POST /auth/register` | 5 requests/minute | | Other endpoints | 60 requests/minute | ## Deployment EpidBot is typically deployed via Docker Compose: ```yaml services: api: ports: - '8123:8123' epidbot: ports: - '7860:7860' db: ports: - '5432:5432' ``` Health check: `curl https://api.epidbot.kwar-ai.com.br/api/v1/health` ## Limitations - **Job expiry**: Chat jobs expire after 1 hour - **File sizes**: Large data exports may be limited by memory constraints - **Sandbox execution**: Python/SQL code execution happens in an isolated sandbox with resource limits ## Support - GitHub: https://github.com/fccoelho/EpiDBot - Documentation: https://github.com/fccoelho/EpiDBot/tree/main/docs

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 epidbot-1775912881 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 epidbot-1775912881 技能

通过命令行安装

skillhub install epidbot-1775912881

下载 Zip 包

⬇ 下载 epidbot v1.1.1

文件大小: 4.25 KB | 发布时间: 2026-4-12 09:51

v1.1.1 最新 2026-4-12 09:51
Fixed: duplicate user_id argument caused 500 error on POST /chat

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部