JavaScript Examples

โš ๏ธ BETA: Our API is in beta. Share your feedback!

Complete JavaScript guide for GMTech's API using the OpenAI library.

Installation

npm install openai

Basic Setup (Node.js)

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://app.gmtech.com/api/v1',
  apiKey: process.env.GMTECH_API_KEY
});

Simple Chat

const response = await client.chat.completions.create({
  model: 'gpt-4-turbo',
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'What is JavaScript?' }
  ]
});

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

Try Different Models

// OpenAI
const response1 = await client.chat.completions.create({
  model: 'gpt-4-turbo',
  messages: [{ role: 'user', content: 'Hello!' }]
});

// Claude
const response2 = await client.chat.completions.create({
  model: 'claude-3-5-sonnet-20241022',
  messages: [{ role: 'user', content: 'Hello!' }]
});

// Gemini
const response3 = await client.chat.completions.create({
  model: 'gemini-1.5-pro',
  messages: [{ role: 'user', content: 'Hello!' }]
});

Streaming

const stream = await client.chat.completions.create({
  model: 'gpt-4-turbo',
  messages: [{ role: 'user', content: 'Tell me a story' }],
  stream: true
});

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

Error Handling

try {
  const response = await client.chat.completions.create({
    model: 'gpt-4-turbo',
    messages: [{ role: 'user', content: 'Hello' }]
  });
} catch (error) {
  if (error.status === 401) {
    console.error('Invalid API key');
  } else if (error.status === 429) {
    console.error('Rate limit exceeded');
  } else {
    console.error('API error:', error.message);
  }
}

Express Server Example

import express from 'express';
import OpenAI from 'openai';

const app = express();
app.use(express.json());

const client = new OpenAI({
  baseURL: 'https://app.gmtech.com/api/v1',
  apiKey: process.env.GMTECH_API_KEY
});

app.post('/chat', async (req, res) => {
  try {
    const response = await client.chat.completions.create({
      model: req.body.model || 'gpt-3.5-turbo',
      messages: req.body.messages
    });

    res.json({
      response: response.choices[0].message.content,
      tokens: response.usage.total_tokens
    });
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

app.listen(3000, () => console.log('Server running on port 3000'));

React Hook Example

import { useState } from 'react';
import OpenAI from 'openai';

function useAI() {
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(null);

  const client = new OpenAI({
    baseURL: 'https://app.gmtech.com/api/v1',
    apiKey: process.env.REACT_APP_GMTECH_API_KEY,
    dangerouslyAllowBrowser: true  // Only for demos!
  });

  const chat = async (message) => {
    setLoading(true);
    setError(null);

    try {
      const response = await client.chat.completions.create({
        model: 'gpt-3.5-turbo',
        messages: [{ role: 'user', content: message }]
      });

      return response.choices[0].message.content;
    } catch (err) {
      setError(err.message);
      return null;
    } finally {
      setLoading(false);
    }
  };

  return { chat, loading, error };
}

Image Generation

const response = await client.images.generate({
  model: 'dall-e-3',
  prompt: 'A futuristic city',
  size: '1024x1024'
});

console.log(response.data[0].url);

TypeScript

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://app.gmtech.com/api/v1',
  apiKey: process.env.GMTECH_API_KEY!
});

interface ChatResponse {
  content: string;
  tokens: number;
}

async function chat(message: string): Promise<ChatResponse> {
  const response = await client.chat.completions.create({
    model: 'gpt-4-turbo',
    messages: [{ role: 'user', content: message }]
  });

  return {
    content: response.choices[0].message.content || '',
    tokens: response.usage?.total_tokens || 0
  };
}

Next Steps


Need help? Contact support

results matching ""

    No results matching ""