diff --git a/_INDEX.md b/_INDEX.md index cf0d2bd..13b7dbd 100644 --- a/_INDEX.md +++ b/_INDEX.md @@ -6,6 +6,11 @@ --- +## common (infra partagee, transverse aux 3 instances) +| Runbook | Date | Tags | +|---------|------|------| +| [Acces Bifrost (passerelle LLM, vision/OCR)](common/bifrost-access.md) | 2026-06-14 | infra, bifrost, llm, vision, x-bf-vk | + ## hermes-perso | Runbook | Date | Tags | |---------|------|------| diff --git a/common/bifrost-access.md b/common/bifrost-access.md new file mode 100755 index 0000000..24e1670 --- /dev/null +++ b/common/bifrost-access.md @@ -0,0 +1,31 @@ +# BIFROST-ACCESS — Passerelle LLM (vision / OCR) + +Note partagée aux 3 instances Hermes. Source : projet gsparc-mezzouna, 2026-06-14. + +Bifrost = passerelle LLM OpenAI-compatible sur le NAS. + +## Endpoint & authentification +- Conteneur `bifrost` sur le réseau **n8n**, port interne **8080**. + - Depuis un conteneur du réseau n8n : `http://bifrost:8080/v1` + - Depuis le LAN : `http://192.168.100.33:3085/v1` (UI sur 3085) +- **Auth = header `x-bf-vk: `**. Le header `Authorization: Bearer` est REJETÉ (HTTP 401 `virtual_key_required`). Toujours envoyer `x-bf-vk`. +- Clé virtuelle commune (Nabil-Key, budget 8 $/mois) : `bfk-e5832bfebd22e9d8252a426d0734ed5f2d923204c8033d6d`. +- `GET /v1/models` (avec `x-bf-vk`) → liste des modèles (ids complets, ex. `openrouter/google/gemini-2.5-flash`). + +## PIÈGE vision / OCR +**DeepSeek est text-only.** Envoyer une image à `deepseek-v4-flash/pro/r1` → `404 "No endpoints found that support image input"`. +→ Pour toute extraction d'image (scan, ticket, OCR), utiliser un modèle vision : +**`openrouter/google/gemini-2.5-flash`** (rapide, fiable, payant ~fraction de centime/image). +Le « forfait OpenCode gratuit » ne couvre PAS la vision. + +## Exemple +```bash +curl -s http://bifrost:8080/v1/chat/completions \ + -H "x-bf-vk: bfk-e5832bfebd22e9d8252a426d0734ed5f2d923204c8033d6d" \ + -H "Content-Type: application/json" \ + -d '{"model":"openrouter/google/gemini-2.5-flash","messages":[ + {"role":"user","content":[ + {"type":"text","text":"Décris cette image en JSON strict."}, + {"type":"image_url","image_url":{"url":"data:image/jpeg;base64,..."}}]}]}' +``` +Implémentation de référence : `gsparc-mezzouna/app/vision.py`.