Home › Fóruns › Domine LLMs com LangChain › Agents com tools sem ReAct
- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 2 meses, 1 semana atrás por
Gabriel Alves.
- AutorPosts
- 9 de fevereiro de 2025 às 04:34 #47720
Prezado professor,
Estou acompanhando as aulas sobre o uso de ReAct juntamente com as tools e acho esse recurso excelente para aprimorar o raciocínio das LLMs.
No entanto, no meu ambiente de testes — utilizando o Ollama com o Llama 3.1 8B local — ao fazer perguntas, mesmo simples, como “Qual é a data de hoje?”, o modelo acessa a tool de data, mas não conclui a resposta. Em vez disso, exibe a mensagem: “Agent stopped due to iteration limit or time limit.”
Por outro lado, ao testar com o Llama 3.3 80B oferecido pela Groq, as respostas são geradas normalmente. Observe que modelos maiores e mais complexos lidam melhor com o ReAct, enquanto modelos menores acabam se perdendo durante o raciocínio.
Gostaria de saber como utilizar agents com tools sem recorrer ao mecanismo ReAct, de modo a contornar essas limitações nos modelos menores locais. Se possível, peço um exemplo de implementação.
Obrigado pelo apoio.
11 de fevereiro de 2025 às 10:20 #47728Olá Michael!
O problema que você está enfrentando é um tanto comum ao trabalhar com modelos menores, como o Llama 3.1 8B, que podem não ter capacidade suficiente para lidar com o mecanismo ReAct de forma eficiente. É um modelo bem menor (8B) comparado aos mais atuais com maior capacidade de raciocínio, ou seja, tem limitações nessa capacidade. Para que funcione sem problemas, o ReAct exige que o modelo não apenas gere respostas, mas também raciocine passo a passo e interaja com ferramentas (tools), o que pode ser desafiador para modelos com menos parâmetros.
Para contornar essa limitação, o que eu faria é continuar usando via provedor de modelos como o Groq ou OpenRouter, acaba funcionando bem com menos esforço. Caso continue usando esse mesmo modelo com menos parâmetros, você pode utilizar agents sem o mecanismo ReAct, optando por abordagens mais diretas, como o uso de Zero-Shot Agents ou ainda codificar um agente customizado. Essas abordagens simplificam o processo de interação com as tools, reduzindo a complexidade do raciocínio necessário.
O Zero-Shot Agent não exige múltiplas iterações de pensamento/ação, em vez de simular um raciocínio passo a passo ele tenta resolver a tarefa diretamente com o contexto que possui.
Quanto ao código, aqui tem um exemplo completo e a explicação. Hoje é recomendado usar o LangGraph para isso, que faz parte do ecossistema LangChain.
Obs: Tentar implementar um agente que requer uma ampla variedade de ferramentas ou raciocínio complexo pode não levar a resultados bem-sucedidos, mesmo se fizermos esforços extensivos de engenharia de prompt. Pode ser que modificando muito o prompt você consiga melhorar significativamente os resultados, mas há um momento em que não se melhora mais, é necessário testar novos modelos. Portanto, pode ser interessante ainda antes de mudar o código testar outros modelos menores e que sejam suportados pelo hardware local, já que podem ter capacidade da reasoning superior mesmo sendo menores (como o DeepSeek 7B).
- AutorPosts
- Você deve fazer login para responder a este tópico.