1
resposta

Busca no Tavily via agente não acontece (Apenas com search)

Quando continuo o print da busca via agente, esse retorno não trás a busca, apenas o descritivo do search, mas sem buscar e passar pela LLM, será que conseguem ajudar?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá

  • Por que o search não foi executado?

O que o notebook está mostrando ( <function=search("query": "...")> ) é apenas a primeira resposta do LLM, dizendo:

“Para responder, preciso chamar a função search com estes argumentos”.

Quando você cria o objeto assim :

agent_worker = FunctionCallingAgentWorker.from_tools(
    tools=tavily_tool.to_tool_list(),
    verbose=True,
    allow_parallel_tool_calls=True,
)

agent = AgentRunner(agent_worker)   #  <-- API de baixo nível

o AgentRunner não executa automaticamente as chamadas de ferramenta. Ele devolve esse “rascunho” e espera que você rode os steps manualmente (ou escreva um loop que faça isso).

A forma simples (e a que aparece na documentação mais recente) é converter o worker para um agente de alto nível:

agent = agent_worker.as_agent()   # Faz todo o loop internamente

ou usar diretamente um FunctionAgent / AgentWorkflow.

Depois disso, basta:

response = agent.chat(
    "Me retorne artigos científicos sobre o uso da inteligência artificial "
    "nas redes sociais que você encontrar na web"
)
print(str(response))   # ou response.response  /  response.response_text

e você verá o texto final, já com os resultados da busca ([docs.llamaindex.ai][1]).

Exemplo mínimo que funciona

!pip install -U llama-index-core llama-index-tools-tavily-research tavily-python

import os
os.environ["TAVILY_API_KEY"] = "tvly-<sua_chave_aqui>"

from llama_index.tools.tavily_research import TavilyResearchToolSpec
from llama_index.core.agent import FunctionCallingAgentWorker
from llama_index.llms.openai import OpenAI

# 1) criar ferramentas do Tavily
tavily_tools = TavilyResearchToolSpec().to_tool_list()     # inclui o search()

# 2) criar o worker
worker = FunctionCallingAgentWorker.from_tools(
    tavily_tools,
    llm=OpenAI(model="gpt-4o-mini"),
    verbose=True,
)

# 3) transformar em agente de alto nível
agent = worker.as_agent()

# 4) conversar
resp = agent.chat(
    "Me retorne artigos científicos sobre o uso da inteligência artificial "
    "nas redes sociais que você encontrar na web"
)
print(str(resp))

Importante: o Tavily só retorna algo se a variável de ambiente TAVILY_API_KEY estiver definida (ou se você passar api_key="..." ao criar a ferramenta) ([docs.tavily.com][2]).

Se quiser manter o AgentRunner “cru”

Precisaria rodar o loop à mão:

task_id = agent.create_task(prompt)
while not agent.is_task_completed(task_id):
    step_out = agent.run_step(task_id)
final = agent.finalize_response(task_id, step_out)
print(final.output)

Na maioria dos casos, trocar para .as_agent() é muito mais prático.

Experimente o snippet acima e me conte se resolveu!