OpenAI SDK Usage
BVE Gateway is fully compatible with the official OpenAI SDK. The only change is setting baseURL to https://api.bve.me/v1.
TypeScript / Node.js
Section titled “TypeScript / Node.js”Install the SDK:
npm install openaiChat completions
Section titled “Chat completions”import OpenAI from 'openai';
const client = new OpenAI({ apiKey: 'sk-bve-YOUR_KEY', baseURL: 'https://api.bve.me/v1',});
const response = await client.chat.completions.create({ model: 'gpt-4o', messages: [ { role: 'system', content: 'You are a helpful assistant.' }, { role: 'user', content: 'What is 2 + 2?' }, ],});
console.log(response.choices[0].message.content);Streaming
Section titled “Streaming”const stream = await client.chat.completions.stream({ model: 'gpt-4o', messages: [{ role: 'user', content: 'Count from 1 to 5.' }],});
for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? '');}Embeddings
Section titled “Embeddings”const response = await client.embeddings.create({ model: 'text-embedding-3-small', input: 'The quick brown fox',});
console.log(response.data[0].embedding);List models
Section titled “List models”const models = await client.models.list();for (const model of models.data) { console.log(model.id);}Error handling
Section titled “Error handling”try { const response = await client.chat.completions.create({ model: 'gpt-4o', messages: [{ role: 'user', content: 'Hello' }], });} catch (err) { if (err instanceof OpenAI.APIError) { console.error(err.status, err.message); // err.error?.code for the machine-readable code (e.g. 'rate_limit_exceeded') }}Python
Section titled “Python”Install the SDK:
pip install openaiChat completions
Section titled “Chat completions”from openai import OpenAI
client = OpenAI( api_key="sk-bve-YOUR_KEY", base_url="https://api.bve.me/v1",)
response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is 2 + 2?"}, ],)
print(response.choices[0].message.content)Streaming
Section titled “Streaming”with client.chat.completions.stream( model="gpt-4o", messages=[{"role": "user", "content": "Count from 1 to 5."}],) as stream: for chunk in stream: print(chunk.choices[0].delta.content or "", end="", flush=True)Embeddings
Section titled “Embeddings”response = client.embeddings.create( model="text-embedding-3-small", input="The quick brown fox",)
print(response.data[0].embedding[:5])List models
Section titled “List models”models = client.models.list()for model in models.data: print(model.id)Error handling
Section titled “Error handling”from openai import APIError
try: response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "Hello"}], )except APIError as e: print(e.status_code, e.message) # e.code for machine-readable code (e.g. 'rate_limit_exceeded')Environment variable pattern
Section titled “Environment variable pattern”Avoid hardcoding keys. Use environment variables:
// TypeScriptconst client = new OpenAI({ apiKey: process.env.BVE_API_KEY, baseURL: 'https://api.bve.me/v1',});# Pythonimport os
client = OpenAI( api_key=os.environ["BVE_API_KEY"], base_url="https://api.bve.me/v1",)See also
Section titled “See also”- Chat Completions — full request/response reference
- Streaming — SSE streaming details
- Errors — all error codes
- Security Notes — keep your keys safe