Modelos de Conclusão de Chat vs API de Assistentes OpenAI

Neste blog, vamos explorar algumas diferenças fundamentais entre os modelos de conclusão de chat (como aqueles fornecidos pelo endpoint de Conclusões de Chat) e a API mais avançada do OpenAI Assistants. Vamos detalhar como essas duas abordagens lidam com mensagens, histórico de conversa, documentos grandes, tarefas de codificação, limites da janela de contexto e mais. Também veremos como a API Assistants fornece ferramentas adicionais — como interpretadores de código, recuperação de documentos e chamadas de função — que superam muitas limitações das conclusões de chat.

Entendendo os Modelos de Conclusão de Chat

Chat completion models, such as GPT‑4 or GPT‑4o, typically expect a sequence of messages as input. The usual process is simple:
  • Você envia uma lista de mensagens para o modelo.
  • O modelo gera uma resposta.
  • Você recebe a resposta como saída.

Exemplo de Fluxo de Conclusões de Chat

Você pergunta: Qual é a capital do Japão?

  • O modelo responde: A capital do Japão é Tóquio.

Então, você pergunta: Me conte algo sobre a cidade.

  • O modelo diz que não tem contexto e não sabe qual cidade você está se referindo porque não acompanha inherentemente o histórico das mensagens no mesmo estado de conversa.

Limitações dos Modelos de Conclusão de Chat

1. Sem Histórico de Mensagens Persistente

Uma desvantagem é a falta de histórico de mensagens. Nas conclusões de chat, o modelo não se lembra automaticamente das mensagens anteriores. Por exemplo, se você primeiro perguntar: “Qual é a capital do Japão?” e então simplesmente disser: “Me conte algo sobre a cidade”, o modelo muitas vezes não consegue referenciar o nome da cidade a menos que você o forneça manualmente novamente.

2. Sem Manipulação Direta de Documentos

Os modelos de conclusão de chat também não suportam diretamente a manipulação de grandes documentos. Se você tiver um PDF de 500 páginas e quiser consultar algo como: “Qual foi a margem de lucro da minha empresa no Q1 de 2023?”, você precisaria de um processo chamado geração aumentada por recuperação (RAG). Isso envolve:

  • Converter o documento em texto
  • Dividi-lo em partes menores
  • Converter essas partes em embeddings
  • Armazená-las em um banco de dados vetorial
  • Recuperar as partes relevantes no momento da consulta e, em seguida, passá-las como contexto para o modelo

3. Desafios com Tarefas de Programação

Outro problema é lidar com tarefas computacionais. Se você pedir às conclusões de chat para fazer algo como inverter uma string, o modelo pode gerar uma resposta errada ou incompleta. Por exemplo:

Plain Text

 

Ele também pode fornecer informações incorretas ou desatualizadas sobre a data atual, uma vez que não possui capacidades computacionais em tempo real.

4. Janela de Contexto Limitada

Os modelos de conclusão de chat têm um limite máximo fixo de tokens. Se você exceder esse limite, não poderá passar todas as informações necessárias em uma única solicitação. Essa limitação pode interromper o fluxo de conversas em larga escala ou tarefas com muito contexto.

5. Processamento Síncrono

Por fim, os modelos de conclusão de chat são síncronos. Uma vez que você faz uma pergunta, é necessário aguardar por uma única resposta. Você não pode enviar várias solicitações em paralelo e depois combinar os resultados sem uma orquestração cuidadosa.

Apresentando a API de Assistentes

A API de Assistentes da OpenAI aborda os desafios acima permitindo que você construa assistentes de IA com capacidades adicionais. Ela fornece:

  1. Instruções. Semelhante a uma mensagem do sistema, essas definem o que seu assistente deve fazer.
  2. Threads. Todas as mensagens anteriores são armazenadas em threads, para que o assistente possa manter o contexto ao longo de várias interações.
  3. Ferramentas. Estas incluem recursos como um interpretador de código, recuperação de documentos e chamada de funções.
  4. Modelos. Atualmente suporta o GPT‑4 (prévia 1106) e suportará modelos personalizados ajustados no futuro.

Ferramentas na API de Assistentes

  • Interpretador de código. Quando uma tarefa computacional é solicitada — como inverter uma string ou encontrar a data de hoje — o assistente pode usar uma ferramenta de interpretador de código para executar código Python. O assistente então retorna o resultado correto, em vez de depender apenas de previsões de tokens.
  • Recuperação. Com a recuperação, você pode enviar até 20 arquivos (cada um com até 52 MB e até 2 milhões de tokens por arquivo). Quando você faz uma consulta, o assistente pode referenciar esses arquivos diretamente, tornando o manuseio de documentos grandes muito mais simples.
  • Chamada de função. Você pode definir uma função que consulta seu banco de dados interno (para tarefas como verificar números de vendas). O assistente solicitará a chamada dessa função com os argumentos necessários, e você então retornará os resultados ao assistente. Dessa forma, o modelo pode utilizar dados atualizados que normalmente não teria.
  • Manipulação de janelas de contexto maiores. Os threads na API dos Assistentes selecionam dinamicamente quais mensagens incluir como contexto, ajudando a lidar com maiores quantidades de conversa. Isso significa que você não está mais estritamente vinculado a uma pequena janela de contexto.

Exemplo de Implementação

Abaixo está um trecho de código Python mostrando como criar um assistente, definir instruções, habilitar ferramentas e então executar consultas usando threads. Este código ilustra o fluxo de trabalho assíncrono e o uso de recursos como interpretação de código.

Criando o Assistente

Plain Text

 

Criando um Thread

Plain Text

 

Fazendo uma Pergunta

Plain Text

 

Executando a Consulta Assincronamente

Plain Text

 

Saída:

Fazendo Outra Pergunta na Mesma Conversa

Plain Text

 

Saída:

Neste exemplo, você pode ver como a conversa mantém o contexto. Quando pedimos ao assistente para inverter a string, ele usa a ferramenta de intérprete de código. Em seguida, pedimos uma versão em maiúsculas da entrada anterior e obtemos o comprimento. O assistente lembra da nossa pergunta anterior devido às mensagens armazenadas na conversa.

A API dos Assistentes da OpenAI oferece um conjunto robusto de recursos que vai além dos modelos típicos de conclusão de chat. Ela mantém o registro do histórico de mensagens, suporta a recuperação de documentos grandes, executa código Python para cálculos, gerencia contextos maiores e permite chamadas de função para integrações avançadas. Se você precisa de cálculos em tempo real, perguntas e respostas baseadas em documentos ou interações mais dinâmicas em suas aplicações de IA, a API dos Assistentes oferece soluções que abordam as limitações centrais das conclusões de chat padrão.

Usando essas instruções, conversas, ferramentas (como intérprete de código e recuperação) e chamadas de função, você pode criar assistentes de IA sofisticados que lidam perfeitamente com tudo, desde inverter strings até consultar bancos de dados internos. Essa nova abordagem pode transformar a maneira como construímos e usamos sistemas impulsionados por IA em cenários do mundo real.

Obrigado por ler!

Vamos nos conectar no LinkedIn!

Source:
https://dzone.com/articles/chat-completion-models-vs-openai-assitance-api