from app.services.llm_service import LLMService from app.services.tool_registry import ToolRegistry class OrquestradorService: def __init__(self): self.llm = LLMService() # Instancia o serviço que conversa com o Gemini self.registry = ToolRegistry() # Instancia o registro de tools disponíveis no sistema """ 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, user_id: 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"]