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-4ogpt-4-turbogpt-3.5-turbo
Anthropic:
claude-3-5-sonnet-20241022claude-3-5-haiku-20241022
Google:
gemini-1.5-progemini-1.5-flash
Meta:
llama-3.1-405b-instructllama-3.1-70b-instruct
Others:
command-r-plus(Cohere)mistral-large-latest(Mistral)
Image Models
dall-e-3dall-e-2stable-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
- Code Examples - More examples in Python, JavaScript, cURL
- Authentication - API key management and security
- Overview - Complete API reference
Need help? Contact support or join office hours