chore: update environment variables and improve agent configuration

This commit is contained in:
Davidson Gomes
2025-04-29 19:29:48 -03:00
parent 0a27670de5
commit 13a6247780
16 changed files with 520 additions and 131 deletions

View File

@@ -8,6 +8,7 @@ from src.core.exceptions import AgentNotFoundError, InternalServerError
from src.services.agent_service import get_agent
from src.services.agent_builder import AgentBuilder
from sqlalchemy.orm import Session
from typing import Optional
logger = setup_logger(__name__)
@@ -20,6 +21,7 @@ async def run_agent(
artifacts_service: InMemoryArtifactService,
memory_service: InMemoryMemoryService,
db: Session,
session_id: Optional[str] = None,
):
try:
logger.info(f"Starting execution of agent {agent_id} for contact {contact_id}")
@@ -45,13 +47,15 @@ async def run_agent(
artifact_service=artifacts_service,
memory_service=memory_service,
)
session_id = contact_id + "_" + agent_id
adk_session_id = contact_id + "_" + agent_id
if session_id is None:
session_id = adk_session_id
logger.info(f"Searching session for contact {contact_id}")
session = session_service.get_session(
app_name=agent_id,
user_id=contact_id,
session_id=session_id,
session_id=adk_session_id,
)
if session is None:
@@ -59,7 +63,7 @@ async def run_agent(
session = session_service.create_session(
app_name=agent_id,
user_id=contact_id,
session_id=session_id,
session_id=adk_session_id,
)
content = Content(role="user", parts=[Part(text=message)])
@@ -69,7 +73,7 @@ async def run_agent(
try:
for event in agent_runner.run(
user_id=contact_id,
session_id=session_id,
session_id=adk_session_id,
new_message=content,
):
if event.is_final_response() and event.content and event.content.parts:
@@ -79,7 +83,7 @@ async def run_agent(
completed_session = session_service.get_session(
app_name=agent_id,
user_id=contact_id,
session_id=session_id,
session_id=adk_session_id,
)
memory_service.add_session_to_memory(completed_session)

View File

@@ -1,3 +1,4 @@
import os
from sqlalchemy.orm import Session
from sqlalchemy.exc import SQLAlchemyError
from fastapi import HTTPException, status
@@ -27,6 +28,7 @@ def get_agent(db: Session, agent_id: uuid.UUID) -> Optional[Agent]:
if not agent:
logger.warning(f"Agent not found: {agent_id}")
return None
return agent
except SQLAlchemyError as e:
logger.error(f"Error searching for agent {agent_id}: {str(e)}")
@@ -47,7 +49,11 @@ def get_agents_by_client(
try:
query = db.query(Agent).filter(Agent.client_id == client_id)
return query.offset(skip).limit(limit).all()
agents = query.offset(skip).limit(limit).all()
# A propriedade virtual agent_card_url será automaticamente incluída
# quando os agentes forem serializados para JSON
return agents
except SQLAlchemyError as e:
logger.error(f"Error searching for client agents {client_id}: {str(e)}")
raise HTTPException(
@@ -139,6 +145,9 @@ def create_agent(db: Session, agent: AgentCreate) -> Agent:
db.commit()
db.refresh(db_agent)
logger.info(f"Agent created successfully: {db_agent.id}")
# A propriedade virtual agent_card_url será automaticamente incluída
# quando o agente for serializado para JSON
return db_agent
except SQLAlchemyError as e:
db.rollback()

View File

@@ -2,7 +2,7 @@ from sqlalchemy.orm import Session
from sqlalchemy.exc import SQLAlchemyError
from fastapi import HTTPException, status
from src.models.models import MCPServer
from src.schemas.schemas import MCPServerCreate
from src.schemas.schemas import MCPServerCreate, ToolConfig
from typing import List, Optional
import uuid
import logging
@@ -41,7 +41,11 @@ def get_mcp_servers(db: Session, skip: int = 0, limit: int = 100) -> List[MCPSer
def create_mcp_server(db: Session, server: MCPServerCreate) -> MCPServer:
"""Create a new MCP server"""
try:
db_server = MCPServer(**server.model_dump())
# Convert tools to JSON serializable format
server_data = server.model_dump()
server_data["tools"] = [tool.model_dump() for tool in server.tools]
db_server = MCPServer(**server_data)
db.add(db_server)
db.commit()
db.refresh(db_server)
@@ -65,7 +69,11 @@ def update_mcp_server(
if not db_server:
return None
for key, value in server.model_dump().items():
# Convert tools to JSON serializable format
server_data = server.model_dump()
server_data["tools"] = [tool.model_dump() for tool in server.tools]
for key, value in server_data.items():
setattr(db_server, key, value)
db.commit()