Respostas no Fórum

Visualizando 15 posts - 16 até 30 (de 403 do total)
  • Autor
    Posts
  • em resposta a: Detecção de imagem #48852
    Gabriel Alves
    Moderador

      Ah sim, mas então com essa correção agora deve funcionar normal!

      Se mesmo assim você notar mais algum erro, pode tentar ver direto pelo Colab no link que te passei, ou mande aqui o seu código completo que daremos uma olhada

      em resposta a: Detecção de imagem #48848
      Gabriel Alves
      Moderador

        Olá Silvio!

        Só para certificar: na sua dúvida você comentou “no código final aparecem 5 imagens”, no caso refere ao código apresentado ao final da aula “Detecção de faces com haarcascade e OpenCV”? E quais são essas imagens que aparecem para você? É a mesma imagem porém repetida?

        Pela sua descrição, acredito que o problema deve ser a indentação do cv2_imshow(imagem), que no seu código ficou dentro do loop “for” mas deveria ficar fora (e por isso a imagem é exibida várias vezes – nesse caso, a quantidade de vezes exibida corresponde à quantidade de faces detectadas na imagem)

        Se quiser comparar com o seu, aqui está o código da aula:

        imagem = cv2.imread('/content/drive/MyDrive/Images/people1.jpg')
        imagem = cv2.resize(imagem, (800, 600))
        imagem_cinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
        deteccoes = detector_facial.detectMultiScale(imagem_cinza, scaleFactor=1.09)
        for (x, y, w, h) in deteccoes:
          cv2.rectangle(imagem, (x, y), (x + w, y + h), (0,255,0), 5)
        cv2_imshow(imagem)

         

        outra opção é conferir o código acessando direto o Colab dessa seção (link aqui)

         

        • Esta resposta foi modificada 4 meses, 1 semana atrás por Gabriel Alves.
        em resposta a: Erro quantization_config #48794
        Gabriel Alves
        Moderador

          Olá Celso! Pode ser um bug da biblioteca no Colab, testei agora o código com a versão mais recente e funcionou corretamente. Testei o mesmo código da seção (link aqui)

          Tente desinstalar o bitsandbytes e instalar novamente de outro modo, segue o comando abaixo:

          !pip uninstall bitsandbytes
          !python -m pip install bitsandbytes --prefer-binary --extra-index-url=https://jllllll.github.io/bitsandbytes-windows-webui

          E reinicie a sessão do Colab logo após executar o comando (provavelmente ele vai pedir automaticamente, daí basta clicar no botão que aparecer na tela para reiniciar)

          Caso não funcione, outro comando que costuma resolver é esse:

          !pip install bitsandbytes-cuda110 bitsandbytes

          (execute bem no começo do Colab e reinicie a sessão antes)

          Teste e me avise se não funcionar

          em resposta a: Sugestão para plataforma #48675
          Gabriel Alves
          Moderador

            Olá Douglas,

            Obrigado pela sua sugestão! Essa funcionalidade já está no planejamento de futuras atualizações. No entanto, devido a limitações no player de vídeo, ainda não foi possível implementá-la de modo que afete todas as aulas, mas a intenção é sim adicioná-la assim que viável.

            em resposta a: detecção de faces com CNN não executando (erro cudaOccupancy…) #48457
            Gabriel Alves
            Moderador

              Oi Paulo! Ainda não, não há uma correção por parte dos desenvolvedores da biblioteca que torne compatível com a versão CUDA do Colab. Recomendamos usar a alternativa com o HOG, que possui maior compatibilidade entre sistemas e performa bem. Se preferir o CNN, pode tentar executar em ambiente local ou em outro cloud provider que não seja o Colab.

              em resposta a: Memória da conversa #48408
              Gabriel Alves
              Moderador

                Olá, obrigado pelo comentário! O histórico foi adicionado à pipeline na chain de contextualização (que tem o objetivo de utilizar as mensagens anteriores e a última pergunta feita para reformulá-la, caso faça referência a informações já mencionadas no histórico). Dessa forma, se a pergunta do usuário depender de algo do histórico, o modelo poderá reconstruí-la corretamente antes da busca nos documentos. Mas reforçar o histórico na chain de perguntas & respostas pode ser bom nessa situação que você citou.

                Como esse projeto foca em interações com documentos/PDFs, o principal objetivo é contextualizar a resposta com base nas informações recuperadas e no histórico do chat relacionado a esses documentos. No entanto, sua adaptação faz bastante sentido se a intenção for criar um chatbot que precise lembrar de informações gerais que o usuário forneceu durante a conversa e que não estão de nenhum modo relacionados ao conteúdo ou tema dos PDFs carregados.

                em resposta a: Documentos relevantes retornados pelo retriever #48407
                Gabriel Alves
                Moderador

                  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.

                  em resposta a: detecção de faces com CNN não executando (erro cudaOccupancy…) #48100
                  Gabriel Alves
                  Moderador

                    Disponha =)

                    Abraços!

                    em resposta a: detecção de faces com CNN não executando (erro cudaOccupancy…) #48098
                    Gabriel Alves
                    Moderador

                      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.

                      em resposta a: Document loader do Langchain #47730
                      Gabriel Alves
                      Moderador

                        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.

                        em resposta a: bind_tools em LLM #47729
                        Gabriel Alves
                        Moderador

                          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.

                          em resposta a: Agents com tools sem ReAct #47728
                          Gabriel Alves
                          Moderador

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

                            em resposta a: ReAct no LangChain #47719
                            Gabriel Alves
                            Moderador

                              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.

                              em resposta a: API #47643
                              Gabriel Alves
                              Moderador

                                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
                                Moderador

                                  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 

                                   

                                Visualizando 15 posts - 16 até 30 (de 403 do total)