Engenharia de uma persona para se apoiar no histórico de chat

Pergunta rápida: qual seria uma estrutura “melhor” para o nosso caso de uso?

Temos um monte de logs de histórico de chat exportados de Canais do Slack que contêm muito conhecimento, problemas mencionados e soluções, etc. Obviamente, esses chats contêm muita “informação irrelevante” que seria antieconômica simplesmente despejar em tópicos/posts e fazer o bot de IA usar isso.

Temos cerca de 10 arquivos, cada um com aproximadamente 1-2 MB de tamanho. Em termos de uso de persona de IA, teremos apenas cerca de 30 pessoas fazendo cerca de 10 chats por dia (difícil estimar o volume de tokens aqui).

Neste ponto, estou me perguntando qual seria uma abordagem razoável de 80/20 para utilizar esses logs de chat, mantendo-os um tanto econômicos. Reduziu-se a 2 opções:

  1. Copiar e colar os logs em tópicos/posts do Discourse: Rápido e sujo, sem necessidade de desenvolvimento personalizado, pode acabar em um monte de custo de API.
  2. Pré-processar de alguma forma os logs de chat e colocá-los em um formato ou estrutura adequada e fazer o upload para a persona.
  3. Ou talvez alguma forma híbrida: Com cada solicitação do bot de IA, avaliar e salvar a saída como um arquivo txt e depois fazer o upload para a persona.

Qual opção vocês recomendam? Ou talvez algo completamente diferente?

1 curtida

Eu recomendaria a seguinte abordagem:

  1. Processe os 10 arquivos usando uma persona “Criativa” com um LLM de contexto grande / saída grande como o Sonnet 4 thinking. O objetivo deste processamento seria “organizar” as informações e prepará-las para um RAG.
  2. Em seguida, usando nosso upload integrado, carregue os 10 arquivos processados para uma persona, para que o RAG possa pesquisar o conteúdo.

Dado que há muita informação aqui, recomendo não usar um prompt de sistema muito longo. Como orientação, um prompt de sistema não deve ser muito longo, pois se torna caro. 10 mil tokens são viáveis, 100 mil tokens não são viáveis com os atuais LLMs de ponta. Cada interação custará muito e os LLMs ficarão ainda mais confusos.

4 curtidas

Obrigado, isso ajuda!

Apenas para esclarecer, todos os arquivos carregados são inseridos no prompt do sistema? Ou eles são processados através do ai_embeddings_model configurado primeiro e depois inseridos?

Estou um pouco confuso com sua recomendação de limite de 10k tokens, especialmente com a parte abaixo:

Os arquivos em Discourse AI Persona, upload support são limitados apenas pelo seu tamanho de upload, eles podem ser enormes, são processados via embedding, injetamos chunks no prompt por configuração.

O que eu estava falando era tentar coagir todas as informações em um único prompt de sistema aqui:

que é limitado…

1 curtida

Ah, isso esclarece, obrigado!

Então, basicamente, meus próximos passos devem ser executar alguns testes com diferentes modelos de embeddings e ver qual tamanho de token acabo injetando no prompt do sistema, certo?

O modelo de embedding controla a qualidade, não a quantidade
você pode agrupar todos os seus dados em um único arquivo, nós o dividiremos em segundo plano e recuperaremos os pedaços mais relevantes e os adicionaremos ao seu prompt
experimentar aqui seria sobre melhorar os resultados, algumas limpezas podem funcionar melhor do que outras limpezas, alguns modelos de embedding serão mais inteligentes em encontrar pedaços mais relevantes

2 curtidas

Valeu Sam, agradeço muito :heart:

Se tiver mais algum recurso útil, fique à vontade para compartilhar aqui. Assim que eu tiver progresso, tentarei publicar minha experiência aqui no meta. :slight_smile:

2 curtidas

@sam como você sugere adicionar números de versão ou modelo a separadores de metadados?

Seu exemplo original:

[[metadados sobre gatos]]
uma longa história sobre gatos
[[metadados sobre cachorros]]
uma longa história sobre cachorros

Agora, se quisermos enriquecê-los com números de versão ou números de modelo específicos, devo usar o mesmo formato ou estrutura que os humanos usariam ao digitá-los?

Por exemplo:

[[metadados sobre gatos v1.0]]
uma longa história sobre gatos
[[metadados sobre cachorros]]
uma longa história sobre cachorros
[[metadados sobre gatos xxl v2.1]]
uma longa história sobre gatos
[[metadados sobre cachorros v 1.1beta]]
uma longa história sobre cachorros

Além disso, quando os números de versão estiverem faltando nos metadados (veja metadados sobre cachorros), esse bloco seria usado em uma resposta para todas as solicitações relacionadas a cachorros, independentemente de qual “versão de cachorro”?

Sim, é assim que se faz!

2 curtidas