Aller au contenu

Concepts

Sources, dossiers, questions, réponse adaptative, modes et budgets, preuves, threads et runs.

Sources#

Un fichier envoyé, une URL, une spécification de connecteur (arxiv:1706.03762) ou du texte (text:...) (Formats).

  • Identifiant src_…; un plan de régions (pages, sections, chapitres, fenêtres de temps, enregistrements).
  • Une source inconnue nommée dans une question est inspectée à la volée et gardée dans la bibliothèque. Ajout explicite: POST /v1/sources.
  • Parmi beaucoup de sources, Sextant classe leurs courtes descriptions (titre, plan, premières lignes) et n'ouvre que les meilleures, au plus max_sources.
  • Dans une bibliothèque de séries (plusieurs rapports par société, un par an), les noms de fichiers, ou à défaut les premières pages, disent l'auteur et la période de chaque document: une question qui nomme une société et une année ouvre d'abord ces documents.

Sources dynamiques#

Recherches (hn-search:...), flux (feed:...), issues GitHub, DNS, directs.

  • Un identifiant par spécification, quel que soit le contenu.
  • Rafraîchie quand une requête l'ouvre et que sa capture est plus ancienne que refresh_s (PATCH /v1/sources/{id}). Rien ne tourne en tâche de fond.
  • Chaque changement est un instantané daté; un contenu inchangé marque seulement le dernier comme à jour.
  • Un run garde la capture qu'il a interrogée. Une capture qui sert une réponse est conservée comme source fixe dans le dossier Kept from live sources (« Captures conservées » dans l'application); à la main: POST /v1/sources/{id}/keep.
  • twitch:<chaîne> et twitch-chat:<chaîne>: rien n'est enregistré à l'ajout; chaque requête enregistre le flux (ou lit le chat) pendant qu'elle tourne, par morceaux de 10 s interrogés à leur arrivée. Durée: ?window=N ou config.window_s, 5 à 300 s (chat: 120 s au plus), dans la limite de temps du mode.

Dossiers#

Ensembles de sources nommés et imbriqués (API).

  • Une source peut être dans plusieurs dossiers; noms uniques entre voisins.
  • Supprimer un dossier garde ses sources; ses sous-dossiers remontent d'un niveau.
  • Cibler un dossier dans les sources d'une question: par identifiant (fld_…), nom ("Contrats") ou chemin ("Clients/Acme"). Il est remplacé par ses sources et celles de ses sous-dossiers, puis la sélection habituelle s'applique.

Questions#

Un seul point d'accès, POST /v1/ask, pour toutes les questions. Sextant choisit la méthode:

  • la plupart des questions: une recherche directe, puis une réponse citée;
  • une question en plusieurs parties, comparative ou une liste: le workflow de recherche. Jusqu'à 4 sous-questions, cherchées dans toutes les sources; preuves recoupées; chaque affirmation vérifiée contre ses citations; SQL en lecture seule sur les tableaux trouvés (un total, une moyenne), cité comme preuve. En deep, une boucle d'agent avec outils le mène (événement research_mode).

Réponse adaptative#

La réponse est aussi longue que la question le demande: une phrase pour « Quel âge a le PDG ? », un rapport structuré pour « Une étude complète de mes 10 PDF ». Ni la question ni la réponse n'ont de limite de taille fixe.

  • Avant la lecture, la longueur est planifiée d'après la question (ses mots, sa longueur) et les sources qu'elle concerne.
  • Pendant la lecture, le plan est révisé selon ce qui est trouvé: une demande ouverte dont les preuves couvrent plusieurs sources devient un rapport, lu aussi profondément qu'en deep. Un fait (une date, un montant, un nom) reste court.
  • Le plan figure dans processing.adaptive_output et dans les événements output_planned et output_replanned. Une réponse longue reçoit les jetons de modèle de langage qu'il lui faut au-delà de max_llm_tokens.
  • max_output_tokens plafonne la réponse, budget la recherche. Une réponse longue coûte plus (billing.price_usd); le monthly_budget_usd d'une clé d'API plafonne la dépense (Tarifs).

