from sqlalchemy.orm import Session from app.services.llm_service import LLMService from app.services.tool_registry import ToolRegistry class OrquestradorService: def __init__(self, db: Session): self.llm = LLMService() self.registry = ToolRegistry(db) """ Método principal chamado quando o usuário envia uma mensagem. Parâmetros: - message: texto enviado pelo usuário - user_id: identificador do usuário (ainda não está sendo usado aqui, mas futuramente servirá para histórico) """ async def handle_message(self, message: str) -> str: tools = self.registry.get_tools() llm_result = await self.llm.generate_response( message=message, tools=tools ) if llm_result["tool_call"]: tool_name = llm_result["tool_call"]["name"] # Nome da função que o Gemini quer executar arguments = llm_result["tool_call"]["arguments"] # Argumentos extraídos da mensagem do usuário tool_result = await self.registry.execute(tool_name, arguments) # Segunda rodada para formatar resposta final_response = await self.llm.generate_response( message=f"Resultado da função {tool_name}: {tool_result}", tools=tools ) return final_response["response"] # Se o modelo não chamou nenhuma tool, # significa que ele respondeu diretamente em texto. return llm_result["response"]