Forum Replies Created

Viewing 15 posts - 46 through 60 (of 427 total)
  • Author
    Posts
  • in reply to: Documentos relevantes retornados pelo retriever #48407
    Gabriel Alves
    Keymaster

      Olá Michael!

      O history_aware_retriever sempre retorna documentos porque seu comportamento padrão é recuperar informações mesmo que a similaridade com a consulta seja baixa, e como o objetivo do projeto é conversar com documentos então é esperado que sempre haja algum PDF para ser consultado como referência. Para filtrar apenas documentos realmente relevantes, você pode alterar parâmetros do search_kwargs do retriever: ajustar k (número de documentos retornados) e fetch_k (número de documentos inicialmente buscados) pode ajudar a filtrar melhor as respostas (por exemplo, diminuir k para 1 retornaria apenas o documento mais relevante). O código usa o método mmr para recuperação, mas você pode customizar os parâmetros para melhorar a relevância dos resultados. Você pode ainda testar outros métodos de busca, como similarity ou similarity_score_threshold, dependendo do comportamento desejado para o retriever.

      Outra opção seria filtrar a resposta com base na pontuação de similaridade (score) que é obtida entre a pergunta e os documentos. Você poderia definir um limiar (threshold) de similaridade para filtrar apenas os documentos que tenham uma pontuação acima de um determinado valor.

      Exemplo:

      query = "A pergunta aqui..."
      docs_and_scores = faiss_index.similarity_search_with_score(query, k=5)
      
      threshold = 0.7 # ajuste conforme necessário
      relevant_docs = [doc for doc, score in docs_and_scores if score > threshold]

      Quanto a transformar o retriever em uma Tool dentro de um Agent, isso pode ser uma abordagem válida, especialmente se você implementar um mecanismo de decisão que primeiro classifique a intenção da pergunta antes de buscar documentos. Outra alternativa seria adicionar um filtro semântico antes de exibir os resultados, como um reranker (ex: Cohere Rerank) ou um modelo de classificação treinado para validar se os documentos são realmente úteis para a consulta. Ou ainda, simplesmente pedir para a própria LLM classificar se é uma pergunta que deve ser consultada em arquivos ou não. Isso pode evitar buscas irrelevantes sem precisar modificar toda a estrutura do pipeline.

      in reply to: detecção de faces com CNN não executando (erro cudaOccupancy…) #48100
      Gabriel Alves
      Keymaster

        Disponha =)

        Abraços!

        in reply to: detecção de faces com CNN não executando (erro cudaOccupancy…) #48098
        Gabriel Alves
        Keymaster

          Olá Martony!

          Esse erro parece ser devido a uma incompatibilidade recente envolvendo esse método do dlib, que ainda não há uma solução oficial dos autores mas estamos a procura de uma alternativa. Por enquanto, para esses exemplos de detecção de faces você pode estar usando o HOG mesmo ao invés desse método com CNN, que é bem próximo e bastante eficaz, muito usado para detecção ainda por ser mais rápido que CNN ao mesmo tempo que é mais robusto que o haarcascade.

          in reply to: Document loader do Langchain #47730
          Gabriel Alves
          Keymaster

            Olá Michael! O método from_youtube_url() não detecta automaticamente o idioma das legendas. Você precisa especificar o idioma desejado usando o parâmetro language. Se não for definido, o loader tentará buscar as legendas no idioma padrão do vídeo ou as automáticas, caso estejam disponíveis.

            Portanto, se você precisar de legendas em um idioma específico, pode usar o parâmetro language ao inicializar o YoutubeLoader, conforme exemplo no Colab oficial desse projeto.

            Para vídeos armazenados localmente, o LangChain não possui um loader específico como o YoutubeLoader. No entanto, você pode usar bibliotecas como MoviePy ou FFmpeg para extrair o áudio do vídeo e, em seguida, aplicar a transcrição do áudio (speech-to-text) com ferramentas como o Google Speech-to-Text Audio Transcripts ou o Whisper da OpenAI (ambas podem ser integradas com o LangChain). Isso permite transcrever o áudio local e processá-lo da mesma forma que faria com vídeos do YouTube.

            Como alternativa, você também pode integrar outras APIs específicas para isso, como a AssemblyAI ou Deepgram, que oferecem transcrição e análise de vídeos/áudios com suporte a múltiplos idiomas.

            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 

                                Viewing 15 posts - 46 through 60 (of 427 total)