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/v1',
  apiKey: process.env.GMTECH_API_KEY
});

Simple Chat

const response = await client.chat.completions.create({
  model: 'gpt-4o',
  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-4o',
  messages: [{ role: 'user', content: 'Hello!' }]
});

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

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

Error Handling

try {
  const response = await client.chat.completions.create({
    model: 'gpt-4o',
    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/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-4o-mini',
      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/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-4o-mini',
        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: 'gpt-image-2',
  prompt: 'A futuristic city',
  size: '1024x1024'
});

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

Sentiment Analysis

const response = await fetch('https://app.gmtech.com/v1/sentiment', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.GMTECH_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ text: 'I love this product!' })
});

const { sentiment } = await response.json();
console.log(`Positive: ${sentiment.Positive} | Joyful: ${sentiment.Joyful}`);

TypeScript

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://app.gmtech.com/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-4o',
    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 ""