<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.11/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.11/ http://www.mediawiki.org/xml/export-0.11.xsd" version="0.11" xml:lang="en">
  <siteinfo>
    <sitename>Essential</sitename>
    <dbname>wikidb</dbname>
    <base>https://infocepo.com/wiki/index.php/Main_Page</base>
    <generator>MediaWiki 1.39.13</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
      <namespace key="-1" case="first-letter">Special</namespace>
      <namespace key="0" case="first-letter" />
      <namespace key="1" case="first-letter">Talk</namespace>
      <namespace key="2" case="first-letter">User</namespace>
      <namespace key="3" case="first-letter">User talk</namespace>
      <namespace key="4" case="first-letter">Essential</namespace>
      <namespace key="5" case="first-letter">Essential talk</namespace>
      <namespace key="6" case="first-letter">File</namespace>
      <namespace key="7" case="first-letter">File talk</namespace>
      <namespace key="8" case="first-letter">MediaWiki</namespace>
      <namespace key="9" case="first-letter">MediaWiki talk</namespace>
      <namespace key="10" case="first-letter">Template</namespace>
      <namespace key="11" case="first-letter">Template talk</namespace>
      <namespace key="12" case="first-letter">Help</namespace>
      <namespace key="13" case="first-letter">Help talk</namespace>
      <namespace key="14" case="first-letter">Category</namespace>
      <namespace key="15" case="first-letter">Category talk</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>Main Page</title>
    <ns>0</ns>
    <id>1</id>
    <revision>
      <id>1940</id>
      <parentid>1939</parentid>
      <timestamp>2026-04-04T10:48:37Z</timestamp>
      <contributor>
        <username>Tcepo</username>
        <id>2</id>
      </contributor>
      <comment>/* Nouveautés 21/03/2026 */</comment>
      <origin>1940</origin>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text bytes="30936" sha1="f2zgklcr9vq4agu0rs99uirchaar6so" xml:space="preserve">[[File:Infocepo-picture.png|thumb|right|Discover cloud and AI on infocepo.com]]

= infocepo.com – Cloud, AI &amp; Labs =

Bienvenue sur le portail '''infocepo.com'''.

Ce wiki documente l’écosystème '''Cloud, IA, automatisation et lab''' d’Infocepo.  
Il s’adresse aux :

* administrateurs systèmes,
* ingénieurs cloud,
* développeurs,
* étudiants,
* curieux qui veulent apprendre en pratiquant.

L’objectif est simple : transformer la théorie en '''scripts réutilisables, schémas, architectures, APIs et laboratoires concrets'''.

__TOC__

----

= Accès rapide =

