Seções da Base de Conhecimento ▾

Navegação

▸ Comece aqui Por funções

Categorias

Ferramentas 54
Glossário 12

Ferramentas

Vercel AI SDK + Gonka AI — Aplicações de IA em TypeScript por centavos

O Vercel AI SDK é o SDK mais popular para criar aplicações de IA em TypeScript e JavaScript. API unificada generateText e streamText, streaming para UI, tool calling nativo, helpers prontos para Next.js App Router — tudo o que é necessário para chatbots, agentes e pipelines de RAG na web.

O problema é o mesmo de qualquer aplicação de LLM — o preço do provedor. A interface de chat com streaming envia o histórico do diálogo a cada mensagem, o agente move contexto através de dezenas de passos. Com os preços da Anthropic ($3-15/1M) e OpenAI ($2.5-10/1M), até mesmo um projeto pessoal modesto em produção vira uma conta de centenas de dólares por mês.

JoinGonka Gateway — um endpoint compatível com OpenAI sobre a rede descentralizada Gonka. O Vercel AI SDK conecta-se a ele como a qualquer provedor compatível com OpenAI — sem forks, sem adaptadores próprios. Os mesmos modelos abertos que nos hosters comerciais — MiniMax M2.7, DeepSeek V4 Flash e GLM-5.3 Flash —, o mesmo streamText, mas a $0.0062/1M de tokens na entrada — dezenas de vezes mais barato.

Passo 1: Obtenha a chave e conecte o provedor

Chave de API da JoinGonka: cadastre-se em gate.joingonka.ai/register — logo de início, damos 3M tokens grátis. No Dashboard, crie uma chave com o prefixo jg-.

Instalação dos pacotes. Para um endpoint personalizado compatível com OpenAI, o Vercel AI SDK recomenda o provedor @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

Conexão mínima — criamos uma instância do provedor com createOpenAICompatible e chamamos generateText:

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY, // jg-your-key
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Explain what a decentralized inference network is',
});

console.log(text);

O parâmetro apiKey adiciona automaticamente o cabeçalho Authorization: Bearer jg-your-key — nenhuma configuração extra é necessária. Guarde a chave na variável de ambiente GONKA_API_KEY (por exemplo, em .env.local), e não no código.

Alternativa — o pacote @ai-sdk/openai com a fábrica createOpenAI({ baseURL, apiKey }). Os dois jeitos funcionam; para endpoints que não pertencem à OpenAI, a documentação do AI SDK recomenda justamente o @ai-sdk/openai-compatible — ele não carrega suposições específicas da OpenAI desnecessárias.

Passo 2: Streaming e manipulador de rota Next.js

O grande destaque do Vercel AI SDK é a entrega da resposta em streaming. A função streamText começa a transmitir tokens na hora, e o helper toUIMessageStreamResponse() entrega o stream pronto direto do route handler no Next.js App Router.

Handler do servidor app/api/chat/route.ts:

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText, convertToModelMessages, type UIMessage } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

// allow streaming for up to 30 seconds
export const maxDuration = 30;

export async function POST(req: Request) {
  const { messages }: { messages: UIMessage[] } = await req.json();

  const result = streamText({
    model: gonka('MiniMaxAI/MiniMax-M2.7'),
    system: 'You are a helpful assistant. Answer briefly and to the point.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // Gateway output cap
  });

  return result.toUIMessageStreamResponse();
}

No cliente, conecte o hook useChat do @ai-sdk/react — ele mesmo conversa com /api/chat e renderiza o stream de mensagens. O backend, por sua vez, fala com a Gonka, não com a OpenAI.

Script sem UI (Node, iterador async sobre o stream):

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

const result = streamText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Write a haiku about distributed computing',
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}

Parâmetros dos modelos. Pelo Gateway, estão disponíveis três modelos: contexto de 180K tokens no MiniMax M2.7, 380K no DeepSeek V4 Flash e 390K no GLM-5.3 Flash; o teto de resposta (maxOutputTokens) é de 8192 no MiniMax M2.7 e no GLM-5.3 Flash, e de 32768 no DeepSeek V4 Flash:

  • MiniMaxAI/MiniMax-M2.7 — padrão (MiniMax M2.7);
  • deepseek-ai/DeepSeek-V4-Flash-0731 (DeepSeek V4 Flash, contexto 380K);
  • zai-org/GLM-5.3-Flash (GLM-5.3 Flash, modelo de raciocínio — pensa antes de responder).

Se maxOutputTokens não for definido, para uma requisição non-stream o Gateway retorna por padrão até 1500 tokens — para chats em streaming, é melhor informar o valor explicitamente.

Comparação de custos

O Vercel AI SDK geralmente fica atrás de uma interface interativa — chat, agente, assistente no aplicativo. Cada mensagem arrasta o histórico do diálogo, cada passo do agente — o contexto das ferramentas. Portanto, o custo real não é calculado por uma única solicitação, mas pela carga de produção. Vamos comparar cenários típicos:

CenárioTokensAnthropic / OpenAIJoinGonka Gonka
Uma mensagem no chat~3K$0.01 — $0.05$0.000028
Diálogo de 20 réplicas~150K$0.50 — $2.25$0.0014
Resposta RAG (busca + geração)~5K$0.015 — $0.05$0.000048
Passo do agente com tool calling~10K$0.03 — $0.10$0.000096
10 000 solicitações por dia (prod)~50M$150 — $500$0.48

O preço da JoinGonka é de aproximadamente $0.0062 por 1M de tokens de entrada, a saída é aproximadamente três vezes mais cara. Para um aplicativo com milhares de solicitações por dia, essa é a diferença entre uma conta de centenas de dólares e uma de centavos. Os 3M de tokens gratuitos são suficientes para rodar as primeiras solicitações do projeto.

Tool calling e agentes

O Vercel AI SDK descreve ferramentas de forma declarativa por meio do objeto tools e do schema zod. Os modelos da rede suportam function calling nativo, então o AI SDK recebe tool_calls estruturados sem precisar fazer parsing das respostas em texto. O parâmetro stopWhen: stepCountIs(n) permite vários passos seguidos — o modelo chama uma ferramenta, recebe o resultado e continua.

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText, tool, stepCountIs } from 'ai';
import { z } from 'zod';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  stopWhen: stepCountIs(5),
  tools: {
    weather: tool({
      description: 'Get the weather in a city',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'What is the weather in Moscow? Answer in one sentence.',
});

console.log(text);

O modelo chama a ferramenta weather, recebe o resultado e monta a resposta final. Todo o ciclo custa cerca de $0.000048 via Gonka, contra $0.03-0.10 da Anthropic ou da OpenAI. Em aplicações agênticas, em que cada solicitação do usuário se desdobra em 5-10 passos, a economia em produção chega a milhares de dólares por mês.

Se você está construindo uma aplicação de IA em Python, confira o guia de LangChain — lá está a mesma abordagem usando a classe compatível com OpenAI.

Vercel AI SDK + Gonka = aplicações de IA em TypeScript prontas para produção por um preço mínimo. O createOpenAICompatible conecta o Gateway sem forks, generateText e streamText funcionam normalmente, tool calling nativo e route handlers do Next.js — tudo por $0.0062/1M de tokens em vez de $2.5-15 da OpenAI e Anthropic.

Quer saber mais?

Explore outras seções ou comece a ganhar GNK agora mesmo.

Obter tokens gratuitos →