3
respostas

[Bug] Busca usando o Agente que chama o Tavily não funciona

Ao tentar executar a função de busca do Tavily como no vídeo o LLM não está chamando a função e recebo este retorno:

Added user message to memory: Me retorne artigos científicos sobre o uso da inteligência artificial nas redes sociais que você encontrar na web === LLM Response === <function=search{"query": "artigos cientificos sobre inteligencia artificial nas redes sociais", "max_results": 10}

Enquanto que outras funções estão funcionando. Segue o código:

from llama_index.core.agent import FunctionCallingAgentWorker, AgentRunner
from llama_index.tools.tavily_research import TavilyToolSpec
from llama_index.llms.groq import Groq
from google.colab import userdata
from llama_index.core import Settings

groq = userdata.get('GROQ_API_KEY')
llm = Groq(model="llama-3.3-70b-versatile", api_key=groq)
Settings.llm = llm

tavily_key = userdata.get('tavily')
tavily_tool = TavilyToolSpec(api_key=tavily_key)

tools = tavily_tool.to_tool_list()
agent_worker = FunctionCallingAgentWorker.from_tools(tools)

agent = AgentRunner(agent_worker)

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

print(response)
3 respostas

Bom dia!

Vê se a chave da API do Tavily está sendo recuperada corretamente com tavily_key = userdata.get('tavily'). Se tavily_key estiver None, a chave pode não estar carregada corretamente. Você pode imprimir tavily_key para conferir. Além disso, certifique-se de que a chave tem as permissões corretas e não está expirada, tentando gerar uma nova no Tavily.

Outra possibilidade é que o TavilyToolSpec não esteja funcionando corretamente. Para testar isso, tente chamar a API diretamente usando tavily_tool.search("inteligência artificial nas redes sociais"). Se isso não funcionar, o problema pode estar no Tavily ou na configuração da chave da API.

Se a ferramenta do Tavily estiver funcionando corretamente, mas o AgentRunner não estiver chamando a função, tente configurar o FunctionCallingAgentWorker com use_functions_schema=True, assim:

agent_worker = FunctionCallingAgentWorker.from_tools(tools, use_functions_schema=True)

Outra coisa a se verificar é se o modelo "llama-3.3-70b-versatile" suporta chamadas de função (function calling). Caso contrário, tente trocar por "mixtral-8x7b-32768", que tem melhor suporte para esse tipo de tarefa.

Se ainda assim não funcionar, você pode ativar logs para depuração com import logging e logging.basicConfig(level=logging.DEBUG), o que ajudará a identificar se o agente está realmente tentando chamar a API ou apenas ignorando a ferramenta. Se o problema persistir, compartilhe os logs para que possamos analisar melhor.

Eu tive uma resposta muito parecida do ChatGPT, infelizmente nenhuma destas soluções funciona. Este modelo indicado na resposta não é apropriado para ser um agente, tanto que nos exercícios anteriores nem funciona. Por favor, pode me ajudar a descobrir o motivo da função rodar manualmente, mas quando chamada pelo agente ela não funciona? Aparentemente ele não está nem chamando a função ao passo que todas as outras funções ele chamou.

Pode mandar o código completo em um repo do github?