Forum Replies Created

Viewing 15 posts - 16 through 30 (of 393 total)
  • Author
    Posts
  • in reply to: bind_tools em LLM #47729
    Gabriel Alves
    Keymaster

      Olá!

      O método bind_tools() é utilizado para preparar a LLM para reconhecer e utilizar as tools específicas. Ele permite que o modelo entenda a estrutura e os parâmetros delas, como nome, descrição e os argumentos esperados. Essa preparação é importante porque alguns modelos precisam ser explicitamente habilitados para usar tools, garantindo que a chamada dessa ferramenta ocorra de forma correta e eficiente.

      Cada provedor de modelo (OpenAI, Anthropic, etc.) tem um formato específico para representar tools; o bind_tools() converte para o formato específico do modelo. Aqui tem mais explicações sobre, caso queira saber mais.

      Embora você tenha notado que o modelo ainda conseguiu acessar as tools sem usar bind_tools(), isso pode ocorrer devido à capacidade intrínseca do modelo de inferir a lógica de uso dessas ferramentas. Modelos mais avançados podem ser mais flexíveis e capazes de lidar com chamadas de tools de maneira intuitiva, mas se usarmos o bind_tools() é mais garantido de aumentar a precisão e a compatibilidade, especialmente quando estamos usando várias tools.

      Além disso, bind_tools() ajuda a garantir que os argumentos da tool sejam gerados no formato correto, reduzindo erros de formatação e melhorando a estruturação das saídas. Portanto, mesmo que em testes simples o uso de bind_tools() não pareça essencial, ele é uma prática recomendada que prepara o sistema para interações mais sofisticadas e robustas.

      in reply to: Agents com tools sem ReAct #47728
      Gabriel Alves
      Keymaster

        Olá 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).

        in reply to: ReAct no LangChain #47719
        Gabriel Alves
        Keymaster

          Olá Michael!

          Sim é possível customizar esse prompt, note que na aula foi baixado o PromptTemplate “hwchase17/react” através do método hub.pull mas você poderia defini-lo manualmente (caso sua intenção seja modificar as instruções no prompt) ou até baixar outro template (por exemplo hwchase17/react-chat ou outro dentro do Hub do LangChain).

          Esse prompt usado foi projetado para seguir o ciclo completo de Thought/Action/Action Input/Observation, o que é essencial para a lógica de raciocínio iterativo dos agentes ReAct. Embora haja alguma flexibilidade para adaptar o prompt, remover ou omitir essas etapas pode comprometer a eficácia do agente na resolução de problemas complexos. No entanto, você pode ajustar o comportamento do agente para reduzir ou limitar o número de iterações.

          Para fazer o agente realizar apenas uma iteração, você pode modificar o prompt ou controlar a lógica de execução. Uma ideia seria ajustar o prompt para que o agente saiba que deve fornecer a resposta final após a primeira observação – por exemplo, após o bloco Observation, você pode incluir instruções explícitas como: “Agora, com base na observação acima, forneça a resposta final diretamente.” Outra abordagem seria controlar isso no código, ajustando via parâmetros (max_iterations ou max_steps) no agente LangChain para limitar o ciclo a uma única rodada.

          in reply to: API #47643
          Gabriel Alves
          Keymaster

            Olá Gabrielli!

            Ainda esse semestre vamos lançar o curso novo sobre LLMs com outros projetos práticos, então já aproveito para te adiantar essa informação aqui. Em um dos projetos será usado o LangFlow, porém ele não será tanto o foco do curso (já que a ideia é ter tempo para mostrar também algumas outras abordagens modernas para criação de agentes). Usar pela API pode ser meio chato mesmo devido a alguns detalhes que podem não estar muito claros na documentação, mas caso você tenha alguma dúvida específica referente ao uso pode publicar aqui que eu talvez consiga te auxiliar nesse sentido

            Gabriel Alves
            Keymaster

              Olá Fernando! Quais erros que aparecem para você? Eu tentei rodar o mesmo código (Colab aqui) e funcionou normalmente. Verifique se após executar os comandos de instalação (!pip install…) você reiniciou a sessão, pois se não reiniciar então o programa vai usar a versão da biblioteca que foi atribuída anteriormente. Provavelmente o Colab mostra automaticamente um botão para você reiniciar, mas se não aparecer então selecione a opção no menu do topo: Ambiente de execução > Reiniciar sessão 

               

              in reply to: Execução em máquina local #47346
              Gabriel Alves
              Keymaster

                Obrigado pela contribuição, Leonardo!

                in reply to: Acesso do Vídeo Interrompido #47345
                Gabriel Alves
                Keymaster

                  Pois é então parece ser bloqueio na própria rede mesmo, em algumas empresas é bem comum bloquearem sites conhecidos de hospedagem de vídeos, talvez valha a pena perguntar se há a possibilidade de adicionar uma exceção ou alguma configuração que libere o acesso nesse caso. Se não tiver como, então se possível acesse pela rede móvel e assim deverá conseguir visualizar normalmente

                  in reply to: Imports Ajuda #47322
                  Gabriel Alves
                  Keymaster

                    Olá Carlos!

                    Você está executando localmente ou no Colab? Se for em sua máquina, poderia me informar a sua versão do LangChain?

                    E peço também por gentiliza se puder postar aqui a mensagem de erro completa que aparece ao fazer a importação, para verificarmos melhor

                    in reply to: Acesso do Vídeo Interrompido #47321
                    Gabriel Alves
                    Keymaster

                      Olá!

                      Pela descrição do erro parece ser algo local, então sugiro primeiro testar em uma guia anônima ou outro navegador para descartar problemas relacionados a extensões como AdBlock. Se apresentar o mesmo problema em outros navegadores então sugiro desabilitar temporariamente softwares que poderiam impedir o carregamento, conforme os exemplos citados.

                      Outra coisa que pode resolver nesses casos é trocar o DNS no seu computador, vi alguns relatos de que isso resolveu esse mesmo problema. Veja se não está o DNS do Google (8.8.8.8), se sim experimente trocar pelo do Cloudflare (1.1.1.1).

                      Se ainda assim não funcionar, pode ser um bloqueio na rede do seu trabalho, já que mencionou estar acessando de lá. Muitas empresas bloqueiam o acesso a sites de vídeos populares como Vimeo (que é onde estão hospedadas as aulas da plataforma) ou YouTube. Nesse caso, pode ser bom verificar com o suporte técnico ou testar a conexão em outra rede se for possível.

                      in reply to: caixa delimitadora #47320
                      Gabriel Alves
                      Keymaster

                        Que ótimo =)

                        Disponha!

                        in reply to: Angents & Tools não funcionam #47267
                        Gabriel Alves
                        Keymaster

                          Isso, por essas razões pode ocorrer falha em algumas execuções, onde a LLM “se perde”

                          Você pode tentar usar o LangGraph conforme comentei, ou ainda dar uma olhada em serviços como o Crew AI, que é uma opção que tem sido bastante usada para criação de agentes mais complexos. Portanto pode ser algo mais robusto e confiável para ser usada em produção, além de mais completo que o LangChain devido à sua melhor integração com modelos open source

                          Caso deseje focar em modelos open source, também sugiro dar uma olhada no Llama Index 

                          in reply to: Projeto 3 #47266
                          Gabriel Alves
                          Keymaster

                            Que ótimo que conseguiu descobrir

                            Esse problema deve ocorrer porque alguns PDFs possuem conteúdos mal formatados ou usam codificação que dificulta a extração adequada do texto, resultando em palavras juntas ou sem espaçamento. Talvez quando você abriu o PDF com o Word e salvou novamente, o Word automaticamente reformatou o texto e com isso corrigiu essas inconsistências.

                            Para evitar isso no futuro, você pode usar ferramentas como PyPDF2 ou pdfplumber para inspecionar e corrigir problemas nos arquivos antes de carregá-los com o PyPDFLoader. Ou ainda, converter em um arquivo de texto ou outro formato legível antes de enviar o conteúdo para o RAG.

                            Se quiser também pode testar outros loaders de PDF que o LangChain suporta, como PyMuPDFLoader ou PDFMinerLoader. Mais informações aqui: https://python.langchain.com/docs/integrations/document_loaders/

                            Para lidar com PDFs com formatos inconsistentes, o uso de serviços como o Unstructured (que o LangChain também suporta) pode ser uma ótima solução para extrair textos de maneira mais robusta. Para mais informações sobre ele veja https://python.langchain.com/docs/integrations/document_loaders/unstructured_file/ – aliás também deixamos comentários sobre no final do Colab do projeto 03 (aqui)

                            in reply to: caixa delimitadora #47265
                            Gabriel Alves
                            Keymaster

                              Olá Tatiane!

                              Você pode usar o programa labelImg, que permite fazer as anotações de modo bastante prático. Na aula “Criação do seu dataset de imagens manualmente” tem uma explicação detalhada mostrando como pode usar.

                              Caso use o modelo YOLOv8 ou versão superior eu recomendo usar a plataforma roboflow, que oferece uma ferramenta gratuita para anotação e costuma ser mais prático pois gera em uma interface unificada os arquivos de anotação no formato para essa versão do YOLO – veja aqui a explicação de como usar https://roboflow.com/how-to-label/yolov8

                              in reply to: Angents & Tools não funcionam #47179
                              Gabriel Alves
                              Keymaster

                                Olá Leonardo!

                                Se entendi corretamente, inicialmente não estava funcionando, mas depois você executou o mesmo código com a mesma pergunta e funcionou. Isso pode estar relacionado à própria biblioteca e não a um erro na programação. Fiz algumas pesquisas e há diversos relatos da comunidade sobre inconsistências no LangChain, especialmente quando ele entra em loops infinitos, mesmo com tudo configurado corretamente.

                                Embora o LangChain seja excelente para lidar com várias funções de LLMs, ele apresenta algumas limitações para a implementação nativa de agentes, deixando a desejar em certos quesitos. Por isso, para tentar resolver eu recomendo antes experimentar mudar o prompt do sistema para ficar de acordo com o seu objetivo específico, dá para testar desse modo antes e ver se apresenta melhoras.

                                Parece que recentemente os autores da biblioteca passaram a mudar um pouco o foco, fazendo com que o melhor modo de implementar agentes no ecossistema LangChain seja através do LangGraph, que é uma extensão da biblioteca justamente voltada para a criação de agentes personalizáveis.

                                Para adaptar é necessário algumas modificações, esse artigo aqui explica bem e detalha exatamente essas mudanças: https://python.langchain.com/docs/how_to/migrate_agent/

                                in reply to: Projeto 3 #47178
                                Gabriel Alves
                                Keymaster

                                  Opa, parece ser algo que afeta a pré-visualização somente, mas para garantir você consegue me passar a versão do LangChain e a versão do Streamlit que tem instalado em sua máquina local? Para eu tentar reproduzir o problema daqui, já que em meus ambientes está funcionando conforme esperado

                                Viewing 15 posts - 16 through 30 (of 393 total)