**Motivations:** - Single canonical documentation tree under docs/; reduce drift between README copies. **Evolutions:** - Add docs/repo/ with operational guides (cron, systemd, projects, logs, docv, ia_dev, services, scripts, extension). - Replace scattered README.md files with pointers to docs/repo/*.md. - Refresh docs/README.md index and cross-links across docs/, .cursor rules/agents. - Bump ia_dev submodule to matching doc pointer commits.
36 lines
2.2 KiB
Markdown
36 lines
2.2 KiB
Markdown
# LangExtract — API locale (`services/langextract-api`)
|
||
|
||
## Objectif
|
||
|
||
Exposer [LangExtract](https://github.com/google/langextract) (Google, Apache-2.0) comme **service HTTP local** : à partir d’un texte, d’une consigne et d’exemples few-shot, produire des **extractions structurées** (classes, attributs, texte extrait) avec **ancrage** dans le texte lorsque le modèle et la librairie le fournissent (`char_interval`).
|
||
|
||
## Périmètre
|
||
|
||
- Pas de logique métier supplémentaire : l’API se limite à valider le JSON, appeler `langextract.extract`, sérialiser le résultat.
|
||
- Les modèles **cloud** (Gemini, etc.) suivent la configuration amont (clés API, quotas).
|
||
- Les modèles **locaux** passent typiquement par **Ollama** (`model_url`, options `fence_output` / `use_schema_constraints` selon la doc amont).
|
||
|
||
## Exploitation
|
||
|
||
| Élément | Détail |
|
||
|--------|--------|
|
||
| Code | [repo/service-langextract.md](../repo/service-langextract.md) |
|
||
| Hôte / port | `127.0.0.1` et port par défaut `37141` (voir README) |
|
||
| Auth | Si `LANGEXTRACT_SERVICE_TOKEN` est défini : en-tête `Authorization: Bearer …` obligatoire sur `POST /extract` |
|
||
| Santé | `GET /health` |
|
||
|
||
## Schéma de requête (`POST /extract`)
|
||
|
||
Champs principaux : `text`, `prompt_description`, `examples[]` (`text`, `extractions[]` avec `extraction_class`, `extraction_text`, `attributes`), `model_id`, et options optionnelles alignées sur l’API Python (`model_url`, `extraction_passes`, `max_workers`, `max_char_buffer`, `api_key`, `fence_output`, `use_schema_constraints`).
|
||
|
||
Réponse : `{ "documents": [ { "extractions": [ … ] } ] }` avec, par extraction, `extraction_class`, `extraction_text`, `attributes`, et `char_interval` `{ "start", "end" }` si présent.
|
||
|
||
## Intégration architecture
|
||
|
||
Ce service complète le socle décrit dans [system-architecture.md](../system-architecture.md) : un client (éditeur type Lapce, gateway, script) peut appeler l’extraction structurée **sans** embarquer Python dans l’UI, tant que le réseau local et le token le permettent.
|
||
|
||
## Références
|
||
|
||
- Dépôt amont : [https://github.com/google/langextract](https://github.com/google/langextract)
|
||
- PyPI : [https://pypi.org/project/langextract/](https://pypi.org/project/langextract/)
|