Szuster: Bom dia, boa tarde, boa noite. Este é mais um episódio de Enzimas. Breves reflexões que te ajudam a catalisar o agilismo em sua organização.
Carol Lobato: Oi a todos, sou Carol Lobato, arquiteta aqui na dti. E nesse episódio de Enzimas vamos falar um pouquinho sobre nossa experiência com o ChatGPT e uma prova de conceito que desenvolvemos.
Quando surgiu o ChatGPT gerou-se uma expectativa de qual impacto teria no dia a dia das pessoas, se substituiria seus trabalhos, e não foi diferente na nossa equipe, que trabalha com Chatbot, que é algo intimamente relacionado. Ficamos nos perguntando: qual seria o futuro dos Chatbots? As ferramentas hoje utilizadas seriam substituídas? Seria só instruir o ChatGPT, que é um assistente virtual responsável por fornecer alguns serviços, que tudo já estaria pronto?
Muitas perguntas e poucas respostas. Então decidimos buscar essas respostas colocando em prática o ChatGPT. Assim íamos conseguir observar os resultados, bem como as dificuldades e limitações que poderíamos ter. Por tanto, começamos a estudar a PI fornecida pela OpenAI com intuito de criar uma prova de conceito, com a utilização conjunta do ChatGPT e o nosso Chatbot.
Antes de continuar é importante entender como a inteligência artificial já era usada no nosso contexto. A gente usa uma ferramenta de processamento de linguagem natural chamada IBM Watson Assistant que utiliza a machine learning para compreender as solicitações dos usuários, mas diferentemente do ChatGPT, ele não é um gerador de texto natural.
Vamos entender melhor através de um exemplo: Maria está precisando de uma segunda via de seu boleto, então ela entra em contato com o nosso Chatbot e envia a seguinte mensagem: Quero meu boleto. Essa mensagem vai ser enviada ao Watson que vai identificar a intenção dela e redirecionar para o fluxo correto.
Dentro desse fluxo terá passo a passo do que é necessário para atender ao pedido. O primeiro passo nesse caso, seria solicitar o CPF, então o Watson retorna como resposta à Maria essa solicitação. Maria então entra com o CPF, e o CPF retorna ao Watson que vai entender que as condições foram atendidas para passar para o passo seguinte, que é validar o CPF. Nesse ponto vimos um possível problema que poderíamos ter, que é a sinalização da necessidade de uma integração externa, já que essa validação é feita através de uma chamada ao CRM. O Watson nesse caso ao invés de retornar uma resposta pra gente redirecionar para Maria, ele retorna que uma ação é necessária. Então o backend fica responsável por fazer as integrações necessárias, e retornar o resultado daquela ação para o Watson. Que aí sim, vai dar a melhor resposta para Maria. Mas enquanto o Watson retorna estruturado, facilmente entendido pelo nosso backend, o ChatGPT retorna texto. Então para que o nosso backend consiga entender, a gente teria que instruir o ChatGPT a retornar uma palavra chave. Então é algo que não é tão simples e direto como a ferramenta da IMB. Com isso resolvemos trabalhar com uma poc mais simples que não envolvesse fluxos, para ganhar experiência com a ferramenta e tentar situações mais complexas depois.
Resumindo, o conceito que resolvemos provar na nossa poke, é que seria possível o ChatGPT responder perguntas sobre assuntos aos quais ele não foi treinado e que seria possível enriquecer a experiência do usuário redirecionando dúvidas que o Watson não conseguiu responder. Se quando Maria estivesse solicitando a segunda via do boleto dela, ela perguntasse uma dúvida, se ela poderia alterar, por exemplo, a data de vencimento do pagamento dela, e o Watson não foi treinado para responder essa pergunta, essa pergunta seria redirecionado para o ChatGPT.
Como que é possível adicionar uma base própria ao ChatGPT? Como a gente adicionou conhecimento novo nele? Há duas maneiras possíveis: a primeira por fine-tuning, e a segunda é por aprendizado por contexto. No fine-tuning é realizado um treinamento com os dados de um dos modelos pré treinados da OpenAI. Resultando em um novo modelo com esse conhecimento personalizado. A gente não usou essa abordagem por questão de custo, pois o treinamento é pago e o custo da chamada a modelos customizados é mais alto. Então utilizamos o aprendizado por contexto, onde o conhecimento necessário é passado diretamente no prompt, onde o prompt é como fornecemos as instruções ao ChatGPT. Por exemplo, podemos fazer uma solicitação com, um prompt com, responde à pergunta de acordo com o texto abaixo, ai em seguida, a gente passa o conhecimento necessário para ele responder a pergunta. No entanto há uma limitação no tamanho do texto que podemos passar no prompt, juntamente com o tamanho das respostas.
Portanto não conseguimos incluir toda nossa base de dados no prompt. E como foi solucionada essa limitação? Ela foi solucionada só passando parte da base, mas a parte mais relevante para cada pergunta. Mas como é possível obter os dados mais relevantes? Isso é feito através da busca semântica, onde a gente pega nossos dados, separamos em pequenas partes chamadas chunks e transformamos essas partes em uma representação matemática, um vetor que chamamos de index, a própria OpenAI possui na sua API um endpoint para geração de index. E como esses index permitem essa busca? Quando o texto é transformado ele é posicionado em um espaço multidimensional chamado de espaço semântico, nesse espaço textos semelhantes com alguma relação entre si ficam próximos, enquanto textos sem relação ficam distantes. Então para saber quais os textos melhor respondem uma pergunta, essa pergunta também é transformada em um vetor, ou seja, posicionada no espaço semântico.
Os textos que ficam mais próximos dessa pergunta têm uma maior relação com ela e são os mais prováveis de conter a resposta desejada. Os resultados que obtivemos foram bons e promissores. E o maior problema que enfrentamos foi limitar o ChatGPT a não responder assuntos fora do contexto e entender quando é necessário ele falar que não tem informação, que ele não sabe responder, porque ele às vezes inventa uma resposta. E com isso aprendemos que pra obter um bom resultado é necessário gerar um bom prompt, inclusive, até surgiu uma nova área de conhecimento, a engenharia de prompt, pois é uma maneira de solicitar coisas bem diferentes da programação tradicional ou das próprias ferramentas convencionais de NPL.
Ficou como próximos passos: a avaliação da melhor ferramenta para gerenciar nossa base de dados, pois a geração de chunks index foi feita manualmente nessa poke e além disso avaliar o comportamento do ChatGPT em um fluxo conversacional mais complexo com obtenção de dados e integração com outros sistemas.
É importante salientar que há muitas oportunidades para o uso do ChatGPT, mas ele não é a melhor solução para tudo nem é milagroso. Para conseguir os melhores resultados é necessário estudo, esforço e profissionais qualificados. Além disso, cada caso é único e deve ser avaliado individualmente, tendo a experimentação como uma ótima forma de analisar se a solução é a mais adequada. Obrigada por nos acompanhar nesse episódio, esperamos que você tenha gostado, até a próxima.
Szuster: Bom dia, boa tarde, boa noite. Este é mais um episódio de Enzimas. Breves reflexões que te ajudam a catalisar o agilismo em sua organização.
Carol Lobato: Oi a todos, sou Carol Lobato, arquiteta aqui na dti. E nesse episódio de Enzimas vamos falar um pouquinho sobre nossa experiência com o ChatGPT e uma prova de conceito que desenvolvemos.
Quando surgiu o ChatGPT gerou-se uma expectativa de qual impacto teria no dia a dia das pessoas, se substituiria seus trabalhos, e não foi diferente na nossa equipe, que trabalha com Chatbot, que é algo intimamente relacionado. Ficamos nos perguntando: qual seria o futuro dos Chatbots? As ferramentas hoje utilizadas seriam substituídas? Seria só instruir o ChatGPT, que é um assistente virtual responsável por fornecer alguns serviços, que tudo já estaria pronto?
Muitas perguntas e poucas respostas. Então decidimos buscar essas respostas colocando em prática o ChatGPT. Assim íamos conseguir observar os resultados, bem como as dificuldades e limitações que poderíamos ter. Por tanto, começamos a estudar a PI fornecida pela OpenAI com intuito de criar uma prova de conceito, com a utilização conjunta do ChatGPT e o nosso Chatbot.
Antes de continuar é importante entender como a inteligência artificial já era usada no nosso contexto. A gente usa uma ferramenta de processamento de linguagem natural chamada IBM Watson Assistant que utiliza a machine learning para compreender as solicitações dos usuários, mas diferentemente do ChatGPT, ele não é um gerador de texto natural.
Vamos entender melhor através de um exemplo: Maria está precisando de uma segunda via de seu boleto, então ela entra em contato com o nosso Chatbot e envia a seguinte mensagem: Quero meu boleto. Essa mensagem vai ser enviada ao Watson que vai identificar a intenção dela e redirecionar para o fluxo correto.
Dentro desse fluxo terá passo a passo do que é necessário para atender ao pedido. O primeiro passo nesse caso, seria solicitar o CPF, então o Watson retorna como resposta à Maria essa solicitação. Maria então entra com o CPF, e o CPF retorna ao Watson que vai entender que as condições foram atendidas para passar para o passo seguinte, que é validar o CPF. Nesse ponto vimos um possível problema que poderíamos ter, que é a sinalização da necessidade de uma integração externa, já que essa validação é feita através de uma chamada ao CRM. O Watson nesse caso ao invés de retornar uma resposta pra gente redirecionar para Maria, ele retorna que uma ação é necessária. Então o backend fica responsável por fazer as integrações necessárias, e retornar o resultado daquela ação para o Watson. Que aí sim, vai dar a melhor resposta para Maria. Mas enquanto o Watson retorna estruturado, facilmente entendido pelo nosso backend, o ChatGPT retorna texto. Então para que o nosso backend consiga entender, a gente teria que instruir o ChatGPT a retornar uma palavra chave. Então é algo que não é tão simples e direto como a ferramenta da IMB. Com isso resolvemos trabalhar com uma poc mais simples que não envolvesse fluxos, para ganhar experiência com a ferramenta e tentar situações mais complexas depois.
Resumindo, o conceito que resolvemos provar na nossa poke, é que seria possível o ChatGPT responder perguntas sobre assuntos aos quais ele não foi treinado e que seria possível enriquecer a experiência do usuário redirecionando dúvidas que o Watson não conseguiu responder. Se quando Maria estivesse solicitando a segunda via do boleto dela, ela perguntasse uma dúvida, se ela poderia alterar, por exemplo, a data de vencimento do pagamento dela, e o Watson não foi treinado para responder essa pergunta, essa pergunta seria redirecionado para o ChatGPT.
Como que é possível adicionar uma base própria ao ChatGPT? Como a gente adicionou conhecimento novo nele? Há duas maneiras possíveis: a primeira por fine-tuning, e a segunda é por aprendizado por contexto. No fine-tuning é realizado um treinamento com os dados de um dos modelos pré treinados da OpenAI. Resultando em um novo modelo com esse conhecimento personalizado. A gente não usou essa abordagem por questão de custo, pois o treinamento é pago e o custo da chamada a modelos customizados é mais alto. Então utilizamos o aprendizado por contexto, onde o conhecimento necessário é passado diretamente no prompt, onde o prompt é como fornecemos as instruções ao ChatGPT. Por exemplo, podemos fazer uma solicitação com, um prompt com, responde à pergunta de acordo com o texto abaixo, ai em seguida, a gente passa o conhecimento necessário para ele responder a pergunta. No entanto há uma limitação no tamanho do texto que podemos passar no prompt, juntamente com o tamanho das respostas.
Portanto não conseguimos incluir toda nossa base de dados no prompt. E como foi solucionada essa limitação? Ela foi solucionada só passando parte da base, mas a parte mais relevante para cada pergunta. Mas como é possível obter os dados mais relevantes? Isso é feito através da busca semântica, onde a gente pega nossos dados, separamos em pequenas partes chamadas chunks e transformamos essas partes em uma representação matemática, um vetor que chamamos de index, a própria OpenAI possui na sua API um endpoint para geração de index. E como esses index permitem essa busca? Quando o texto é transformado ele é posicionado em um espaço multidimensional chamado de espaço semântico, nesse espaço textos semelhantes com alguma relação entre si ficam próximos, enquanto textos sem relação ficam distantes. Então para saber quais os textos melhor respondem uma pergunta, essa pergunta também é transformada em um vetor, ou seja, posicionada no espaço semântico.
Os textos que ficam mais próximos dessa pergunta têm uma maior relação com ela e são os mais prováveis de conter a resposta desejada. Os resultados que obtivemos foram bons e promissores. E o maior problema que enfrentamos foi limitar o ChatGPT a não responder assuntos fora do contexto e entender quando é necessário ele falar que não tem informação, que ele não sabe responder, porque ele às vezes inventa uma resposta. E com isso aprendemos que pra obter um bom resultado é necessário gerar um bom prompt, inclusive, até surgiu uma nova área de conhecimento, a engenharia de prompt, pois é uma maneira de solicitar coisas bem diferentes da programação tradicional ou das próprias ferramentas convencionais de NPL.
Ficou como próximos passos: a avaliação da melhor ferramenta para gerenciar nossa base de dados, pois a geração de chunks index foi feita manualmente nessa poke e além disso avaliar o comportamento do ChatGPT em um fluxo conversacional mais complexo com obtenção de dados e integração com outros sistemas.
É importante salientar que há muitas oportunidades para o uso do ChatGPT, mas ele não é a melhor solução para tudo nem é milagroso. Para conseguir os melhores resultados é necessário estudo, esforço e profissionais qualificados. Além disso, cada caso é único e deve ser avaliado individualmente, tendo a experimentação como uma ótima forma de analisar se a solução é a mais adequada. Obrigada por nos acompanhar nesse episódio, esperamos que você tenha gostado, até a próxima.
Szuster: Bom dia, boa tarde, boa noite. Este é mais um episódio de Enzimas. Breves reflexões que te ajudam a catalisar o agilismo em sua organização.
Carol Lobato: Oi a todos, sou Carol Lobato, arquiteta aqui na dti. E nesse episódio de Enzimas vamos falar um pouquinho sobre nossa experiência com o ChatGPT e uma prova de conceito que desenvolvemos.
Quando surgiu o ChatGPT gerou-se uma expectativa de qual impacto teria no dia a dia das pessoas, se substituiria seus trabalhos, e não foi diferente na nossa equipe, que trabalha com Chatbot, que é algo intimamente relacionado. Ficamos nos perguntando: qual seria o futuro dos Chatbots? As ferramentas hoje utilizadas seriam substituídas? Seria só instruir o ChatGPT, que é um assistente virtual responsável por fornecer alguns serviços, que tudo já estaria pronto?
Muitas perguntas e poucas respostas. Então decidimos buscar essas respostas colocando em prática o ChatGPT. Assim íamos conseguir observar os resultados, bem como as dificuldades e limitações que poderíamos ter. Por tanto, começamos a estudar a PI fornecida pela OpenAI com intuito de criar uma prova de conceito, com a utilização conjunta do ChatGPT e o nosso Chatbot.
Antes de continuar é importante entender como a inteligência artificial já era usada no nosso contexto. A gente usa uma ferramenta de processamento de linguagem natural chamada IBM Watson Assistant que utiliza a machine learning para compreender as solicitações dos usuários, mas diferentemente do ChatGPT, ele não é um gerador de texto natural.
Vamos entender melhor através de um exemplo: Maria está precisando de uma segunda via de seu boleto, então ela entra em contato com o nosso Chatbot e envia a seguinte mensagem: Quero meu boleto. Essa mensagem vai ser enviada ao Watson que vai identificar a intenção dela e redirecionar para o fluxo correto.
Dentro desse fluxo terá passo a passo do que é necessário para atender ao pedido. O primeiro passo nesse caso, seria solicitar o CPF, então o Watson retorna como resposta à Maria essa solicitação. Maria então entra com o CPF, e o CPF retorna ao Watson que vai entender que as condições foram atendidas para passar para o passo seguinte, que é validar o CPF. Nesse ponto vimos um possível problema que poderíamos ter, que é a sinalização da necessidade de uma integração externa, já que essa validação é feita através de uma chamada ao CRM. O Watson nesse caso ao invés de retornar uma resposta pra gente redirecionar para Maria, ele retorna que uma ação é necessária. Então o backend fica responsável por fazer as integrações necessárias, e retornar o resultado daquela ação para o Watson. Que aí sim, vai dar a melhor resposta para Maria. Mas enquanto o Watson retorna estruturado, facilmente entendido pelo nosso backend, o ChatGPT retorna texto. Então para que o nosso backend consiga entender, a gente teria que instruir o ChatGPT a retornar uma palavra chave. Então é algo que não é tão simples e direto como a ferramenta da IMB. Com isso resolvemos trabalhar com uma poc mais simples que não envolvesse fluxos, para ganhar experiência com a ferramenta e tentar situações mais complexas depois.
Resumindo, o conceito que resolvemos provar na nossa poke, é que seria possível o ChatGPT responder perguntas sobre assuntos aos quais ele não foi treinado e que seria possível enriquecer a experiência do usuário redirecionando dúvidas que o Watson não conseguiu responder. Se quando Maria estivesse solicitando a segunda via do boleto dela, ela perguntasse uma dúvida, se ela poderia alterar, por exemplo, a data de vencimento do pagamento dela, e o Watson não foi treinado para responder essa pergunta, essa pergunta seria redirecionado para o ChatGPT.
Como que é possível adicionar uma base própria ao ChatGPT? Como a gente adicionou conhecimento novo nele? Há duas maneiras possíveis: a primeira por fine-tuning, e a segunda é por aprendizado por contexto. No fine-tuning é realizado um treinamento com os dados de um dos modelos pré treinados da OpenAI. Resultando em um novo modelo com esse conhecimento personalizado. A gente não usou essa abordagem por questão de custo, pois o treinamento é pago e o custo da chamada a modelos customizados é mais alto. Então utilizamos o aprendizado por contexto, onde o conhecimento necessário é passado diretamente no prompt, onde o prompt é como fornecemos as instruções ao ChatGPT. Por exemplo, podemos fazer uma solicitação com, um prompt com, responde à pergunta de acordo com o texto abaixo, ai em seguida, a gente passa o conhecimento necessário para ele responder a pergunta. No entanto há uma limitação no tamanho do texto que podemos passar no prompt, juntamente com o tamanho das respostas.
Portanto não conseguimos incluir toda nossa base de dados no prompt. E como foi solucionada essa limitação? Ela foi solucionada só passando parte da base, mas a parte mais relevante para cada pergunta. Mas como é possível obter os dados mais relevantes? Isso é feito através da busca semântica, onde a gente pega nossos dados, separamos em pequenas partes chamadas chunks e transformamos essas partes em uma representação matemática, um vetor que chamamos de index, a própria OpenAI possui na sua API um endpoint para geração de index. E como esses index permitem essa busca? Quando o texto é transformado ele é posicionado em um espaço multidimensional chamado de espaço semântico, nesse espaço textos semelhantes com alguma relação entre si ficam próximos, enquanto textos sem relação ficam distantes. Então para saber quais os textos melhor respondem uma pergunta, essa pergunta também é transformada em um vetor, ou seja, posicionada no espaço semântico.
Os textos que ficam mais próximos dessa pergunta têm uma maior relação com ela e são os mais prováveis de conter a resposta desejada. Os resultados que obtivemos foram bons e promissores. E o maior problema que enfrentamos foi limitar o ChatGPT a não responder assuntos fora do contexto e entender quando é necessário ele falar que não tem informação, que ele não sabe responder, porque ele às vezes inventa uma resposta. E com isso aprendemos que pra obter um bom resultado é necessário gerar um bom prompt, inclusive, até surgiu uma nova área de conhecimento, a engenharia de prompt, pois é uma maneira de solicitar coisas bem diferentes da programação tradicional ou das próprias ferramentas convencionais de NPL.
Ficou como próximos passos: a avaliação da melhor ferramenta para gerenciar nossa base de dados, pois a geração de chunks index foi feita manualmente nessa poke e além disso avaliar o comportamento do ChatGPT em um fluxo conversacional mais complexo com obtenção de dados e integração com outros sistemas.
É importante salientar que há muitas oportunidades para o uso do ChatGPT, mas ele não é a melhor solução para tudo nem é milagroso. Para conseguir os melhores resultados é necessário estudo, esforço e profissionais qualificados. Além disso, cada caso é único e deve ser avaliado individualmente, tendo a experimentação como uma ótima forma de analisar se a solução é a mais adequada. Obrigada por nos acompanhar nesse episódio, esperamos que você tenha gostado, até a próxima.
Como transformar o ChatGPT em um chatbot com conhecimentos personalizados? Nesse Enzimas, Ana Carolina Lobato, Arquiteta de Software na dti, conta mais sobre o case de um chatbot em que treinou a ferramenta com dados próprios. Bateu a curiosidade? Então dá o play!
Quer conversar com Os Agilistas? É só mandar sua dúvida/sugestão para @osagilistas no Instagram ou pelo e-mail osagilistas@dtidigital.com.br que nós responderemos em um de nossos conteúdos!
Nos acompanhe também pelo @osagilistas no Instagram e assine a nossa newsletter que chega todo mês com os assuntos quentes do agilismo através do site https://osagilistas.com/
See omnystudio.com/listener for privacy information.