vgtc-api / src /hermes /api /routers /agent.py
vora-sonnet's picture
Upload folder using huggingface_hub
0d3f7cc verified
Raw
History Blame Contribute Delete
1.97 kB
"""Agent router."""
from __future__ import annotations
import logging
from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel, Field
from hermes.agents.orchestrator.agent import OrchestratorAgent
from hermes.api.middleware import sanitize_input
from hermes.core.auth import get_api_key_dependency
logger = logging.getLogger(__name__)
router = APIRouter(dependencies=[Depends(get_api_key_dependency)])
class RunAgentRequest(BaseModel):
task: str = Field(..., max_length=2000, description="Task to execute")
strategy: str = Field(default="react", description="Reasoning strategy")
class AgentResponse(BaseModel):
status: str
result: str
steps: int
orchestrator = OrchestratorAgent()
@router.post("/run-agent", response_model=AgentResponse)
async def run_agent(request: RunAgentRequest) -> AgentResponse:
task = sanitize_input(request.task, max_length=2000)
try:
report = await orchestrator.execute_research(task)
return AgentResponse(
status="completed",
result=report.summary,
steps=len(report.findings),
)
except Exception as e:
logger.error(f"Agent execution failed: {e}", exc_info=True)
raise HTTPException(status_code=500, detail="Agent execution failed") from e
@router.get("/agents")
async def list_agents() -> dict:
return {
"agents": [
{"type": "orchestrator", "description": "Coordinates multi-agent workflows"},
{"type": "research", "description": "Conducts research and information gathering"},
{"type": "code_analysis", "description": "Analyzes code quality and patterns"},
{"type": "security", "description": "Performs security scans and vulnerability analysis"},
{"type": "planning", "description": "Creates implementation plans"},
{"type": "report", "description": "Generates comprehensive reports"},
]
}