Install
python -m pip install --upgrade openai
Configure the client
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["YELU_API_KEY"],
base_url="https://api.yelu.ai/v1",
timeout=60.0,
max_retries=2,
)
Chat Completions
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Be concise."},
{"role": "user", "content": "Explain vector search."},
],
max_completion_tokens=200,
)
print(completion.choices[0].message.content)
print(completion.usage)
Responses
response = client.responses.create(
model="gpt-4o-mini",
instructions="Answer for a software engineer.",
input="What is backpressure?",
max_output_tokens=200,
)
print(response.output_text)
Stream output
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Write a short release note."}],
stream=True,
)
for chunk in stream:
text = chunk.choices[0].delta.content or ""
print(text, end="", flush=True)
Handle errors
import openai
try:
client.models.list()
except openai.AuthenticationError as exc:
print("Check YELU_API_KEY", exc.status_code)
except openai.RateLimitError as exc:
print("Back off before retrying", exc.status_code)
except openai.APIConnectionError as exc:
print("Network or TLS failure", exc.__cause__)
except openai.APIStatusError as exc:
print("Yelu returned", exc.status_code, exc.response.text)
Keep the Yelu base URL explicit when the same application also calls OpenAI directly. This prevents an environment-variable change from routing requests to the wrong service.
Async client
import asyncio
import os
from openai import AsyncOpenAI
client = AsyncOpenAI(
api_key=os.environ["YELU_API_KEY"],
base_url="https://api.yelu.ai/v1",
)
async def main():
response = await client.responses.create(
model="gpt-4o-mini",
input="Give one practical API reliability tip.",
)
print(response.output_text)
asyncio.run(main())