Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions examples/openai/img_generations_example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import base64
from openai import OpenAI
from javelin_sdk import JavelinClient, JavelinConfig
import os
import dotenv

dotenv.load_dotenv()

# Load API keys from environment variables
JAVELIN_API_KEY = os.getenv("JAVELIN_API_KEY")
LLM_API_KEY = os.getenv("LLM_API_KEY")
BASE_URL = os.getenv("BASE_URL")

# Configure Javelin
config = JavelinConfig(
base_url=BASE_URL,
javelin_api_key=JAVELIN_API_KEY,
llm_api_key=LLM_API_KEY,
)
javelin_client = JavelinClient(config)

client = OpenAI(api_key=LLM_API_KEY)
route_name = "openai_univ" # define your universal route name here
javelin_client.register_openai(client, route_name=route_name)

# --- Example 1: Edit an image ---
# result = client.images.edit(
# model="gpt-image-1",
# image=open("examples/dog.png", "rb"),
# prompt="an angry dog"
# )
# image_base64 = result.data[0].b64_json
# image_bytes = base64.b64decode(image_base64)
# with open("angry_dog_2.png", "wb") as f:
# f.write(image_bytes)

# --- Example 2: Create image variations ---
# response = client.images.create_variation(
# image=open("examples/dog.png", "rb"),
# n=2,
# size="1024x1024"
# )
# for idx, img_data in enumerate(response.data):
# image_bytes = base64.b64decode(img_data.b64_json)
# with open(f"dog_variation_{idx+1}.png", "wb") as f:
# f.write(image_bytes)

# --- Example 3: Generate an image ---
img = client.images.generate(
model="gpt-image-1",
prompt="A friendly dog playing in a park.",
n=1,
size="1024x1024"
)

image_bytes = base64.b64decode(img.data[0].b64_json)
with open("generated_image.png", "wb") as f:
f.write(image_bytes)
6 changes: 6 additions & 0 deletions javelin_sdk/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ class JavelinClient:
"chat.completions.create": "chat",
"completions.create": "text_completion",
"embeddings.create": "embeddings",
"images.generate": "image_generation",
"images.edit": "image_editing",
"images.create_variation": "image_variation",
}

def __init__(self, config: JavelinConfig) -> None:
Expand Down Expand Up @@ -205,6 +208,9 @@ def register_provider(
"chat_completions_create": openai_client.chat.completions.create,
"completions_create": openai_client.completions.create,
"embeddings_create": openai_client.embeddings.create,
"images_generate": openai_client.images.generate,
"images_edit": openai_client.images.edit,
"images_create_variation": openai_client.images.create_variation,
}

# Patch methods with tracing and header updates
Expand Down
Loading