SDK
Clients Python et TypeScript de l'API; le reste s'appelle en HTTP, avec la même clé.
Python#
Module sextant.sdk du paquet sextant (Python 3.12+), depuis la distribution reçue:
uv add <chemin-vers-sextant> # ou: pip install <chemin-vers-sextant>import os
from sextant.sdk import Sextant
client = Sextant(base_url="https://api.example.com", api_key=os.environ["SEXTANT_API_KEY"])TypeScript#
@sextant/sdk: sans dépendance, Node 18+ et navigateurs (fetch et flux). À construire depuis sdks/typescript
dans la distribution:
cd <chemin-vers-sextant>/sdks/typescript && npm install && npm run build
cd <votre-projet> && npm install <chemin-vers-sextant>/sdks/typescriptimport { Sextant } from "@sextant/sdk";
const client = new Sextant({ baseUrl: "https://api.example.com", apiKey: process.env.SEXTANT_API_KEY });Options: baseUrl (défaut http://localhost:8000), apiKey, fetch. Dans un navigateur, n'exposez jamais la
clé: appelez Sextant depuis votre serveur. Exports: les types (AskParams, AskResult, Evidence, Locator,
Region, SourceInfo, ThreadSummary, ThreadDetail, StreamEvent, Budget...) et parseSSE(body) pour lire
un flux SSE vous-même.
Méthodes#
Python: (async) = AsyncSextant seulement. sources: une chaîne, une liste de sources et de dossiers
(identifiants, URL, chemins, noms de dossiers), ou None (toute la bibliothèque; pour une relance, les sources du
thread). Les clients envoient l'heure de la machine (x-timezone). Résultats: le JSON de l'API.
r = client.ask("https://example.com/rapport-annuel.pdf", "Quel est le plafond de rémunération du PDG ?", budget="deep")
for ev in client.ask_stream(None, "Développe le deuxième point", thread_id=r["thread_id"]):
if ev["event"] == "answer_delta":
print(ev["data"]["text"], end="", flush=True)const r = await client.ask({ sources: ["fld_…"], question: "Quels contrats se renouvellent tacitement ?", budget: "deep" });
for await (const ev of client.askStream({ question: "Et leurs préavis ?", thread_id: r.thread_id ?? undefined })) {
if (ev.event === "answer_delta") process.stdout.write(ev.data.text);
}Erreurs#
Une erreur HTTP lève SextantError (sextant.sdk ou @sextant/sdk), avec status et payload (le corps JSON de
l'erreur).