Modes et budgets#

Un budget borne le temps et ce qu'une requête lit. Préréglages (Rapide, Équilibré, Approfondi dans l'application):

ChampLimitefastbalanceddeep
max_latency_stemps de recherche (s)830180
max_sourcessources ouvertes3816
max_regionspassages lus en profondeur41030
max_transcription_secondsaudio ou vidéo transcrit (s)1206002 400
max_ocr_pagespages en OCR42080
max_framesimages de vidéo examinées2480300
max_followed_linkspages web liées suivies024
max_llm_tokensjetons du modèle de langage10 00030 000150 000

budget: un préréglage ("deep") ou un objet qui en part et remplace des champs:

JSON
{ "budget": { "preset": "deep", "max_latency_s": 60, "max_frames": 50 } }
ChampDescription
presetfast, balanced (défaut), deep
follow_linkssuivre les liens des pages lues si la réponse reste faible (même site d'abord, robots.txt respecté); défaut true
derive_sourcesouvrir une source appelée par la question (« combien de pharmacies à... »: données cartographiques); défaut true
answer_modeauto (défaut), extractive (citations seules, sans modèle de langage), llm
reasoning_tierauto (défaut), fast, flagship: niveau du modèle qui rédige
background_enrichmentlecture peu coûteuse du reste de la source après le run; défaut true
max_decisions, max_steps, candidate_poolavancé: décisions rapides, étapes de l'agent, passages considérés

La limite de temps borne la recherche; la rédaction ajoute quelques secondes, plus pour un rapport long. Un budget est un plafond, pas un prix (Tarifs).

Preuves et citations#

ChampDescription
idev_…; GET /v1/evidence/{id}
source_id, region_id, source_title, source_uriprovenance
quotetexte exact (description pour une preuve visuelle)
locatoremplacement précis (ci-dessous)
labelemplacement lisible: p. 847, pp. 12-13, 7:47-8:09, § Tarifs, lines 40-52
linklien profond: page du PDF, seconde de la vidéo, ancre de la page web
pathtitres des sections englobantes
confidence, modality0 à 1; text, visual, audio, table
tablepreuve calculée: SQL, colonnes, lignes
locator.kindChamps
pagespage_start, page_end, bbox ([x0, y0, x1, y1], points PDF, origine en haut à gauche, une seule page), page_width, page_height
timetime_start, time_end (s), frames (horodatages des images examinées)
weburl, heading_path, anchor, dom_path
textchar_start, char_end, line_start, line_end
recordindex, keys (champs identifiants), field
  • La réponse est rédigée dans la langue de la question.
  • confidence vient de signaux (pertinence, couverture, sources concordantes, chiffres cités mot pour mot, affirmations vérifiées, contradictions), pas d'une auto-évaluation d'un modèle.
  • Preuves faibles mais liées: la première phrase dit que les sources ne répondent pas directement, puis la réponse rapporte ce qu'elles disent, cité.
  • Contradiction: signalée; un erratum ou une correction donne la valeur en vigueur.

Threads et relances#

Renvoyez le thread_id d'un résultat pour une relance (« et pour 2025 ? », « c'est faux, regarde la page 12 »). Elle est réécrite en requête autonome et cherchée dans les sources du thread (sauf si elle en nomme d'autres), à partir des preuves des tours précédents. Points d'accès: Threads.

Runs et liens de partage#

Chaque question est un run (run_id; une « recherche » dans l'application). Il garde ses événements, passages lus, preuves, couverture par source, tableaux et requêtes SQL. Lien de partage (environment_url) et SQL: Runs.

Espaces de travail#

Un par compte: sources, dossiers, threads, runs, solde. Un identifiant d'un autre espace répond 404, comme un identifiant inexistant.