A geração de respostas é o componente de uma solução RAG que cria uma resposta a uma consulta de usuário usando as informações recuperadas das fontes de dados empresariais de destino ou corpus de texto.
Os números ao final dos nomes dos LLMs de código aberto denotam os parâmetros do modelo. Por exemplo, o Granite 3.0 8B Instruct é um modelo com 8 bilhões de parâmetros. Pense nos parâmetros como condutores que orquestram a forma como o modelo manipula e compreende os dados de entrada e produz a saída. Eles podem se manifestar na forma de pesos ou vieses, afetando a relevância de determinadas características de entrada sobre a saída gerada.
Um maior número de parâmetros geralmente equivale a um modelo com maior complexidade e adaptabilidade (embora isso não seja estritamente verdade em diferentes arquiteturas, geralmente é verdade dentro de uma arquitetura de transformação). Um grande modelo de linguagem com uma contagem de parâmetros maior pode discernir padrões mais complexos dos dados, abrindo caminho para saídas mais ricas e precisas. Mas, como acontece em muitas coisas na vida, há um preço a pagar. Um aumento nos parâmetros significa maiores demandas computacionais, maiores necessidades de memória e um risco iminente de overfitting.
O modo chat foi projetado para contextos de conversação, enquanto o modo instrução foi projetado para tarefas de processamento de linguagem natural em domínios específicos.
O ajuste fino no modo chat ajuda o LLM a gerar respostas mais naturais e coerentes, relevantes e envolventes para o usuário. O ajuste fino no modo instrução ajuda o LLM a fazer um trabalho melhor ao seguir diferentes tipos de instruções e gerar saídas precisas e apropriadas à tarefa.
Os LLMs fornecem algumas configurações para "configurar" como as respostas são geradas.
Primeiramente, vamos explorar as regras de prompt para melhorar o desempenho da geração.
Não comece escrevendo um prompt muito longo para só depois testá-lo.
Por exemplo, não comece com um prompt longo, como:
- Você trabalha no departamento financeiro de uma grande empresa de eletrônicos do S&P 1000. Você precisa resumir as transcrições das reuniões trimestrais de acionistas para identificar os principais tópicos, tendências e sentimentos.
Responda em formato de lista numérica com marcadores.
Certifique-se de que cada item seja uma frase completa e coerente.
Não tenha alucinações. Responda apenas com as informações contidas na transcrição.
Segue a transcrição para resumir:
Mas comece por aqui:
- Resuma os principais tópicos contidos na seguinte transcrição da reunião:
Não faça grandes alterações nos parâmetros do modelo.
Na maioria dos casos:
Aplique os melhores princípios de engenharia:
Tente quebrar o seu próprio prompt. Não teste seu prompt uma única vez e considere-o um sucesso. Execute dezenas de testes no seu prompt.
Construa um conjunto de dados de teste e continue adicionando seus exemplos. Após cada lançamento de POC, teste novamente para garantir que o seu prompt esteja funcionando corretamente.
Não se preocupe, pois vários prompts são processados em paralelo usando o watsonx.ai
Divida as tarefas em subtarefas menores.
Separe cada etapa do processo em vários prompts e seus respectivos modelos especializados.
Os modelos de chat requerem um design de prompt diferente dos modelos de instrução.
Sinceramente, aprendemos tanto brincando quanto trabalhando. Teste os LLMs mais recentes e desafie-os com tarefas que não fazem parte do seu trabalho cotidiano.
Escolha algo que o LLM provavelmente poderia realizar.
Adicione interações multiníveis para tentar encadear seus prompts.
Editar o prompt do sistema é tão importante quanto editar o prompt do usuário. O prompt do sistema pode fazer grandes diferenças na qualidade da resposta, no tom etc. Os prompts do sistema definem o contexto para a interação, orientando o comportamento do modelo e garantindo a consistência, enquanto os prompts do usuário conduzem o conteúdo específico da conversa. É fundamental ter a capacidade de editar os prompts do sistema para melhorar o desempenho.
Os prompts do sistema fornecem as instruções subjacentes que orientam o comportamento da IA durante toda a interação. Eles estabelecem o papel, o tom e os limites éticos do modelo. O uso de delimitadores pode ajudar o modelo e evitar injeções de prompt, já que especificam onde no prompt você está inserindo a entrada do usuário, ajudando o modelo a identificar onde a entrada do usuário começa e termina. Os delimitadores também ajudam a evitar injeções de prompt e podem ser qualquer coisa como: "**, **"""**, **< >**, ** ".
Segue um exemplo de um prompt do sistema para o modelo Granite:
<|system|>\nVocê é o Granite Chat, um modelo de linguagem de IA desenvolvido pela IBM. Você é um assistente cauteloso. Você segue as instruções cuidadosamente. Você é prestativo e inofensivo, segue diretrizes éticas e promove comportamentos positivos. Você sempre responde às saudações (por exemplo: oi, olá, bom dia, boa tarde, boa noite, tudo bem, muito prazer etc.) com "Olá! Eu sou o Granite Chat, criado pela IBM. Como posso ajudá-lo hoje?". Por favor, não diga mais nada e não inicie uma conversa. {instruction}\n{session_history}<|user|>\n{query}\n<|assistant|>\n
Prompts do usuário são as instruções ou consultas específicas fornecidas pelo usuário para obter a resposta desejada do modelo. Eles devem ser claros e concisos para garantir que o modelo compreenda a tarefa.
O Prompt Lab é uma plataforma da IBM que permite trabalhar com modelos de base e criar prompts usando engenharia de prompt. No Prompt Lab, os usuários podem interagir com os modelos base através do editor de prompts, utilizando os modos Chat, Freeform ou Structured. Essas múltiplas opções permitem criar as melhores configurações do modelo para oferecerem suporte a uma gama de tarefas relacionadas ao processamento de linguagem natural (PLN), incluindo responder perguntas, gerar conteúdo, fazer resumos, classificar e extrair texto.
Para obter informações sobre como começar e saber mais sobre o Prompt Lab, consulte o site oficial do Prompt Lab
Uma estratégia emergente para melhorar a precisão de uma solução RAG é usar um modelo de geração que seja ajustado no corpus de dados. Isso pode levar a melhorias na precisão de ponta a ponta por várias razões. Os benefícios mais significativos provenientes da capacidade do estágio de geração podem melhorar e até mesmo corrigir os resultados de recuperação. Também pode fornecer respostas mais específicas e relevantes para a sua empresa, uma vez que pode ser adaptada ao conteúdo do seu negócio.
Para obter informações sobre como começar e outros detalhes relacionados ao InstructLab, consulte o repositório oficial do InstructLab
O Granite 3.0 inclui uma variedade de modelos, como o Granite 3.0 8B Instruct, o 2B Instruct, o 8B Base e o 2B Base, que foram treinados com mais de 12 trilhões de tokens em 12 linguagens naturais e 116 linguagens de programação. Esses modelos igualam ou superam o desempenho de modelos de tamanho semelhante de provedores líderes em benchmarks acadêmicos e empresariais, apresentando um desempenho robusto em tarefas como compreensão de linguagem, geração de código e resumo de documentos.
Transparência e segurança
O compromisso da IBM com a transparência e a segurança é evidente na divulgação detalhada dos conjuntos de dados de treinamento, filtragem e processos de seleção no relatório técnico do Granite 3.0. Os modelos são lançados sob a licença permissiva do Apache 2.0, garantindo flexibilidade e autonomia para clientes corporativos e para a comunidade de IA em geral. Além disso, os modelos Granite Guardian 3.0 oferecem recursos abrangentes de detecção de riscos e danos, superando outros modelos de segurança do mercado.
Eficiência e relação custo-benefício
Os modelos Granite 3.0 são projetados para serem econômicos, permitindo que as empresas alcancem um desempenho de modelo de ponta por uma fração do custo. O uso do InstructLab, uma abordagem colaborativa de código aberto, permite o ajuste fino de modelos menores para tarefas específicas, reduzindo os custos de 3 a 23 vezes em comparação com modelos maiores. Os modelos de arquitetura Mixture of Experts (MoE), como o Granite 3.0 3B-A800M e o 1B-A400M, oferecem alta eficiência de inferência com impactos mínimos de desempenho, tornando-os ideais para aplicações de baixa latência e implementações baseadas em CPU.
Recursos multimodais e atualizações futuras
Até o final de 2024, os modelos Granite 3.0 devem suportar uma janela de contexto expandida de 128K e recursos de compreensão multimodal de documentos, como tarefas de entrada de imagem e saída de texto. Essa expansão aumentará ainda mais sua utilidade em vários casos de uso empresariais.
Integração do ecossistema
Os modelos Granite 3.0 estão disponíveis em várias plataformas, incluindo o watsonx.ai da IBM, Hugging Face, Vertex AI do Google Cloud, microsserviços NVIDIA NIM, Ollama e Replicate, fornecendo aos desenvolvedores uma ampla gama de opções de implementação e garantindo a integração perfeita com fluxos de trabalho existentes. Em resumo, os modelos Granite 3.0 da IBM oferecem uma solução poderosa, transparente e econômica para IA empresarial, combinando desempenho de última geração com funcionalidades robustas de segurança e amplo suporte ao ecossistema.
Para obter informações sobre como começar e saber mais sobre o Granite, consulte o site oficial do Granite
O conteúdo e a estrutura dos prompts enviados aos LLMs podem afetar muito a qualidade e a fidelidade das respostas geradas.
Os prompts podem ser divididos em seis tipos principais:
Consultas que utilizam apenas palavras-chave são autoexplicativas; são prompts compostos por palavras-chave relacionadas ao tópico em questão. Por exemplo, o prompt:
Qual é o tempo ideal para assar um bolo de chocolate em altitudes elevadas?
Pode ser resumido às palavras-chave:
tempo de forno para bolo de chocolate em altitudes elevadas
Os prompts apenas de palavras-chave normalmente geram respostas mais amplas e focadas em tópicos, com forte relevância do texto de aumento recuperado. Isso pode ser um efeito desejável para uma solução que exige respostas amplas e informativas, como um chatbot de assistente de operador, mas pode gerar informações em excesso para soluções que requerem respostas sucintas e conversacionais.
Os prompts comparativos pedem ao LLM para fazer comparações entre um ou mais tópicos ou conceitos no prompt. Por exemplo:
Qual é a diferença entre uma regra e uma atribuição de função?
Os prompts comparativos podem ser úteis quando o modelo de geração e o corpus de suporte têm informações sobre todos os conceitos, bem como dimensões óbvias ou material de suporte sobre como os conceitos podem ser comparados de forma útil. Sem eles, é provável que um prompt comparativo gere uma resposta sem sentido ou ineficaz.
Prompts agregados pedem ao modelo para agregar dois ou mais conceitos ou consultas em um único prompt. Por exemplo:
Como faço para criar uma permissão e um grupo de permissões?
Os prompts agregados geralmente são mais difíceis para os LLMs devido à ambiguidade inerente à pergunta.
Para resolver essa ambiguidade, geralmente é recomendável dividir os prompts agregados em vários prompts de tópicos únicos ou fornecer contexto adicional que descreva explicitamente a resposta desejada.
Um prompt ambíguo é aquele que pode ser interpretado de várias maneiras. Por exemplo:
O que é um papel?
Este prompt pode gerar respostas sobre papéis no contexto de atuação (incluindo atores famosos e seus papéis), papéis em soluções de segurança de TI ou papéis dentro de uma organização. A incerteza gerada por eles faz com que prompts ambíguos sejam uma opção ruim na maioria das soluções; por isso, devem ser revisados para adicionar detalhes e contexto, direcionando o LLM para o tópico desejado.
No contexto de uma solução de RAG, um prompt desviante é aquele que não tem uma resposta no conjunto de documentos de apoio. Isso pode levar a respostas alucinatórias/improvisadas com base no conhecimento incorporado no LLM, ou respostas irrelevantes com base em resultados de pesquisa de baixa relevância no corpus.
Embora seja impossível evitar respostas desviantes em todos os casos de uso (por exemplo, um chatbot conversacional), os desenvolvedores de soluções podem minimizá-las restringindo a entrada do usuário por meio de listas de opções, por exemplo. “Posso te ajudar com…” seguido por uma série de botões de tópicos predefinidos, ou “incentivando” os usuários a darem respostas seguras por meio de linguagem descritiva ou diretiva em instruções ao usuário e respostas modelo.
Prompts indiretos são prompts cujas palavras-chave não estão diretamente no corpus, mas têm sinônimos que estão. Os prompts indiretos são desafiadores para os desenvolvedores de soluções, pois sua confiabilidade depende do número de sinônimos existentes para as palavras-chave do prompt e de como os sinônimos levam a uma consulta inequívoca.
Aconselha-se a implementação de um mecanismo de filtragem de consultas por blacklist para adicionar detalhes não ambíguos às palavras-chave ou substituir palavras-chave "problemáticas" por sinônimos ou frases inequívocas.
Embora a criação de prompts "bons" seja tanto uma arte quanto uma ciência, há uma série de práticas aceitas que levam a melhores prompts e, portanto, a melhores resultados.
Um bom prompt é:
Relevante para o domínio-alvo e contêm detalhes e contexto suficientes para tornar o conteúdo e o tom da saída desejada clara e específica.
Adaptado ao público-alvo. Uma resposta destinada a um analista financeiro corporativo terá um tom, estrutura e conteúdo muito diferentes em comparação com uma resposta para um cliente de banco de varejo. Um bom prompt conterá instruções (“Você é um analista financeiro de nível médio. Gere um relatório...") ou indicação clara da audiência ("...escrito para um cliente de bancos de varejo que não tem conhecimento de terminologia financeira") para a resposta.
Projetado para um caso de uso específico. Um bom prompt deve ser criado com um caso de uso específico em mente e incluir detalhes sobre onde e como a resposta gerada será usada (“… a resposta será publicada em uma revista do setor de viagens para operadores de turismo”); o que, por sua vez, influenciará o tom, a linguagem e o estilo da resposta gerada.
Vicky Kuo, Chris Kirby, Luke Major, Atin Chandel, Brant Li, Evan Wheldon
Atualizado: 15 de novembro de 2024