OpenAI Official SDK
from openai import OpenAI
client = OpenAI(
api_key="sk-xxx",
base_url="https://crazyrouter.com/v1"
)
# Synchronous call
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Hello"}],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)
Async Call
from openai import AsyncOpenAI
import asyncio
client = AsyncOpenAI(
api_key="sk-xxx",
base_url="https://crazyrouter.com/v1"
)
async def main():
response = await client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
asyncio.run(main())
LangChain Integration
pip install langchain-openai
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4",
api_key="sk-xxx",
base_url="https://crazyrouter.com/v1",
temperature=0.7
)
# Simple call
response = llm.invoke("Write a quicksort in Python")
print(response.content)
LangChain Chain
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI(
model="gpt-5.4",
api_key="sk-xxx",
base_url="https://crazyrouter.com/v1"
)
prompt = ChatPromptTemplate.from_messages([
("system", "You are a {role}."),
("user", "{input}")
])
chain = prompt | llm
response = chain.invoke({"role": "Python expert", "input": "Explain decorators"})
print(response.content)
LangChain Embeddings
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
model="text-embedding-3-large",
api_key="sk-xxx",
base_url="https://crazyrouter.com/v1"
)
vectors = embeddings.embed_documents(["Text one", "Text two"])
print(f"Vector dimensions: {len(vectors[0])}")
LlamaIndex Integration
pip install llama-index-llms-openai llama-index-embeddings-openai
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
# LLM configuration
llm = OpenAI(
model="gpt-5.4",
api_key="sk-xxx",
api_base="https://crazyrouter.com/v1"
)
response = llm.complete("What is RAG?")
print(response.text)
# Embedding configuration
embed_model = OpenAIEmbedding(
model="text-embedding-3-large",
api_key="sk-xxx",
api_base="https://crazyrouter.com/v1"
)
vector = embed_model.get_text_embedding("Test text")
print(f"Dimensions: {len(vector)}")
The chat examples above default to gpt-5.4, which was verified successfully in Crazyrouter production on March 23, 2026. If you replace the model, prefer other verified options such as claude-sonnet-4-6; the embedding examples should continue using text-embedding-3-large.