"""Gera resposta textual ou chamada de tool a partir da mensagem do usuario."""
vertex_tools=self.build_vertex_tools(tools)
vertex_tools=self.build_vertex_tools(tools)# Convertendo tools para formato do Vertex
# Inicia uma sessão de chat com:
# - histórico (se existir)
# - ferramentas disponíveis
response=None
last_error=None
@ -72,28 +64,22 @@ class LLMService:
ifresponseisNone:
iflast_error:
raiseRuntimeError(
f"Nenhum modelo Vertex disponível. Verifique VERTEX_MODEL_NAME e acesso no projeto. Erro: {last_error}"
f"Nenhum modelo Vertex disponivel. Verifique VERTEX_MODEL_NAME e acesso no projeto. Erro: {last_error}"
)fromlast_error
raiseRuntimeError("Falha ao gerar resposta no Vertex AI.")
# Pegamos a primeira resposta candidata do modelo (a com maior coerência com o assunto)
# Estrutura interna:
# response.candidates -> lista de possíveis respostas
# content.parts -> partes da resposta
part=response.candidates[0].content.parts[0]
# Verificação se o modelo decidiu chamar alguma função, se decidiu, retornará o nome da função que ele quer executar e o argumento que ele extraiu da mensagem do usuário.
ifpart.function_call:
return{
"response":None,
"tool_call":{
"name":part.function_call.name,
"arguments":dict(part.function_call.args)
}
"arguments":dict(part.function_call.args),
},
}
# Caso não ocorra a chamada de uma função, significa que o modelo respondeu diretamente em texto