|
|
| Line 192: |
Line 192: |
| * [https://github.com/alibaba/page-agent '''page-agent''' ] - Agent GUI en-page JavaScript. Controlez les interfaces web en langage naturel. | | * [https://github.com/alibaba/page-agent '''page-agent''' ] - Agent GUI en-page JavaScript. Controlez les interfaces web en langage naturel. |
| * [https://github.com/BuilderIO/agent-native '''agent-native''' ] - Framework pour construire des applications natives pour agents IA. | | * [https://github.com/BuilderIO/agent-native '''agent-native''' ] - Framework pour construire des applications natives pour agents IA. |
| === Audio & TTS ===
| | * [https://github.com/earendil-works/pi '''pi''' ] — Toolkit agent IA : API LLM unifiée, boucle agent, TUI et CLI de codage en une seule stack. |
| * [https://huggingface.co/Supertone/supertonic-3 '''Supertonic-3'''] — TTS léger pour inférence locale, ONNX Runtime, zéro cloud
| | * [https://github.com/tirth8205/code-review-graph '''code-review-graph''' ] — Grappe de code locale persistante pour MCP et CLI — réduction de contexte 8.2x pour revue de code IA. |
| * [https://github.com/SYSTRAN/faster-whisper '''faster-whisper (mutualisé)'''] — Transcription speech-to-text optimisée | | * [https://github.com/openinterpreter/openinterpreter '''openinterpreter''' ] — Agent de codage open-source pour modèles ouverts (Deepseek, Kimi, Qwen) avec exécution terminal. |
| * [https://huggingface.co/Qwen/Qwen3-Omni-30B-A3B-Instruct '''Qwen3-Omni-30B-A3B-Instruct'''] — Modèle multimodal Qwen (audio + texte + image)
| | * [https://github.com/openai/codex '''codex (OpenAI)''' ] — Agent de codage léger d'OpenAI qui s'exécute directement dans le terminal. |
| * '''nemotron-3.5-asr-streaming-0.6b''' — Modèle ASR streaming NVIDIA, faible latence pour transcription temps réel
| | * [https://github.com/ibelick/ui-skills '''ui-skills''' ] — Compétences de design pour ingénieurs UI : audits, systèmes de design et refactoring visuel. |
| | | * [https://github.com/kangarooking/cangjie-skill '''cangjie-skill''' ] — Transformer livres, podcasts et vidéos en compétences AI exécutables pour agents de codage. |
| === Génération & Édition d'Images ===
| | * [https://github.com/mattpocock/skills '''mattpocock/skills''' ] — Skills d'ingénierie pour agents IA — TDD, tests, design de codebase et modélisation de domaine. |
| * [https://huggingface.co/HiDream-ai/HiDream-O1-Image '''HiDream-O1-Image'''] — Modèle unifié pixel-level (UiT), sans VAE externe — t2i, édition, personnalisation jusqu'à 2048×2048
| | * [https://github.com/Nutlope/hallmark '''hallmark''' ] — Compétence de design anti-slop IA pour Claude Code, Cursor et Codex : tests de qualité et auto-critique intégrés. |
| | |
| === RAG & Traitement de Documents ===
| |
| * '''RAG sur PDF avec images'''
| |
| * [https://huggingface.co/ibm-granite/granite-docling-258M '''granite-docling-258M'''] — Parsing structuré de documents IBM Granite
| |
| * [https://github.com/deepset-ai/haystack '''Haystack'''] — Framework RAG end-to-end (deepset) | |
| * [https://github.com/mem0ai/mem0 '''Mem0'''] — Mémorie à long terme pour agents IA
| |
| * [https://github.com/meilisearch/meilisearch '''meilisearch'''] — Moteur de recherche full-text
| |
| | |
| | |
| * [https://github.com/Stirling-Tools/Stirling-PDF '''Stirling-PDF''' ] - Application PDF #1 sur GitHub : traitement complet des PDF sur tous les appareils.
| |
| === APIs à Développer ===
| |
| * '''Classificateur IA''' — Classification de contenu
| |
| * '''Résumé mutualisé''' — API de résumé de texte partagée
| |
| * '''NER''' — Reconnaissance d'entités nommées
| |
| * '''Compressor''' — Compression de contenu
| |
| | |
| === Infrastructure & Backend ===
| |
| | |
| * [https://github.com/diegosouzapw/OmniRoute '''OmniRoute''' ] — Passerelle IA gratuite : un endpoint, 231+ providers (50+ free), compression 15-95% tokens.
| |
| * [https://github.com/temporalio/temporal '''Temporal'''] — Orchestration de workflows critiques | |
| * [https://github.com/vllm-project/semantic-router '''Semantic Router'''] — Routage sémantique de requêtes vLLM
| |
| * [https://github.com/supabase/supabase '''Supabase'''] — Alternative open-source Firebase (PostgreSQL, Auth, etc.)
| |
| * [https://github.com/metabase/metabase '''Metabase'''] — Analytics et dashboards open-source
| |
| * [https://github.com/n8n-io/n8n '''N8N'''] — Workflow automation open-source | |
| * [https://github.com/n0-computer/iroh '''iroh''' ] - Stack reseau modulaire en Rust -- decentralise, base sur des cles plutot que des IP.
| |
| * [https://github.com/LMCache/LMCache '''LMCache''' ] - Couche KV cache ultra-rapide pour les LLM -- reduit drastiquement la latence d'inference. | |
| * [https://github.com/meshery/meshery '''Meshery''' ] - Gestionnaire cloud native open-source -- observabilite et orchestration multi-cluster.
| |
| === Outils Dev ===
| |
| * [https://github.com/Aider-AI/aider '''Aider'''] — Assistant de codage IA en ligne de commande
| |
| * [https://github.com/continuedev/continue '''Continue'''] — Extension IDE IA (VS Code, JetBrains)
| |
| * [https://modelcontextprotocol.io '''MCP LLM'''] — Modèle de langage via Model Context Protocol
| |
| | |
| = Assistants IA & outils cloud =
| |
| | |
| == Assistants IA ==
| |
| | |
| ; '''Assistants IA auto-hébergés'''
| |
| * [https://github.com/nesquena/hermes-webui Hermes WebUI] + [https://ollama.com Ollama] + GPU
| |
| : Stack typique pour assistant privé, API OpenAI-compatible et expérimentation locale.
| |
| | |
| == Développement, modèles & veille ==
| |
| | |
| ; '''Découverte de modèles'''
| |
| * [https://huggingface.co/models '''Models Trending''']
| |
| | |
| ; '''Évaluation & benchmarks'''
| |
| * [https://arena.ai/leaderboard/code '''Agentic Evaluation''']
| |
| | |
| ; '''Outils de développement & fine-tuning'''
| |
| * [https://github.com/trending?since=weekly '''Project Trending'''] | |
| * [https://grok.com '''News search''']
| |
| | |
| == Matériel IA & GPU ==
| |
| * NVIDIA GH200
| |
| * DGX Spark
| |
| * [https://www.mouser.fr/ProductDetail/BittWare/RS-GQ-GC1-0109?qs=ST9lo4GX8V2eGrFMeVQmFw%3D%3D GROQ LLM accelerator]
| |
| | |
| ----
| |
| | |
| = 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 || <code>wss://api-realtime-ai.ailab.infocepo.com:wait-2026-12/v1</code>
| |
| |-
| |
| | OPENAI_API_KEY || <code>sk-XXXXX</code>
| |
| |}
| |
| | |
| == Dépôt GitHub ==
| |
| * [https://github.com/ynotopec/api-realtime-ai ynotopec/api-realtime-ai]
| |
| | |
| == Page de test ==
| |
| * <code>external-test/half-duplex.html</code> — annulation d’écho + mode half-duplex.
| |
| | |
| == Compatibilité ==
| |
| Remplacer l’URL OpenAI par <code>$OPENAI_API_BASE</code> pour tester compatibilité et performances.
| |
| | |
| ----
| |
| | |
| = API LLM (OpenAI compatible) =
| |
| | |
| * URL de base : <code>https://api-nothink.ailab.infocepo.com/v1</code>
| |
| * Création du token : [https://llm-token.ailab.infocepo.com:wait-2026-12 OPENAI_API_KEY]
| |
| * Documentation : [https://api-nothink.ailab.infocepo.com/docs Documentation API]
| |
| | |
| == Liste des modèles ==
| |
| <pre>
| |
| curl -X GET \
| |
| 'https://api-nothink.ailab.infocepo.com/v1/models' \
| |
| -H 'Authorization: Bearer sk-XXXXX' \
| |
| -H 'accept: application/json' \
| |
| | jq | sed -rn 's#^.*id.*: "(.*)".*$#* \1#p' | sort -u
| |
| </pre>
| |
| | |
| == Modèles ouverts & endpoints internes ==
| |
| | |
| ''Dernière mise à jour : 2026-06-30''
| |
| | |
| Les modèles ci-dessous correspondent à des '''endpoints logiques''' exposés derrière une passerelle.
| |
| | |
| {| class="wikitable"
| |
| ! Endpoint !! Description / usage principal
| |
| |-
| |
| | '''ai-thinking''' || '''qwen3.6 fp8''' – thinking
| |
| |-
| |
| | '''ai-fast''' || '''qwen3.6 fp8''' en mode '''fast''' – vision/OCR/ai-default
| |
| |-
| |
| | '''ai-embedding''' || '''bge-m3''' – recherche sémantique
| |
| |-
| |
| | '''ai-stt''' || '''whisper3-turbo''' – transcription vocale multilingual
| |
| |-
| |
| | '''ai-tts''' || '''OmniVoice''' – TTS multilingual
| |
| |-
| |
| | '''ai-image''' || '''OpenDalle''' – image génération
| |
| |}
| |
| | |
| == Exemple bash ==
| |
| <pre>
| |
| export OPENAI_API_MODEL="ai-default"
| |
| export OPENAI_API_BASE="https://api-nothink.ailab.infocepo.com/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>/dev/null | jq '.choices[0].message.content'
| |
| </pre>
| |
| | |
| == Vue infra LLM ==
| |
| [[File:Litellm-proxy-mermaid-diagram-2024-03-24-205202.png|thumb|right]]
| |
| | |
| '''DEV (au choix)'''
| |
| * '''A.''' <code>LiteLLM → vLLM/SgLang</code> : tests perf / compatibilité
| |
| * '''B.''' <code>LiteLLM → Ollama</code> : simple, rapide à itérer
| |
| * '''C.''' <code>Ollama</code> direct : POC ultra-léger
| |
| | |
| '''DEV – modèle FR / résumé'''
| |
| * <code>LiteLLM → Ollama /v1</code>
| |
| | |
| '''PROD'''
| |
| * '''Standard :''' <code>LiteLLM → vLLM/SgLang</code>
| |
| * '''Pont DEV→PROD :''' <code>LiteLLM (DEV) → LiteLLM (PROD) → vLLM/SgLang</code>
| |
| | |
| '''Notes :'''
| |
| * '''LiteLLM''' = passerelle unique (clés, quotas, logs)
| |
| * '''vLLM/SgLang''' = 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é : <code>ai-vision</code> | |
| | |
| == Exemple bash ==
| |
| <pre>
| |
| OPENAI_API_KEY=sk-XXXXX
| |
| | |
| base64 -w0 "/path/to/image.png" > img.b64
| |
| | |
| jq -n --rawfile img img.b64 \
| |
| '{
| |
| model: "ai-vision",
| |
| messages: [
| |
| {
| |
| role: "user",
| |
| content: [
| |
| { "type": "text", "text": "Décris cette image." },
| |
| {
| |
| "type": "image_url",
| |
| "image_url": { "url": ("data:image/png;base64," + ($img | rtrimstr("\n"))) }
| |
| }
| |
| ]
| |
| }
| |
| ]
| |
| }' > payload.json
| |
| | |
| curl https://api-nothink.ailab.infocepo.com/v1/chat/completions \
| |
| -H "Authorization: Bearer $OPENAI_API_KEY" \
| |
| -H "Content-Type: application/json" \
| |
| --data-binary @payload.json
| |
| </pre>
| |
| | |
| == Exemple Python ==
| |
| <pre>
| |
| import base64
| |
| import json
| |
| import requests
| |
| import os
| |
| | |
| API_KEY = os.getenv("OPENAI_API_KEY")
| |
| MODEL = "ai-vision"
| |
| IMG_PATH = "/path/to/image.png"
| |
| API_URL = "https://api-nothink.ailab.infocepo.com/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}")
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = API STT =
| |
| | |
| * URL : <code>https://api-audio2txt.ailab.infocepo.com/v1</code>
| |
| * Clé : <code>OPENAI_API_KEY=sk-XXXXX</code>
| |
| * Modèle : <code>whisper-1</code>
| |
| * Documentation : [https://api-audio2txt.ailab.infocepo.com/docs API STT docs]
| |
| | |
| == Exemple Python ==
| |
| <pre>
| |
| import requests
| |
| | |
| OPENAI_API_KEY = 'sk-XXXXX'
| |
| | |
| url = 'https://api-audio2txt.ailab.infocepo.com/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())
| |
| </pre>
| |
| | |
| == Exemple curl ==
| |
| <pre>
| |
| [ ! -f /tmp/test.ogg ] && 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://api-audio2txt.ailab.infocepo.com/v1/audio/transcriptions \
| |
| -H "Authorization: Bearer $OPENAI_API_KEY" \
| |
| -F model="whisper-1" \
| |
| -F file="@/tmp/test.ogg"
| |
| </pre>
| |
| | |
| == 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 : <code>https://api-tts-omnivoice.ailab.infocepo.com/v1</code>
| |
| * Clé : <code>OPENAI_API_KEY=sk-XXXXX</code>
| |
| * Documentation : [https://api-tts-omnivoice.ailab.infocepo.com/docs API TTS docs]
| |
| | |
| == Exemple ==
| |
| <pre>
| |
| export OPENAI_API_KEY=sk-XXXXX
| |
| | |
| curl https://api-tts-omnivoice.ailab.infocepo.com/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 -
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = API Text to Image =
| |
| | |
| * URL : <code>https://api-txt2image.ailab.infocepo.com/v1</code>
| |
| * Clé API : <code>OPENAI_API_KEY=sk-...</code>
| |
| * Documentation : [https://api-txt2image.ailab.infocepo.com/docs API TXT2IMAGE docs]
| |
| | |
| == Exemple ==
| |
| <pre>
| |
| export OPENAI_API_KEY=EMPTY
| |
| | |
| curl https://api-txt2image.ailab.infocepo.com/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"
| |
| }'
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = API Diarization =
| |
| | |
| * Documentation : [https://api-diarization.ailab.infocepo.com/docs API Diarization docs]
| |
| | |
| == Exemple ==
| |
| <pre>
| |
| 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/upload-audio/" \
| |
| -H "Authorization: Bearer token1" \
| |
| -F "file=@/tmp/test.mp3"
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = API Summary =
| |
| | |
| * Documentation : [https://api-summary.ailab.infocepo.com:wait-2026-12/docs API Summary docs]
| |
| | |
| == Exemple ==
| |
| <pre>
| |
| 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-12/summary/ \
| |
| -H "Content-Type: application/json" \
| |
| -d "$json_payload"
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = API Text Embeddings =
| |
| | |
| * URL : <code>https://api-embedding.ailab.infocepo.com/v1</code>
| |
| * Documentation : [https://api-embedding.ailab.infocepo.com/docs Documentation]
| |
| | |
| == Exemple ==
| |
| <pre>
| |
| curl -k https://api-embedding.ailab.infocepo.com/v1/embeddings \
| |
| -X POST \
| |
| -d '{"model":"bge-m3","input":"What is Deep Learning?"}' \
| |
| -H 'Content-Type: application/json'
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = API DB Vectors (ChromaDB) =
| |
| | |
| == Production ==
| |
| * URL : <code>https://chromadb.ailab.infocepo.com:wait-2026-12</code>
| |
| * Token : <code>XXXXX</code>
| |
| | |
| == Lab ==
| |
| <pre>
| |
| export CHROMA_HOST=https://chromadb.c1.ailab.infocepo.com:wait-2026-12
| |
| export CHROMA_PORT=443
| |
| export CHROMA_TOKEN=XXXX
| |
| </pre>
| |
| | |
| == Exemple curl ==
| |
| <pre>
| |
| curl -v "${CHROMA_HOST}"/api/v1/collections \
| |
| -H "Authorization: Bearer ${CHROMA_TOKEN}"
| |
| </pre>
| |
| | |
| == Exemple Python ==
| |
| <pre>
| |
| 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)
| |
| </pre>
| |
| | |
| == Déployer sa propre instance ==
| |
| <pre>
| |
| export nameSpace=your_namespace
| |
| domainRoot=ailab.infocepo.com
| |
| | |
| 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"}]'
| |
| </pre>
| |
| | |
| == Récupérer le token ==
| |
| <pre>
| |
| kubectl --namespace ${nameSpace} get secret chromadb-auth \
| |
| -o jsonpath="{.data.token}" | base64 --decode && echo
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = Registry =
| |
| | |
| * URL : [https://registry.ailab.infocepo.com:wait-2026-09 registry.ailab.infocepo.com:wait-2026-09]
| |
| * Login : <code>user</code>
| |
| * Password : <code>XXXXX</code>
| |
| | |
| == Exemple ==
| |
| <pre>
| |
| curl -u "user:XXXXX" https://registry.ailab.infocepo.com:wait-2026-09/v2/_catalog
| |
| </pre>
| |
| | |
| == Exemple K8S ==
| |
| <pre>
| |
| deploymentName=
| |
| nameSpace=
| |
| | |
| kubectl -n ${nameSpace} create secret docker-registry pull-secret \
| |
| --docker-server=registry.ailab.infocepo.com:wait-2026-09 \
| |
| --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"}]}}}}'
| |
| </pre>
| |
| | |
| ----
| |
| | |
| = Stockage objet externe (S3) =
| |
| | |
| * Endpoint : <code>https://s3.ailab.infocepo.com:wait-2026-09</code>
| |
| * Access key : <code>XXXX</code>
| |
| * Secret key : <code>XXXX</code>
| |
| | |
| Un bucket nommé <code>ORG</code> a été créé pour stocker des documents de démonstration.
| |
| | |
| ----
| |
| | |
| = RAG optimisation =
| |
| | |
| * Embeddings : <code>BAAI/bge-m3</code>
| |
| * <code>chunk_size=1200</code>
| |
| * <code>chunk_overlap=100</code>
| |
| * LLM : <code>qwen3.6</code>
| |
| * Pour les PDF mixtes : '''PDF → image → OCR / VLM''' peut améliorer les résultats.
| |
| | |
| ----
| |
| | |
| = Workflow =
| |
| | |
| Autoroute directe : code → CI/CD → deploy → monitoring. Pas de comité, pas de responsable désigné — chaque étape se déclenche automatiquement si la précédente passe. Si ça rate, alerte directe sans passer par un humain sauf décision explicite de fallback.
| |
| | |
| ----
| |
| | |
| = Environnements =
| |
| | |
| == Hors production ==
| |
| * Utiliser [https://datalab.ailab.infocepo.com:wait-2026-12 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.
| |
| * Coût unitaire mesuré automatiquement (dashboards temps réel, pas Excel).
| |
|
| |
| ----
| |
| | |
| = Cloud Lab & 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
| |
| |}
| |
| | |
| | |
| '''Autonomie testée''' : vérifier que la migration fonctionne seule en tirant le repo et lançant le script, sans personne qui connaît le système de tête.
| |
| | |
| ----
| |
| | |
| = Architecture web & 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 & DevSecOps =
| |
| | |
| == Haute disponibilité avec Corosync & 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 & 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 & 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 & 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-12/auth Keycloak]
| |
| | |
| == MLflow ==
| |
| * [[MLFlow|MLFlow]]
| |
| | |
| ----
| |
| | |
| = À propos & 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.
| |