== Portail principal ==
* [https://infocepo.com infocepo.com]

== Assistant IA ==
* [https://chat.infocepo.com Chat assistant]

== Liste des pages du wiki ==
* [[Special:AllPages|Toutes les pages]]

== Vue d’ensemble ==
* [[File:Ailab-architecture.png|thumb|'''Infra architecture overview''']]

----

= Démarrer rapidement =

== Parcours recommandés ==

; 1. Construire un assistant IA privé
* Déployer une stack type '''Open WebUI + Ollama + GPU'''
* Ajouter un modèle de chat et un modèle de résumé
* Brancher des données internes via '''RAG + embeddings'''

; 2. Lancer un lab cloud
* Créer un petit cluster Kubernetes, OpenStack ou bare-metal
* Mettre en place un pipeline de déploiement (Helm, Ansible, Terraform…)
* Ajouter un service IA : transcription, résumé, chatbot, OCR…

; 3. Préparer un audit ou une migration
* Inventorier les serveurs avec '''ServerDiff.sh'''
* Concevoir l’architecture cible
* Automatiser la migration avec des scripts reproductibles

== Vue d’ensemble du contenu ==
* '''Guides IA &amp; outils''' : assistants, modèles, évaluation, GPU, RAG
* '''Cloud &amp; infrastructure''' : Kubernetes, OpenStack, HA, HPC, DevSecOps
* '''Labs &amp; scripts''' : audit, migration, automatisation
* '''Comparatifs''' : Kubernetes vs OpenStack vs AWS vs bare-metal, etc.

----

= Vision =

[[File:Automation-full-vs-humans.png|thumb|right|The world after automation]]

Le but à long terme est de construire un environnement où :

* les assistants IA privés accélèrent la production,
* les tâches répétitives sont automatisées,
* les déploiements sont industrialisés,
* l’infrastructure reste '''compréhensible, portable et réutilisable'''.

[[File:SUMMARY-DIAGRAM-7311e6b1-aede-4989-ade2-a42d1a6e0ff2.png|thumb|right|Main page summary]]

----

= Catalogue rapide des services =

{| class="wikitable"
|+ Services principaux
! Catégorie !! Service !! Lien !! Rôle
|-
| API || LLM || [https://api.ailab.infocepo.com:wait-2026-06 API LLM] || Modèles de chat, code, RAG, OCR
|-
| API || STT || [https://api-audio2txt.ailab.infocepo.com/docs API STT] || Transcription audio
|-
| API || TTS || [https://api-txt2audio.ailab.infocepo.com/docs API TTS] || Synthèse vocale
|-
| API || Realtime AI || [https://github.com/ynotopec/api-realtime-ai api-realtime-ai] || Temps réel WebSocket / WebRTC
|-
| API || Image to Text || [https://api.ailab.infocepo.com:wait-2026-06 API LLM] || OCR / VLM via endpoint dédié
|-
| API || Summary || [https://api-summary.ailab.infocepo.com:wait-2026-06/docs API Summary] || Résumé de textes longs
|-
| API || Text Embeddings || [https://text-embeddings.ailab.infocepo.com:wait-2026-06/docs Text Embeddings] || Embeddings pour RAG
|-
| API || ChromaDB || [https://chromadb.ailab.infocepo.com:wait-2026-06 ChromaDB] || Base vecteur
|-
| API || Text to Image || [https://api-txt2image.ailab.infocepo.com/docs TXT2IMAGE] || Génération d’images
|-
| API || Diarization || [https://api-diarization.ailab.infocepo.com/docs Diarization] || Segmentation locuteurs
|-
| Observabilité || Monitoring || [https://grafana.ailab.infocepo.com:wait-2026-06 Grafana] || Dashboards techniques
|-
| Observabilité || Status || [https://uptime-kuma.ailab.infocepo.com:wait-2026-06/status/ai Uptime Kuma] || Disponibilité des services
|-
| Observabilité || Web stats || [https://web-stat.c1.ailab.infocepo.com:wait-2026-06 Web Stat] || Statistiques web
|-
| Observabilité || LLM stats || [https://api.ailab.infocepo.com:wait-2026-06/ui LLM Stat] || Vue API / usage
|-
| Outils || DataLab || [https://datalab.ailab.infocepo.com:wait-2026-06 DataLab] || Environnement de travail hors-production
|-
| Outils || Translation UI || [https://translate-rt.ailab.infocepo.com Translation] || Traduction
|-
| Outils || Demos || [https://demos.ailab.infocepo.com Demos] || Démonstrateurs
|}

----

= Nouveautés =

== Nouveautés 21/03/2026 ==
* Ajout de '''gemma4''' : Gemma 4 models are designed to deliver frontier-level performance at each size. They are well-suited for reasoning, agentic workflows, coding, and multimodal understanding.

* Ajout de '''nemotron-cascade-2''' : modèle open 30B MoE NVIDIA orienté raisonnement et tâches agentiques.
* Ajout de [https://github.com/sst/opencode '''opencode'''] : CLI coder à comparer avec Aider / OpenHands.
* Ajout de [https://localai.ailab.infocepo.com:wait-2026-06 '''localai'''] : infrastructure locale unifiée pour STT / TTS / LLM.
* DGX Spark : architecture CPU ARM.
* Ajout de '''qwen3.5''' : famille de modèles open source multimodaux.
* Ajout de [https://github.com/ynotopec/api-convert2md '''api-convert2md'''] : extraction de tableaux pour RAG compatible Open WebUI.
* Mise à jour des paramètres '''RAG optimisation'''.
* Ajout de [https://github.com/ynotopec/coder-brain/blob/main/first-architecture.md '''experimental brains'''].
* Ajout de [https://github.com/ynotopec/legal-agent '''legal-agent'''].
* Ajout de [https://github.com/ynotopec/ai-security '''ai-security'''].
* Ajout de [https://langextract.ailab.infocepo.com '''langextract'''] : démo extraction d’entités.
* Ajout de [https://sam-audio.c1.ailab.infocepo.com:wait-2026-06 '''sam-audio'''] : séparation audio sémantique.
* Ajout de '''glm-4.7-flash''' : modèle 30B léger orienté performance / efficacité.
* Ajout de '''API Realtime''' : WebRTC / WebSocket bidirectionnel basse latence.
* Ajout de '''gpt-oss''' : modèles open-weight conçus pour raisonnement et tâches agentiques.

----

= Priorités =

== Top tasks ==
* Ajouter [https://github.com/microsoft/presidio '''Presidio'''] : anonymisation / masquage PII, socle RGPD.
* Ajouter [https://github.com/sgl-project/sglang '''SGLang'''] : serving LLM haute performance.
* Ajouter [https://github.com/llm-d/llm-d '''llm-d'''] : blueprints + charts Kubernetes pour industrialiser les déploiements.
* Ajouter [https://github.com/ai-dynamo/dynamo '''Dynamo'''] : orchestration inférence multi-nœuds.
* Ajouter [https://github.com/vllm-project/guidellm '''GuideLLM'''] : capacity planning / benchmark réaliste.
* Ajouter [https://github.com/NVIDIA-NeMo/Guardrails '''NeMo Guardrails'''] : garde-fous et politiques.

== Backlog / veille ==
* OPENRAG &gt; implement / evaluate / add OIDC
* short audio transcription
* translation latency &gt; [https://github.com/ynotopec/api-realtime-ai api-realtime-ai]
* RAG sur PDF avec images
* compatibilité Open WebUI avec Agentic RAG
* scalability
* security &gt; [https://github.com/ynotopec/ai-security ai-security] / [https://github.com/NVIDIA-NeMo/Guardrails NeMo Guardrails]
* [https://github.com/openclaw/openclaw openclaw]
* faster-whisper mutualisé
* API classificateur IA
* API résumé mutualisée
* API KV (LDAP user / group)
* API NER
* parsing structuré docs : granite-docling + meilisearch
* Temporal pour workflows critiques
* [https://github.com/appwrite/appwrite appwrite]
* [https://github.com/vllm-project/semantic-router semantic-router]
* [https://github.com/KeygraphHQ/shannon Shannon]
* [https://huggingface.co/Qwen/Qwen3-ASR-1.7B Qwen3-ASR-1.7B]
* [https://huggingface.co/tencent/Youtu-VL-4B-Instruct Youtu-VL-4B-Instruct]
* [https://huggingface.co/stepfun-ai/Step3-VL-10B Step3-VL-10B]
* [https://huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice Qwen3-TTS-12Hz-1.7B-CustomVoice]
* [https://github.com/resemble-ai/chatterbox chatterbox]
* deepset-ai/haystack
* meilisearch
* [https://huggingface.co/ibm-granite/granite-docling-258M granite-docling-258M]
* Airbyte
* [https://github.com/Aider-AI/aider aider]
* [https://github.com/continuedev/continue continue]
* OpenHands
* N8N
* API Compressor
* LightRAG
* [https://huggingface.co/Qwen/Qwen3-Omni-30B-A3B-Instruct Qwen3-Omni-30B-A3B-Instruct]
* Metabase
* browser-use
* MCP LLM
* Dify
* Rasa
* supabase
* mem0
* DeepResearch
* AppFlowy
* dx8152/Qwen-Edit-2509-Multiple-angles

----

= Assistants IA &amp; outils cloud =

== Assistants IA ==

; '''ChatGPT'''
* [https://chatgpt.com ChatGPT] – Assistant conversationnel public, utile pour exploration, rédaction, expérimentation rapide.

; '''Assistants IA auto-hébergés'''
* [https://github.com/open-webui/open-webui Open WebUI] + [https://ollama.com Ollama] + GPU  
: Stack typique pour assistant privé, API OpenAI-compatible et expérimentation locale.
* [https://github.com/ynotopec/summarize Private summary]  
: Outil de résumé local, rapide et hors ligne.

== Développement, modèles &amp; veille ==

; '''Découverte de modèles'''
* [https://ollama.com/library LLM Trending]
* [https://huggingface.co/models Models Trending]
* [https://huggingface.co/models?pipeline_tag=image-text-to-text&amp;sort=trending Img2txt Trending]
* [https://huggingface.co/spaces/TIGER-Lab/GenAI-Arena Txt2img Evaluation]

; '''Évaluation &amp; benchmarks'''
* [https://lmarena.ai/leaderboard ChatBot Evaluation]
* [https://huggingface.co/spaces/mteb/leaderboard Embedding Leaderboard]
* [https://ann-benchmarks.com Vectors DB Ranking]
* [https://top500.org/lists/green500/ HPC Efficiency]

; '''Outils de développement &amp; fine-tuning'''
* [https://github.com/search?q=stars%3A%3E15000+forks%3A%3E1500+created%3A%3E2022-06-01&amp;type=repositories&amp;s=updated&amp;o=desc Project Trending]
* [https://github.com/hiyouga/LLaMA-Factory LLM Fine Tuning]
* [https://www.perplexity.ai Perplexity AI]

== Matériel IA &amp; GPU ==
* [https://www.nvidia.com/en-us/data-center/h100/ NVIDIA H100]
* NVIDIA 5080
* [https://www.mouser.fr/ProductDetail/BittWare/RS-GQ-GC1-0109?qs=ST9lo4GX8V2eGrFMeVQmFw%3D%3D GROQ LLM accelerator]

----

= Modèles ouverts &amp; endpoints internes =

''Dernière mise à jour : 2026-03-30''

Les modèles ci-dessous correspondent à des '''endpoints logiques''' exposés derrière une passerelle.

{| class="wikitable"
! Endpoint !! Description / usage principal
|-
| '''ai-chat''' || Basé sur '''gpt-oss-20b''' – chat généraliste, bon compromis coût / qualité
|-
| '''ai-translate''' || translategemma, température = 0 – traduction déterministe et reproductible
|-
| '''ai-summary''' || qwen3 – résumé de textes longs
|-
| '''ai-code''' || glm-4.7-flash – tâches agentiques, raisonnement et explication de code
|-
| '''ai-parse''' || qwen3 – extraction structurée, parsing logs / JSON / tableaux
|-
| '''ai-RAG-FR''' || qwen3 – RAG en français
|}

----

= API Realtime AI (DEV) =

'''Statut :''' environnement DEV, remplaçante prévue de l’API OpenAI pour les cas temps réel.

== Configuration ==
{| class="wikitable"
! Variable !! Valeur
|-
| OPENAI_API_BASE || &lt;code&gt;wss://api-realtime-ai.ailab.infocepo.com:wait-2026-06/v1&lt;/code&gt;
|-
| OPENAI_API_KEY || &lt;code&gt;sk-XXXXX&lt;/code&gt;
|}

== Dépôt GitHub ==
* [https://github.com/ynotopec/api-realtime-ai ynotopec/api-realtime-ai]

== Page de test ==
* &lt;code&gt;external-test/half-duplex.html&lt;/code&gt; — annulation d’écho + mode half-duplex.

== Compatibilité ==
Remplacer l’URL OpenAI par &lt;code&gt;$OPENAI_API_BASE&lt;/code&gt; pour tester compatibilité et performances.

----

= API LLM (OpenAI compatible) =

* URL de base : &lt;code&gt;https://api.ailab.infocepo.com:wait-2026-06/v1&lt;/code&gt;
* Création du token : [https://llm-token.ailab.infocepo.com:wait-2026-06 OPENAI_API_KEY]
* Documentation : [https://api.ailab.infocepo.com:wait-2026-06 Documentation API]

== Liste des modèles ==
&lt;pre&gt;
curl -X GET \
  'https://api.ailab.infocepo.com:wait-2026-06/v1/models' \
  -H 'Authorization: Bearer sk-XXXXX' \
  -H 'accept: application/json' \
  | jq | sed -rn 's#^.*id.*: "(.*)".*$#* \1#p' | sort -u
&lt;/pre&gt;

== Modèles mis en avant ==
{| class="wikitable"
! Model !! Commentaire
|-
| '''ai-chat''' || qwen3-coder
|-
| '''ai-translate''' || qwen3-coder
|-
| '''ai-summary''' || qwen3-coder
|-
| '''ai-code-completion''' || qwen3-coder
|-
| '''ai-RAG-FR''' || qwen3-coder
|-
| '''qwen3-coder''' || Function Calling
|-
| '''ai-ocr''' || qwen3-vl
|}

== Exemple bash ==
&lt;pre&gt;
export OPENAI_API_MODEL="ai-chat"
export OPENAI_API_BASE="https://api.ailab.infocepo.com:wait-2026-06/v1"
export OPENAI_API_KEY="sk-XXXXX"

promptValue="Quel est ton nom ?"
jsonValue='{
  "model": "'${OPENAI_API_MODEL}'",
  "messages": [{"role": "user", "content": "'${promptValue}'"}],
  "temperature": 0
}'

curl -k ${OPENAI_API_BASE}/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d "${jsonValue}" 2&gt;/dev/null | jq '.choices[0].message.content'
&lt;/pre&gt;

== Vue infra LLM ==
[[File:Litellm-proxy-mermaid-diagram-2024-03-24-205202.png|thumb|right]]

'''DEV (au choix)'''
* '''A.''' &lt;code&gt;LiteLLM → vLLM&lt;/code&gt; : tests perf / compatibilité
* '''B.''' &lt;code&gt;LiteLLM → Ollama&lt;/code&gt; : simple, rapide à itérer
* '''C.''' &lt;code&gt;Ollama&lt;/code&gt; direct : POC ultra-léger

'''DEV – modèle FR / résumé'''
* &lt;code&gt;LiteLLM → Ollama /v1&lt;/code&gt;

'''PROD'''
* '''Standard :''' &lt;code&gt;LiteLLM → vLLM&lt;/code&gt;
* '''Pont DEV→PROD :''' &lt;code&gt;LiteLLM (DEV) → LiteLLM (PROD) → vLLM&lt;/code&gt;

'''Notes :'''
* '''LiteLLM''' = passerelle unique (clés, quotas, logs)
* '''vLLM''' = performance / stabilité en charge
* '''Ollama''' = simplicité de prototypage

----

= API Image to Text =

* Utilise l’API LLM avec un endpoint adapté à l’OCR / VLM.
* Modèle recommandé : &lt;code&gt;ai-ocr&lt;/code&gt;

== Exemple bash ==
&lt;pre&gt;
OPENAI_API_KEY=sk-XXXXX

base64 -w0 "/path/to/image.png" &gt; img.b64

jq -n --rawfile img img.b64 \
'{
  model: "ai-ocr",
  messages: [
    {
      role: "user",
      content: [
        { "type": "text", "text": "Décris cette image." },
        {
          "type": "image_url",
          "image_url": { "url": ("data:image/png;base64," + ($img | rtrimstr("\n"))) }
        }
      ]
    }
  ]
}' &gt; payload.json

curl https://api.ailab.infocepo.com:wait-2026-06/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @payload.json
&lt;/pre&gt;

== Exemple Python ==
&lt;pre&gt;
import base64
import json
import requests
import os

API_KEY = os.getenv("OPENAI_API_KEY")
MODEL = "ai-ocr"
IMG_PATH = "/path/to/image.png"
API_URL = "https://api.ailab.infocepo.com:wait-2026-06/v1/chat/completions"

with open(IMG_PATH, "rb") as f:
    img_b64 = base64.b64encode(f.read()).decode("utf-8")

payload = {
    "model": MODEL,
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Décris cette image."},
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/png;base64,{img_b64}"}
                }
            ]
        }
    ]
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(API_URL, headers=headers, data=json.dumps(payload))

if response.ok:
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
else:
    print(f"Erreur {response.status_code}: {response.text}")
&lt;/pre&gt;

----

= API STT =

* URL : &lt;code&gt;https://stt.ailab.infocepo.com:wait-2026-06/v1&lt;/code&gt;
* Clé : &lt;code&gt;OPENAI_API_KEY=sk-XXXXX&lt;/code&gt;
* Modèle : &lt;code&gt;whisper-1&lt;/code&gt;
* Documentation : [https://stt.ailab.infocepo.com:wait-2026-06/docs API STT docs]

== Exemple Python ==
&lt;pre&gt;
import requests

OPENAI_API_KEY = 'sk-XXXXX'

url = 'https://stt.ailab.infocepo.com:wait-2026-06/v1/audio/transcriptions'
headers = {
    'Authorization': f'Bearer {OPENAI_API_KEY}',
}
files = {
    'file': ('file.opus', open('/path/to/file.opus', 'rb')),
    'model': (None, 'whisper-1')
}

response = requests.post(url, headers=headers, files=files)
print(response.json())
&lt;/pre&gt;

== Exemple curl ==
&lt;pre&gt;
[ ! -f /tmp/test.ogg ] &amp;&amp; wget "https://upload.wikimedia.org/wikipedia/commons/1/17/Fables_de_La_Fontaine_Livre_1_01.ogg" -O /tmp/test.ogg

export OPENAI_API_KEY=sk-XXXXX

curl https://stt.ailab.infocepo.com:wait-2026-06/v1/audio/transcriptions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F model="whisper-1" \
  -F file="@/tmp/test.ogg"
&lt;/pre&gt;

== Notes ==
* Plusieurs formats audio sont acceptés.
* Le flux final est normalisé en '''16 kHz mono'''.
* Pour une qualité optimale : privilégier '''OPUS 16 kHz mono'''.

== UI ==
* [https://translate-rt.ailab.infocepo.com translate-rt]

----

= API TTS =

* URL : &lt;code&gt;https://tts.ailab.infocepo.com:wait-2026-06/v1&lt;/code&gt;
* Clé : &lt;code&gt;OPENAI_API_KEY=sk-XXXXX&lt;/code&gt;
* Documentation : [https://tts.ailab.infocepo.com:wait-2026-06/docs API TTS docs]

== Exemple ==
&lt;pre&gt;
export OPENAI_API_KEY=sk-XXXXX

curl https://tts.ailab.infocepo.com:wait-2026-06/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini-tts",
    "input": "Bonjour, ceci est un test de synthèse vocale.",
    "voice": "coral",
    "instructions": "Speak in a cheerful and positive tone.",
    "response_format": "opus"
  }' | ffplay -i -
&lt;/pre&gt;

----

= API Text to Image =

* URL : &lt;code&gt;https://api-txt2image.ailab.infocepo.com:wait-2026-06/v1&lt;/code&gt;
* Clé API : &lt;code&gt;OPENAI_API_KEY=EMPTY&lt;/code&gt;
* Documentation : [https://api-txt2image.ailab.infocepo.com:wait-2026-06/docs API TXT2IMAGE docs]

== Exemple ==
&lt;pre&gt;
export OPENAI_API_KEY=EMPTY

curl https://api-txt2image.ailab.infocepo.com:wait-2026-06/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "prompt": "a photo of a happy corgi puppy sitting and facing forward, studio light, longshot",
    "n": 1,
    "size": "1024x1024"
  }'
&lt;/pre&gt;

----

= API Diarization =

* Documentation : [https://api-diarization.ailab.infocepo.com:wait-2026-06/docs API Diarization docs]

== Exemple ==
&lt;pre&gt;
wget "https://upload.wikimedia.org/wikipedia/commons/6/60/Mike_Peters_on_Politics_and_Emotion_%28Interview_1984%29.mp3" -O /tmp/test.mp3

curl -X POST "https://api-diarization.ailab.infocepo.com:wait-2026-06/upload-audio/" \
  -H "Authorization: Bearer token1" \
  -F "file=@/tmp/test.mp3"
&lt;/pre&gt;

----

= API Summary =

* Documentation : [https://api-summary.ailab.infocepo.com:wait-2026-06/docs API Summary docs]

== Exemple ==
&lt;pre&gt;
text="The tower is 324 metres tall and is one of the most recognizable monuments in the world."

json_payload=$(jq -nc --arg text "$text" '{"text": $text}')

curl -X POST https://api-summary.ailab.infocepo.com:wait-2026-06/summary/ \
  -H "Content-Type: application/json" \
  -d "$json_payload"
&lt;/pre&gt;

----

= API Text Embeddings =

* URL : &lt;code&gt;https://text-embeddings.ailab.infocepo.com:wait-2026-06&lt;/code&gt;
* URL utilisée par MRSIE : &lt;code&gt;https://tei.ailab.infocepo.com:wait-2026-06/&lt;/code&gt;
* Documentation : [https://text-embeddings.ailab.infocepo.com:wait-2026-06/docs Documentation]

== Exemple ==
&lt;pre&gt;
curl -k https://text-embeddings.ailab.infocepo.com:wait-2026-06/embed \
  -X POST \
  -d '{"inputs":"What is Deep Learning?"}' \
  -H 'Content-Type: application/json'
&lt;/pre&gt;

----

= API DB Vectors (ChromaDB) =

== Production ==
* URL : &lt;code&gt;https://chromadb.ailab.infocepo.com:wait-2026-06&lt;/code&gt;
* Token : &lt;code&gt;XXXXX&lt;/code&gt;

== Lab ==
&lt;pre&gt;
export CHROMA_HOST=https://chromadb.c1.ailab.infocepo.com:wait-2026-06
export CHROMA_PORT=443
export CHROMA_TOKEN=XXXX
&lt;/pre&gt;

== Exemple curl ==
&lt;pre&gt;
curl -v "${CHROMA_HOST}"/api/v1/collections \
  -H "Authorization: Bearer ${CHROMA_TOKEN}"
&lt;/pre&gt;

== Exemple Python ==
&lt;pre&gt;
import chromadb
from chromadb.config import Settings

def chroma_http(host, port=80, token=None):
    return chromadb.HttpClient(
        host=host,
        port=port,
        ssl=host.startswith('https') or port == 443,
        settings=(
            Settings(
                chroma_client_auth_provider='chromadb.auth.token.TokenAuthClientProvider',
                chroma_client_auth_credentials=token,
            ) if token else Settings()
        )
    )

client = chroma_http(CHROMA_HOST, CHROMA_PORT, CHROMA_TOKEN)
collections = client.list_collections()
print(collections)
&lt;/pre&gt;

== Déployer sa propre instance ==
&lt;pre&gt;
export nameSpace=your_namespace
domainRoot=ailab.infocepo.com:wait-2026-06

helm repo add chroma https://amikos-tech.github.io/chromadb-chart/
helm repo update

helm upgrade --install chromadb chroma/chromadb -n ${nameSpace} \
  --set chromadb.apiVersion="0.4.24" \
  --set ingress.enabled=true \
  --set ingress.hosts[0].host="${nameSpace}-chromadb.${domainRoot}" \
  --set ingress.hosts[0].paths[0].path=/ \
  --set ingress.hosts[0].paths[0].pathType=ImplementationSpecific \
  --set ingress.annotations."cert-manager\.io/cluster-issuer"=letsencrypt-prod \
  --set ingress.tls[0].secretName=${nameSpace}-chromadb.${domainRoot}-tls \
  --set ingress.tls[0].hosts[0]="${nameSpace}-chromadb.${domainRoot}"

kubectl -n ${nameSpace} patch ingress/chromadb --type=json \
  -p '[{"op":"add","path":"/metadata/annotations/nginx.ingress.kubernetes.io~1proxy-body-size","value":"0"}]'
&lt;/pre&gt;

== Récupérer le token ==
&lt;pre&gt;
kubectl --namespace ${nameSpace} get secret chromadb-auth \
  -o jsonpath="{.data.token}" | base64 --decode &amp;&amp; echo
&lt;/pre&gt;

----

= Registry =

* URL : [https://registry.ailab.infocepo.com:wait-2026-06 registry.ailab.infocepo.com:wait-2026-06]
* Login : &lt;code&gt;user&lt;/code&gt;
* Password : &lt;code&gt;XXXXX&lt;/code&gt;

== Exemple ==
&lt;pre&gt;
curl -u "user:XXXXX" https://registry.ailab.infocepo.com:wait-2026-06/v2/_catalog
&lt;/pre&gt;

== Exemple K8S ==
&lt;pre&gt;
deploymentName=
nameSpace=

kubectl -n ${nameSpace} create secret docker-registry pull-secret \
  --docker-server=registry.ailab.infocepo.com:wait-2026-06 \
  --docker-username=user \
  --docker-password=XXXXX \
  --docker-email=contact@example.com

kubectl -n ${nameSpace} patch deployment ${deploymentName} \
  -p '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"pull-secret"}]}}}}'
&lt;/pre&gt;

----

= Stockage objet externe (S3) =

* Endpoint : &lt;code&gt;https://s3.ailab.infocepo.com:wait-2026-06&lt;/code&gt;
* Access key : &lt;code&gt;XXXX&lt;/code&gt;
* Secret key : &lt;code&gt;XXXX&lt;/code&gt;

Un bucket nommé &lt;code&gt;ORG&lt;/code&gt; a été créé pour stocker des documents de démonstration.

----

= RAG optimisation =

* Embeddings : &lt;code&gt;BAAI/bge-m3&lt;/code&gt;
* &lt;code&gt;chunk_size=1200&lt;/code&gt;
* &lt;code&gt;chunk_overlap=100&lt;/code&gt;
* LLM : &lt;code&gt;qwen3&lt;/code&gt;
* Pour les PDF mixtes : '''PDF → image → OCR / VLM''' peut améliorer les résultats.

----

= Processus usine IA =

{| class="wikitable" style="width:80%;"
! Étape !! Description !! Outils utilisés !! Responsable(s)
|-
| 1 || Idée || - || Équipe projet
|-
| 2 || Développement || Environnement Onyxia / lab || Équipe projet
|-
| 3 || Déploiement || CI/CD, GitHub, Kubernetes || Équipe DevOps
|-
| 4 || Surveillance || Uptime-Kuma, dashboards || Équipe DevOps
|-
| 5 || Alertes || Mattermost || Équipe DevOps
|-
| 6 || Support infrastructure || - || Équipe SRE
|-
| 7 || Support applicatif || - || Équipe applicative
|}

----

= Environnements =

== Hors production ==
* Utiliser [https://datalab.ailab.infocepo.com:wait-2026-06 datalab]
* Support : canal Mattermost Offre IA
* Le pseudo utilisateur doit respecter la convention interne
* Demander si besoin un accès Linux + Kubernetes

== Production (best-effort) ==
* Publier le code applicatif, les secrets (format SOPS), le Dockerfile et le code infra (Helm ou manifests K8S) sur Git
* Demander un namespace
* Lire la documentation de surveillance associée

== Limites de l’infrastructure ==
* Les charges GPU sont intentionnellement limitées en journée.

----

= Cloud Lab &amp; projets d’audit =

[[File:Infocepo.drawio.png|400px|Cloud Lab reference diagram]]

Le '''Cloud Lab''' fournit des scénarios reproductibles : audit d’infrastructure, migration cloud, automatisation, haute disponibilité.

== Projet d’audit ==
; '''[[ServerDiff.sh]]'''
Script Bash d’audit permettant de :
* détecter les dérives de configuration,
* comparer plusieurs environnements,
* préparer un plan de migration ou de remédiation.

== Exemple de migration cloud ==
[[File:Diagram-migration-ORACLE-KVM-v2.drawio.png|400px|Cloud migration diagram]]

{| class="wikitable"
! Tâche !! Description !! Durée (jours)
|-
| Audit infrastructure || 82 services, audit automatisé via '''ServerDiff.sh''' || 1.5
|-
| Diagramme d’architecture || Conception visuelle et documentation || 1.5
|-
| Contrôles de conformité || 2 clouds, 6 hyperviseurs, 6 To RAM || 1.5
|-
| Installation plateforme cloud || Déploiement des environnements cibles || 1.0
|-
| Vérification de stabilité || Premiers tests fonctionnels || 0.5
|-
| Étude d’automatisation || Identification des tâches répétitives || 1.5
|-
| Développement des templates || 6 templates, 8 environnements, 2 clouds / OS || 1.5
|-
| Diagramme de migration || Illustration du processus || 1.0
|-
| Écriture du code de migration || 138 lignes (voir '''MigrationApp.sh''') || 1.5
|-
| Stabilisation || Validation de la reproductibilité || 1.5
|-
| Benchmark cloud || Comparaison vs legacy || 1.5
|-
| Réglage des temps d’arrêt || Calcul du downtime || 0.5
|-
| Chargement VM || 82 VMs : OS, code, 2 IP par VM || 0.1
|-
! colspan=2 align="right"| '''Total''' !! 15 jours.homme
|}

=== Vérifications de stabilité (HA minimale) ===
{| class="wikitable"
! Action !! Résultat attendu
|-
| Extinction d’un nœud || Tous les services redémarrent automatiquement sur les autres nœuds
|-
| Extinction / redémarrage simultané de tous les nœuds || Les services repartent correctement après reboot
|}

----

= Architecture web &amp; bonnes pratiques =

[[File:WebModelDiagram.drawio.png|400px|Reference web architecture]]

Principes de conception :

* privilégier une infrastructure '''simple, modulaire et flexible''',
* rapprocher le contenu du client (GDNS ou équivalent),
* utiliser des load balancers réseau (LVS, IPVS),
* comparer les coûts et éviter le '''vendor lock-in''',
* pour TLS :
** '''HAProxy''' pour les frontends rapides,
** '''Envoy''' pour les cas avancés (mTLS, HTTP/2/3),
* pour le cache :
** '''Varnish''', '''Apache Traffic Server''',
* favoriser les stacks open-source,
* utiliser files, buffers, queues et quotas pour lisser les pics.

== Références ==
* [https://wikitech.wikimedia.org/wiki/Wikimedia_infrastructure Wikimedia infrastructure]
* [https://github.com/systemdesign42/system-design System Design GitHub]

----

= Comparatif des grandes plateformes cloud =

{| class="wikitable"
! Fonctionnalité !! Kubernetes !! OpenStack !! AWS !! Bare-metal !! HPC !! CRM !! oVirt
|-
| '''Outils de déploiement''' || Helm, YAML, ArgoCD, Juju || Ansible, Terraform, Juju || CloudFormation, Terraform, Juju || Ansible, Shell || xCAT, Clush || Ansible, Shell || Ansible, Python
|-
| '''Méthode de bootstrap''' || API || API, PXE || API || PXE, IPMI || PXE, IPMI || PXE, IPMI || PXE, API
|-
| '''Contrôle routeur''' || Kube-router || Router/Subnet API || Route Table / Subnet API || Linux, OVS || xCAT || Linux || API
|-
| '''Contrôle firewall''' || Istio, NetworkPolicy || Security Groups API || Security Group API || Linux firewall || Linux firewall || Linux firewall || API
|-
| '''Virtualisation réseau''' || VLAN, VxLAN || VPC || VPC || OVS, Linux || xCAT || Linux || API
|-
| '''DNS''' || CoreDNS || DNS-Nameserver || Route 53 || GDNS || xCAT || Linux || API
|-
| '''Load balancer''' || Kube-proxy, LVS || LVS || Network Load Balancer || LVS || SLURM || Ldirectord || N/A
|-
| '''Stockage''' || Local, cloud, PVC || Swift, Cinder, Nova || S3, EFS, EBS, FSx || Swift, XFS, EXT4, RAID10 || GPFS || SAN || NFS, SAN
|}

Cette table sert de point de départ pour choisir la bonne stack selon :
* le niveau de contrôle souhaité,
* le contexte (on-prem, cloud public, HPC…),
* les outils d’automatisation existants.

----

= Haute disponibilité, HPC &amp; DevSecOps =

== Haute disponibilité avec Corosync &amp; Pacemaker ==
[[File:HA-REF.drawio.png|400px|HA cluster architecture]]

Principes :
* clusters multi-nœuds ou multi-sites,
* fencing via IPMI,
* provisioning PXE / NTP / DNS / TFTP,
* pour 2 nœuds : attention au split-brain,
* 3 nœuds ou plus recommandés en production.

=== Ressources fréquentes ===
* multipath, LUNs, LVM, NFS,
* processus applicatifs,
* IP virtuelles, DNS, listeners réseau.

== HPC ==
[[File:HPC.drawio.png|400px|Overview of an HPC cluster]]

* orchestration de jobs (SLURM ou équivalent),
* stockage partagé haute performance,
* intégration possible avec des workloads IA.

== DevSecOps ==
[[File:DSO-POC-V3.drawio.png|400px|DevSecOps reference design]]

* CI/CD avec contrôles de sécurité intégrés,
* observabilité dès la conception,
* scans de vulnérabilité,
* gestion des secrets,
* policy-as-code.

----

= News &amp; trends =

* [https://www.youtube.com/@lev-selector/videos Top AI News]
* [https://betterprogramming.pub/color-your-captions-streamlining-live-transcriptions-with-diart-and-openais-whisper-6203350234ef Real-time transcription with Diart + Whisper]
* [https://github.com/openai-translator/openai-translator OpenAI Translator]
* [https://opensearch.org/docs/latest/search-plugins/conversational-search Opensearch with LLM]

----

= Formation &amp; apprentissage =

* [https://www.youtube.com/watch?v=4Bdc55j80l8 Transformers Explained]
* Labs, scripts et retours d’expérience concrets dans le projet Cloud Lab

----

= Liens cloud &amp; IT utiles =

* [https://cloud.google.com/free/docs/aws-azure-gcp-service-comparison Cloud Providers Compared]
* [https://global-internet-map-2021.telegeography.com/ Global Internet Topology Map]
* [https://landscape.cncf.io/?fullscreen=yes CNCF Official Landscape]
* [https://wikitech.wikimedia.org/wiki/Wikimedia_infrastructure Wikimedia Cloud Wiki]
* [https://openapm.io OpenAPM]
* [https://access.redhat.com/downloads/content/package-browser Red Hat Package Browser]
* [https://www.silkhom.com/barometre-2021-des-tjm-dans-informatique-digital Baromètre TJM IT]
* [https://www.glassdoor.fr/salaire/Hays-Salaires-E10166.htm Indicateurs salariaux IT]

----

= Outils collaboratifs =

== Dépôts de code ==
* [https://github.com/ynotopec GitHub ynotopec]

== Base de connaissance ==
* ce wiki

== Messagerie ==
* contact interne / support selon les projets

== SSO ==
* [https://auth-lab.ailab.infocepo.com:wait-2026-06/auth Keycloak]

== MLflow ==
* [[MLFlow|MLFlow]]

----

= À propos &amp; contributions =

Suggestions de corrections, améliorations de schémas, retours d’expérience ou nouveaux labs bienvenus.

Ce wiki a vocation à rester un '''laboratoire vivant''' pour l’IA, le cloud et l’automatisation.</text>
      <sha1>f2zgklcr9vq4agu0rs99uirchaar6so</sha1>
    </revision>
  </page>
</mediawiki>
