Skip to main content

Installation

pip install openai

Basic Setup

from openai import OpenAI

client = OpenAI(
    api_key="sk-samurai-YOUR_KEY",  # or os.environ.get("SAMURAI_API_KEY")
    base_url="https://api.samuraiapi.in/v1"
)

Environment Variables

export SAMURAI_API_KEY=sk-samurai-YOUR_KEY
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("SAMURAI_API_KEY"),
    base_url="https://api.samuraiapi.in/v1"
)

Async Client

import asyncio
from openai import AsyncOpenAI

async_client = AsyncOpenAI(
    api_key=os.environ.get("SAMURAI_API_KEY"),
    base_url="https://api.samuraiapi.in/v1"
)

async def main():
    response = await async_client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Hello async world!"}]
    )
    print(response.choices[0].message.content)

asyncio.run(main())

Streaming

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Write a haiku about samurai."}],
    stream=True
)

for chunk in stream:
    content = chunk.choices[0].delta.content or ""
    print(content, end="", flush=True)
print()  # Newline at end

LangChain Integration

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4o",
    openai_api_key="sk-samurai-YOUR_KEY",
    openai_api_base="https://api.samuraiapi.in/v1"
)

response = llm.invoke("What is the meaning of bushido?")
print(response.content)

LlamaIndex Integration

from llama_index.llms.openai import OpenAI as LlamaOpenAI
from llama_index.core import Settings

Settings.llm = LlamaOpenAI(
    model="gpt-4o",
    api_key="sk-samurai-YOUR_KEY",
    api_base="https://api.samuraiapi.in/v1"
)

Image Generation

from pathlib import Path
import requests

response = client.images.generate(
    model="dall-e-3",
    prompt="A lone samurai in the rain, ink painting style",
    size="1024x1024",
    quality="hd"
)

# Download and save
image_url = response.data[0].url
image_data = requests.get(image_url).content
Path("samurai.png").write_bytes(image_data)
import numpy as np
from openai import OpenAI

client = OpenAI(
    api_key="sk-samurai-YOUR_KEY",
    base_url="https://api.samuraiapi.in/v1"
)

def get_embedding(text: str) -> list[float]:
    return client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    ).data[0].embedding

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# Build index
docs = ["Python is a programming language", "Samurai were warriors", "AI is the future"]
doc_embeddings = [get_embedding(d) for d in docs]

# Search
query_embedding = get_embedding("Tell me about coding")
scores = [cosine_similarity(query_embedding, e) for e in doc_embeddings]
print(f"Best match: {docs[np.argmax(scores)]}")