Tokia

Vercel AI SDK

O Vercel AI SDK e o framework mais popular para construir aplicacoes de IA com Next.js. Como o Tokia expoe a API no formato OpenAI-compatible, basta usar o provider @ai-sdk/openai apontando para o endpoint Tokia.

Instalacao

bash
npm install ai @ai-sdk/openai

Configuracao do provider

Crie uma instancia do provider OpenAI com baseURL e apiKey do Tokia:

typescript
import { createOpenAI } from "@ai-sdk/openai";

const tokia = createOpenAI({
  apiKey: process.env.TOKIA_API_KEY!,
  baseURL: "https://api.usetokia.com/v1",
});

Streaming (Route Handler)

O caso de uso mais comum: um endpoint de chat que retorna tokens via SSE.

typescript
import { createOpenAI } from "@ai-sdk/openai";
import { streamText } from "ai";

const tokia = createOpenAI({
  apiKey: process.env.TOKIA_API_KEY!,
  baseURL: "https://api.usetokia.com/v1",
});

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

  const result = streamText({
    model: tokia("gpt-4o-mini"),
    system: "Responda em portugues brasileiro, de forma concisa.",
    messages,
  });

  return result.toDataStreamResponse();
}

useChat (componente cliente)

No lado do cliente, o hook useChat conecta ao endpoint e gerencia estado automaticamente:

typescript
"use client";
import { useChat } from "ai/react";

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit, isLoading } =
    useChat({ api: "/api/chat" });

  return (
    <div>
      {messages.map((m) => (
        <div key={m.id} className={m.role === "user" ? "text-right" : ""}>
          <strong>{m.role === "user" ? "Voce" : "IA"}:</strong> {m.content}
        </div>
      ))}
      <form onSubmit={handleSubmit}>
        <input
          value={input}
          onChange={handleInputChange}
          placeholder="Digite sua mensagem..."
          disabled={isLoading}
        />
        <button type="submit" disabled={isLoading}>
          Enviar
        </button>
      </form>
    </div>
  );
}

generateText (sem streaming)

Para chamadas que nao precisam de streaming (background jobs, APIs internas):

typescript
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";

const tokia = createOpenAI({
  apiKey: process.env.TOKIA_API_KEY!,
  baseURL: "https://api.usetokia.com/v1",
});

const { text } = await generateText({
  model: tokia("gpt-4o-mini"),
  prompt: "Resuma a LGPD em 3 pontos.",
});

Structured Outputs (generateObject)

Extraia dados estruturados com validacao de schema via Zod:

typescript
import { createOpenAI } from "@ai-sdk/openai";
import { generateObject } from "ai";
import { z } from "zod";

const tokia = createOpenAI({
  apiKey: process.env.TOKIA_API_KEY!,
  baseURL: "https://api.usetokia.com/v1",
});

const { object } = await generateObject({
  model: tokia("gpt-4o-mini"),
  schema: z.object({
    nome: z.string(),
    email: z.string().email(),
    sentimento: z.enum(["positivo", "negativo", "neutro"]),
  }),
  prompt: "Extraia os dados: 'Oi, sou Maria, maria@email.com, adorei o produto!'",
});

Tool Calling

Defina ferramentas que o modelo pode chamar durante a geracao:

typescript
import { createOpenAI } from "@ai-sdk/openai";
import { streamText, tool } from "ai";
import { z } from "zod";

const tokia = createOpenAI({
  apiKey: process.env.TOKIA_API_KEY!,
  baseURL: "https://api.usetokia.com/v1",
});

const result = streamText({
  model: tokia("gpt-4o-mini"),
  messages,
  tools: {
    consultarSaldo: tool({
      description: "Consulta o saldo atual do usuario",
      parameters: z.object({
        userId: z.string().describe("ID do usuario"),
      }),
      execute: async ({ userId }) => {
        return { saldo: "R$ 150,00", userId };
      },
    }),
  },
});

Trocar de modelo

A mesma key do Tokia acessa todos os modelos. Troque o primeiro argumento de tokia():

  • tokia("gpt-4o-mini") — rapido e barato para o grosso das tarefas
  • tokia("claude-sonnet-46") — qualidade maxima para raciocinio
  • tokia("gemini-2.5-flash") — otimo para tarefas com contexto longo
  • tokia("deepseek-v3-0324") — custo-beneficio para codigo

Lista completa em Modelos.

Variaveis de ambiente

bash
TOKIA_API_KEY=sk-SUA_KEY_AQUI

Se preferir usar a variavel padrao do Vercel AI SDK (OPENAI_API_KEY), configure tambem OPENAI_API_BASE:

bash
OPENAI_API_KEY=sk-SUA_KEY_TOKIA
OPENAI_API_BASE=https://api.usetokia.com/v1

Proximos passos