Docs
TypeScript / JavaScript

TypeScript / JavaScript

Use o Ignus Code com o SDK oficial da OpenAI para TypeScript e JavaScript.

Instalação

npm install openai
# ou
pnpm add openai
# ou
yarn add openai

Configuração

lib/ignus.ts
import OpenAI from "openai";
 
export const ignus = new OpenAI({
  baseURL: "https://proxy.ignustec.com.br/v1",
  apiKey: process.env.IGNUS_API_KEY,
});

Em aplicações Next.js ou Node.js, nunca exponha IGNUS_API_KEY no client-side. Use apenas em rotas de API (app/api/...) ou funções server-side.

Chat Completion

chat.ts
import { ignus } from "./lib/ignus";
 
const response = await ignus.chat.completions.create({
  model: "gpt-4o",
  messages: [
    { role: "system", content: "Você é um assistente técnico." },
    { role: "user",   content: "Explique closures em JavaScript." },
  ],
  temperature: 0.7,
});
 
console.log(response.choices[0].message.content);

Streaming

stream.ts
const stream = await ignus.chat.completions.create({
  model: "claude-sonnet-4",
  messages: [{ role: "user", content: "Gere uma API REST em Express.js" }],
  stream: true,
});
 
for await (const chunk of stream) {
  const delta = chunk.choices[0]?.delta?.content;
  if (delta) process.stdout.write(delta);
}

Uso com Next.js App Router

app/api/chat/route.ts
import { ignus } from "@/lib/ignus";
import { NextResponse } from "next/server";
 
export async function POST(req: Request) {
  const { messages } = await req.json();
 
  const response = await ignus.chat.completions.create({
    model: "gpt-4o-mini",
    messages,
  });
 
  return NextResponse.json({
    content: response.choices[0].message.content,
    usage: response.usage,
  });
}

Uso com Vercel AI SDK

npm install ai
app/api/chat/route.ts
import { ignus } from "@/lib/ignus";
import { OpenAIStream, StreamingTextResponse } from "ai";
 
export async function POST(req: Request) {
  const { messages } = await req.json();
 
  const response = await ignus.chat.completions.create({
    model: "gpt-4o",
    messages,
    stream: true,
  });
 
  const stream = OpenAIStream(response);
  return new StreamingTextResponse(stream);
}

Tipagem

O SDK da OpenAI inclui tipos completos. Use-os para autocompletar e type safety:

import type {
  ChatCompletion,
  ChatCompletionMessageParam,
  ChatCompletionCreateParamsNonStreaming,
} from "openai/resources";
 
const messages: ChatCompletionMessageParam[] = [
  { role: "system", content: "Você é um assistente." },
  { role: "user",   content: "Olá!" },
];
 
const params: ChatCompletionCreateParamsNonStreaming = {
  model: "gpt-4o",
  messages,
  temperature: 0.8,
};
 
const response: ChatCompletion = await ignus.chat.completions.create(params);