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) """ Metodo principal chamado quando o usuario envia uma mensagem. Parametros: - message: texto enviado pelo usuario - user_id: identificador do usuario (ainda nao esta sendo usado aqui, mas futuramente servira para historico) """ 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"] arguments = llm_result["tool_call"]["arguments"] 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 funcao {tool_name}: {tool_result}", tools=tools, ) return final_response["response"] # Se o modelo nao chamou nenhuma tool, # significa que ele respondeu diretamente em texto. return llm_result["response"]