Skip to main content

TypeScript SDK

Используйте официальный OpenAI TypeScript SDK с GonkaGate. Работает с Node.js, Deno и браузерами.

Установка

Установите официальный npm-пакет OpenAI:

terminal
npm install openai

Настройка

Настройте клиент для использования API GonkaGate:

config.ts
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.gonkagate.com/v1",
  apiKey: "gp-your-api-key", // Get from dashboard
});

Базовое использование

Выполните первый запрос к чату:

basic-usage.ts
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.gonkagate.com/v1",
  apiKey: "gp-your-api-key",
});

const response = await client.chat.completions.create({
  model: "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hello, how are you?" },
  ],
  temperature: 0.7,
  max_tokens: 1000,
});

console.log(response.choices[0].message.content);

Потоковая передача

Потоковые ответы для вывода в реальном времени:

streaming.ts
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.gonkagate.com/v1",
  apiKey: "gp-your-api-key",
});

const stream = await client.chat.completions.create({
  model: "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
  messages: [{ role: "user", content: "Write a poem about AI" }],
  stream: true,
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content || "";
  process.stdout.write(content);

  // Final chunk contains usage
  if (chunk.usage) {
    console.log(`\n\nCost: $${(chunk.usage as any).total_cost_usd}`);
  }
}

Типы TypeScript

Расширьте типы для специфичных полей GonkaGate:

types.ts
// Extended usage type with GonkaGate cost fields
interface GonkaGateUsage {
  prompt_tokens: number;
  completion_tokens: number;
  total_tokens: number;
  base_cost_usd: number;
  platform_fee_usd: number;
  total_cost_usd: number;
}

// Type assertion for usage
const response = await client.chat.completions.create({
  model: "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
  messages: [{ role: "user", content: "Hello!" }],
});

const usage = response.usage as GonkaGateUsage;
console.log(`Cost: $${usage.total_cost_usd.toFixed(6)}`);

Интеграция с React

Создайте чат-интерфейс с React-хуками:

use-chat.ts
"use client";

import { useState } from "react";

interface Message {
  role: "user" | "assistant";
  content: string;
}

export function useChat() {
  const [messages, setMessages] = useState<Message[]>([]);
  const [isLoading, setIsLoading] = useState(false);

  const sendMessage = async (content: string) => {
    const userMessage: Message = { role: "user", content };
    setMessages((prev) => [...prev, userMessage]);
    setIsLoading(true);

    try {
      const response = await fetch("/api/chat", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
          messages: [...messages, userMessage],
        }),
      });

      const data = await response.json();
      const assistantMessage: Message = {
        role: "assistant",
        content: data.content,
      };
      setMessages((prev) => [...prev, assistantMessage]);
    } finally {
      setIsLoading(false);
    }
  };

  return { messages, sendMessage, isLoading };
}

Интеграция с Next.js

Создайте API-роут в Next.js:

app/api/chat/route.ts
// app/api/chat/route.ts
import OpenAI from "openai";
import { NextResponse } from "next/server";

const client = new OpenAI({
  baseURL: "https://api.gonkagate.com/v1",
  apiKey: process.env.GONKAGATE_API_KEY,
});

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

  const response = await client.chat.completions.create({
    model: "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
    messages,
  });

  return NextResponse.json({
    content: response.choices[0].message.content,
    usage: response.usage,
  });
}
Была ли эта страница полезной?