OpenAI-Compatible API

โš ๏ธ BETA: GMTech's API is currently in beta testing. We welcome your feedback!

GMTech provides a fully OpenAI-compatible API as a drop-in replacement for OpenAI's API, with access to 15+ AI providers.

Why GMTech?

  • Single API, Multiple Providers - Access OpenAI, Anthropic, Google, Meta, and more
  • No Vendor Lock-in - Switch models without changing code
  • Transparent Pricing - Real-time cost tracking with no markup
  • OpenAI Compatible - Use existing OpenAI SDK code unchanged

Quick Start

1. Install OpenAI SDK

pip install openai

2. Replace Base URL

from openai import OpenAI

# Instead of OpenAI...
# client = OpenAI(api_key="sk-...")

# Use GMTech
client = OpenAI(
    base_url="https://app.gmtech.com/api/v1",
    api_key="gmtech_your_api_key"
)

# Everything else works the same!

Chat Completions

Basic Chat

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

print(response.choices[0].message.content)

Use Any Model

# OpenAI
response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[{"role": "user", "content": "Hello!"}]
)

# Anthropic Claude
response = client.chat.completions.create(
    model="claude-3-5-sonnet-20241022",
    messages=[{"role": "user", "content": "Hello!"}]
)

# Google Gemini
response = client.chat.completions.create(
    model="gemini-1.5-pro",
    messages=[{"role": "user", "content": "Hello!"}]
)

Streaming Responses

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

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Image Generation

response = client.images.generate(
    model="dall-e-3",
    prompt="A futuristic city with flying cars",
    size="1024x1024"
)

print(response.data[0].url)

Available Models

Language Models

OpenAI:

  • gpt-4o
  • gpt-4-turbo
  • gpt-3.5-turbo

Anthropic:

  • claude-3-5-sonnet-20241022
  • claude-3-5-haiku-20241022

Google:

  • gemini-1.5-pro
  • gemini-1.5-flash

Meta:

  • llama-3.1-405b-instruct
  • llama-3.1-70b-instruct

Others:

  • command-r-plus (Cohere)
  • mistral-large-latest (Mistral)

View all models โ†’

Image Models

  • dall-e-3
  • dall-e-2
  • stable-diffusion-xl

JavaScript/TypeScript

import OpenAI from 'openai';

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

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

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

cURL

curl https://app.gmtech.com/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer gmtech_your_api_key" \
  -d '{
    "model": "gpt-4-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Supported Features

Feature Status Notes
Chat Completions โœ… Full support
Streaming โœ… Real-time responses
Function Calling โœ… With capable models
Vision โœ… GPT-4V, Claude-3, Gemini
Image Generation โœ… Multiple providers
Embeddings โœ… Multiple providers

Error Handling

from openai import APIError, AuthenticationError, RateLimitError

try:
    response = client.chat.completions.create(
        model="gpt-4-turbo",
        messages=[{"role": "user", "content": "Hello!"}]
    )
except AuthenticationError:
    print("Invalid API key")
except RateLimitError:
    print("Rate limit exceeded")
except APIError as e:
    print(f"API error: {e}")

Migration from OpenAI

Before (OpenAI)

from openai import OpenAI

client = OpenAI(api_key="sk-...")
response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[{"role": "user", "content": "Hello"}]
)

After (GMTech)

from openai import OpenAI

client = OpenAI(
    base_url="https://app.gmtech.com/api/v1",  # Only change
    api_key="gmtech_..."                        # Only change
)
response = client.chat.completions.create(
    model="gpt-4-turbo",  # Can also use claude, gemini, etc.
    messages=[{"role": "user", "content": "Hello"}]
)

Next Steps


Need help? Contact support or join office hours

results matching ""

    No results matching ""