JEV - O lubrificante nos nós de controlo

Muitos nós numa cadeia de Agent querem um ramo, não um parágrafo. O Jev fica nos nós de controlo, e a geração fica no único passo que tem de escrever. Ao preço publicado, esses nós deixam de comprar token de saída.

JEV - O lubrificante nos nós de controlo

Coautor: folkbench.com (Folkbench é uma plataforma de avaliação e seleção que se pode rever, para APIs de IA, serviços de modelos e sites relacionados. Apoia-se em informação publicada sobre o serviço, preços, disponibilidade, latência e janelas de evidência para ajudar os utilizadores a comparar e a escolher um caminho.)

Dez textos nesta série:

Não poder fazer chat é uma vantagem dentro de uma cadeia de Agent. Um pedido de utilizador passa muitas vezes por intenção, ranhuras, recuperação, ferramentas e uma revisão. Esses nós não querem um parágrafo. Querem um ramo. Se cada passo contrata um modelo que escreve, o P99 e a conta sobem juntos. O Jev senta-se nos nós de controlo como lubrificante: o juízo é uma distribuição, e a frase fica no único passo que realmente tem de gerar.

Onde está o atrito

Um pedido já não é uma só leitura de base de dados. É um grafo dirigido: intenção, encaminhamento, compressão do contexto, ferramentas, autocorreção, um resumo. O estrangulamento passa da E/S para a latência e para o preço das chamadas a modelos grandes. De 10 a 20 chamadas de fundo numa cadeia de colaboração é o habitual. Pendura um modelo de topo nos 6 passos e a cauda passa facilmente dos 10 segundos.

[user request]
   │
   ▼
1. Intent and route
   │
   ▼
2. Slots and checks
   │
   ▼
3. Retrieval and rerank
   │
   ▼
4. Tool choice (loop)
   │
   ▼
5. The content that must be written
   │
   ▼
6. Review and format
   │
   ▼
[response]

O atraso acumula-se

O primeiro token de um modelo de chat está muitas vezes já nuns centos de milissegundos, e a geração acrescenta mais. 6 passos em série esperam cada primeiro token e cada geração. Uma probabilidade pequena de cauda em cada passo basta para puxar o P99 de toda a cadeia para lá dos 10 segundos. O SLA parte-se primeiro aí.

Nós de controlo não se cobram como chat

Desses 6 passos, os que têm de raciocinar em aberto e acabar uma frase são muitas vezes só 2 ou 3 décimas. O resto é classificação, verificações e mudanças de estado. Pagar o preço de saída de um modelo de topo por um juízo de sim ou não trata o fluxo de controlo como redação.

Separar o controlo do raciocínio

O lubrificante não substitui o raciocínio profundo. Substitui o controlo de alta frequência.

  1. O plano de controlo usa o Jev. Encaminhamento, verificações, classificação, juízo leve. O que precisa é de uma saída fechada e de concorrência que se possa espalhar.
  2. O plano de raciocínio usa um modelo que sabe falar. Texto longo, planos de vários passos, o troço que tem de ser explicado a uma pessoa. O gasto e a lentidão podem ficar aí, porque esse passo ia gerar de qualquer modo.
user request
   │
   ▼
[Jev] intent and route
   │
   ├──────────────┐
   ▼              ▼
[Jev] slot check [Jev] intercept
   │              │
   └──────┬───────┘
          ▼
[flagship] only this step generates
          │
          ▼
[Jev] review: out of bounds, or which rung
          │
          ▼
       response

Daqui seguem três consequências de engenharia:

  • Os nós de controlo já não crescem token a token. A latência deles fica na faixa publicada, cerca de 70 a 500 milissegundos de ponta a ponta, em vez de uma geração completa.
  • A concorrência já não fica presa atrás de «acaba primeiro o parágrafo».
  • O nó de revisão recebe uma distribuição, não uma cadeia de JSON que se pode partir. Uma fonte de tempestades de nova tentativa fica mais pequena.

