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/sdkInitialisierung
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(...)(mitstream: trueals 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 aniragInitialisierung
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/sdkMajor-Version folgt der API-Major-Version. Aktuelle: v1.x.- Python
aniragMajor-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.