Skip to content

Advanced Examples

Advanced usage patterns for production applications.

Multi-Turn Conversation

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.indoxhub.com/api/v1"
messages = [{"role": "system", "content": "You are a coding tutor."}]

def chat(user_message):
    messages.append({"role": "user", "content": user_message})

    response = requests.post(
        f"{BASE_URL}/chat/completions",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "model": "anthropic/claude-haiku-4.5",
            "messages": messages,
            "temperature": 0.7
        }
    )
    reply = response.json()["data"]
    messages.append({"role": "assistant", "content": reply})
    return reply

print(chat("What is a Python decorator?"))
print(chat("Show me an example with arguments"))
print(chat("How does functools.wraps help?"))

Provider Comparison

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.indoxhub.com/api/v1"

models = [
    "openai/gpt-4o-mini",
    "anthropic/claude-haiku-4.5",
    "deepseek/deepseek-chat",
]

prompt = [{"role": "user", "content": "Explain REST APIs in one paragraph."}]

for model in models:
    response = requests.post(
        f"{BASE_URL}/chat/completions",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"model": model, "messages": prompt, "max_tokens": 200}
    )
    result = response.json()
    print(f"\n--- {model} ---")
    print(f"Cost: ${result['usage']['cost']:.4f}")
    print(f"Latency: {result['duration_ms']:.0f}ms")
    print(f"Response: {result['data'][:100]}...")

Streaming with Error Handling

import requests
import json

def stream_chat(messages, model="openai/gpt-4o-mini"):
    try:
        response = requests.post(
            "https://api.indoxhub.com/api/v1/chat/completions",
            headers={"Authorization": "Bearer YOUR_API_KEY"},
            json={"model": model, "messages": messages, "stream": True},
            stream=True,
            timeout=60
        )
        response.raise_for_status()

        full_response = ""
        for line in response.iter_lines():
            if not line:
                continue
            text = line.decode("utf-8")
            if text == "data: [DONE]":
                break
            if text.startswith("data: "):
                chunk = text[6:]
                full_response += chunk
                print(chunk, end="", flush=True)

        print()
        return full_response

    except requests.exceptions.Timeout:
        print("Request timed out")
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")

stream_chat([{"role": "user", "content": "Write a haiku about APIs"}])
import requests
import numpy as np

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.indoxhub.com/api/v1"

documents = [
    "Python is a programming language",
    "JavaScript runs in the browser",
    "SQL is used for databases",
    "Docker containerizes applications",
    "Kubernetes orchestrates containers"
]

# Embed all documents at once
response = requests.post(
    f"{BASE_URL}/embeddings",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "openai/text-embedding-3-small",
        "text": documents
    }
)
doc_embeddings = response.json()["data"]

# Embed query
query_resp = requests.post(
    f"{BASE_URL}/embeddings",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "openai/text-embedding-3-small",
        "text": "container orchestration"
    }
)
query_embedding = query_resp.json()["data"][0]

# Find most similar
def cosine_similarity(a, b):
    a, b = np.array(a), np.array(b)
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

scores = [cosine_similarity(query_embedding, emb) for emb in doc_embeddings]
best_idx = np.argmax(scores)
print(f"Best match: {documents[best_idx]} (score: {scores[best_idx]:.4f})")

BYOK with Fallback

import requests

def chat_with_fallback(messages, byok_key=None):
    payload = {
        "model": "openai/gpt-4o-mini",
        "messages": messages
    }

    if byok_key:
        payload["byok_api_key"] = byok_key

    response = requests.post(
        "https://api.indoxhub.com/api/v1/chat/completions",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
        json=payload
    )

    result = response.json()
    if result["success"]:
        return result["data"]

    # Fallback: retry without BYOK
    if byok_key:
        del payload["byok_api_key"]
        response = requests.post(
            "https://api.indoxhub.com/api/v1/chat/completions",
            headers={"Authorization": "Bearer YOUR_API_KEY"},
            json=payload
        )
        return response.json()["data"]

    return None
Documentation last built on May 23, 2026