Uma conta

Os preços abaixo são uma hipótese, para mostrar a forma. Não são a lista de preços deste sítio, nem são uma fatura. O modelo de chat de topo estima-se em $2.50 por milhão de token de entrada e $10 por milhão de token de saída. O Jev usa os números publicados: $0.042 por milhão de token de entrada, saída não faturada. O volume é 1 milhão de pedidos por dia.

A hipótese

5 passos por pedido:

  • Intenção: 300 à entrada, 50 à saída
  • Estado e recorte: 1000 à entrada, 100 à saída
  • Argumentos da ferramenta: 800 à entrada, 150 à saída
  • Geração nuclear: 1500 à entrada, 800 à saída
  • Revisão: 1000 à entrada, 200 à saída

Duas ligações

  • Plano A: os 5 passos são o modelo de topo.
  • Plano B: só a geração nuclear fica no modelo de topo. Os outros 4 passos passam para o Jev. Os passos de controlo não pagam token de saída.

Custo

O plano A move 4.6 mil milhões de token de entrada e 1.3 mil milhões de token de saída por dia. A entrada é $11,500, a saída é $13,000, juntos $24,500. 30 dias são cerca de $735,000.

O plano B envia 3.1 mil milhões de token de entrada pelos 4 passos do Jev. A $0.042 por milhão de token isso é cerca de $130, e o encargo de saída é 0. A geração nuclear continua a ser $3,750 de entrada mais $8,000 de saída, $11,750. Juntos são cerca de $11,880 por dia, e cerca de $356,000 ao longo de 30 dias.

A despesa mensal desce cerca de metade. O que desce é sobretudo os token de saída que os nós de controlo já não compram.

Atraso

Medida Plano A Plano B
Quatro nós de controlo Cerca de 450 ms de geração cada um, cerca de 1.8 s Dentro da faixa publicada de 70–500 ms, quatro chamadas cerca de 0.28–2 s
Custo de API por dia $24,500 Cerca de $11,880
Os nós de controlo geram token a token Sim Não

Na ponta rápida, o custo de controlo fica claramente abaixo de 4 gerações completas. Na ponta lenta, 4 chamadas a 500 ms podem aproximar-se de uma geração longa, por isso não descrevas o lubrificante como umas poucas dezenas de milissegundos garantidas. O que o corte compra é que a saída já não se cobra como chat, e que o juízo se pode separar da geração.

Três sítios para o pôr

Primeiro a rota

Antes de um pedido entrar no raciocínio nuclear, pede ao Jev uma classificação fechada. Se uma resposta pronta ou uma cache puder responder, o código devolve-a. Só o degrau que significa «isto tem de ser desenvolvido» acorda o modelo caro. O Jev não escreve essa resposta.

def handle_incoming_request(user_payload):
    route = jev_client.choice(
        state=user_payload.text,
        options=["FAST_ACK", "SIMPLE_QUERY", "DEEP_REASONING"],
    )
    if route.top == "FAST_ACK":
        return canned_ack(user_payload)
    if route.top == "DEEP_REASONING" and route.probability >= 0.8:
        return call_heavy_llm_pipeline(user_payload)
    return canned_ack(user_payload)

A extração tem de ser dura

Os argumentos de uma ferramenta não devem ser lidos de um parágrafo com comentários lá dentro. Deixa o Jev mapear o texto difuso para campos e enumerações que já estavam listados. A jusante chega uma distribuição e uma opção de topo, não uma análise de JSON que pode falhar.

Emagrecer o contexto

Dezenas de milhares de token de histórico, empurrados direitos ao modelo principal, são caros e fáceis de perder a meio. Uma pergunta fechada no meio larga as voltas irrelevantes e fica com o estado que importa. O modelo principal vê então uma entrada mais curta. A regra do que largar tem de ser uma pergunta, não «por favor, resume isto».

Série