♻️ refactor: Reogranizando e ajustando o orquestrador do sistema. Também suas funcionalidades foram comentadas para futuras manutenções.
parent
1f4c4e0462
commit
43ce4a6093
@ -1,10 +0,0 @@
|
||||
class OrchestratorService:
|
||||
|
||||
async def handle_message(self, message: str, user_id: str) -> str:
|
||||
# Aqui futuramente:
|
||||
# - chamada ao Gemini
|
||||
# - verificação de intenção
|
||||
# - chamada de tools
|
||||
# - integração com banco
|
||||
|
||||
return f"Mensagem recebida do usuário {user_id}: {message}"
|
||||
@ -0,0 +1,46 @@
|
||||
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"]
|
||||
Loading…
Reference in New Issue