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?
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?
Olá
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ê passarapi_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!