Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resposta de AgentExecutor

Quando invoco o executor (executor.invoke({'input': pergunta})), eu obtenho um json com input e output, porém com o output sendo com linguagem natural. Mas eu preciso, dependendo da ferramenta que foi selecionada, implementar um gráfico com a resposta de def _run(self, input) -> str:

Ou seja, em algumas situações, vou precisar verificar se a resposta é um DataFrame ou não; Se for, preciso chamar alguma função que construa um gráfico (estou utilizando Gradio pro front-end).

Como posso ter esse controle sobre a resposta de executor.invoke({'input': pergunta}) a fim de validar o tipo de dado que está sendo retornado e, a partir daí, decidir se quero printar para o usuário em linguagem natural ou se quero implementar um gráfico com os dados retornados (um DataFrame, por exemplo)?

Acredito que a questão esteja na criação do agente em prompt = hub.pull("hwchase17/react") self.agente = create_react_agent(llm, self.tools, prompt)

2 respostas
solução!

Olá, Alessandro!

Uma ideia com base nesse contexto, é que após obter a resposta do executor, você pode usar a função type() ou isinstance() para verificar se o output é um DataFrame.

Com base na verificação do tipo de dado, você pode decidir se deve exibir a resposta diretamente ou gerar um gráfico, com a lógica que você tem até então. Penso em algo nessa linha:

def process_response(response):
    output = response['output']
    
    if isinstance(output, pd.DataFrame):
        # Se for um DataFrame, gera um gráfico
        graph_path = generate_graph(output)
        return graph_path
    else:
        # Se não, retorna a resposta em linguagem natural
        return output

Nessa lógica, a função process_response verifica se o output é um DataFrame. Se for, ela chama a função generate_graph para criar um gráfico e retorna o caminho do arquivo da imagem. Caso contrário, retorna a resposta em linguagem natural, lembrando que essa é apenas uma ideia, mas acredito que para seu objetivo algo nessa linha, é válido. Recomendo que explore mais, a Luri caso tenha acesso, além da continuidade das aulas.

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado pelo retorno. Foi muito útil!