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
- Python Examples - Python integration
- cURL Examples - Command-line testing
- API Overview - Complete API docs
Need help? Contact support