♻️ 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