Zum Hauptinhalt springen

TypeScript- & Python-SDK

Offizielle Open-Source-SDKs für Anirag. Idiomatisch, typed, mit guten Error-Messages.

Anirag pflegt zwei Open-Source-SDKs unter der MIT-Lizenz. Beide auf GitHub: mysoftwarelab/anirag (Monorepo).

TypeScript / JavaScript

npm install @anirag/sdk
# oder pnpm
pnpm add @anirag/sdk
# oder yarn
yarn add @anirag/sdk

Initialisierung

import { Anirag } from "@anirag/sdk";
 
const client = new Anirag({
  apiKey: process.env.ANIRAG_API_KEY,
  // Optional:
  baseURL: "https://api.anirag.io", // Default. Für Sovereign: eigene URL.
  region: "eu_fra",                  // eu_fra | eu_zur | eu_vie
  byok: { /* siehe /docs/getting-started/authentication */ },
  fetchOptions: { /* AbortSignal, custom headers */ },
});

Resources

  • client.workspaces.{create, list, get, update, delete}
  • client.collections.{create, list, get, update, delete}
  • client.docs.{upload, list, get, delete, upsert}
  • client.query(...) (mit stream: true als AsyncIterable)
  • client.embeddings.create(...)
  • client.traces.{get, list}
  • client.webhooks.{create, list, delete, sendTest}

Frontend-Pattern

Streaming

const stream = await client.query({
  collection_id: "col_abc123",
  question: "...",
  stream: true,
});
 
for await (const event of stream) {
  // event.type: "token" | "citation" | "done" | "error"
}

Error-Handling

import { AniragApiError, AniragRateLimitError } from "@anirag/sdk";
 
try {
  const result = await client.query({ /* ... */ });
} catch (err) {
  if (err instanceof AniragRateLimitError) {
    console.log("Retry after:", err.retryAfter);
  } else if (err instanceof AniragApiError) {
    console.log("Code:", err.code, "Trace-ID:", err.traceId);
  } else {
    throw err;
  }
}

Python

pip install anirag

Initialisierung

from anirag import Anirag
 
client = Anirag(api_key=os.environ["ANIRAG_API_KEY"])

Sync + Async

# Sync
result = client.query(
    collection_id="col_abc123",
    question="...",
    llm="claude-haiku-4-5",
)
 
# Async
import asyncio
from anirag import AsyncAnirag
 
async def main():
    async with AsyncAnirag(api_key=os.environ["ANIRAG_API_KEY"]) as client:
        result = await client.query(
            collection_id="col_abc123",
            question="...",
        )
        print(result.answer)
 
asyncio.run(main())

Streaming

for event in client.query(
    collection_id="col_abc123",
    question="...",
    stream=True,
):
    if event.type == "token":
        print(event.content, end="", flush=True)

Versions-Kompatibilität

  • @anirag/sdk Major-Version folgt der API-Major-Version. Aktuelle: v1.x.
  • Python anirag Major-Version folgt analog.
  • Breaking Changes werden 6 Monate vorher deprecated und in Changelog dokumentiert.

Open-Source-Beiträge

PRs willkommen unter github.com/mysoftwarelab/anirag. Issues mit good-first-issue-Label sind für Neueinsteiger gut geeignet.