Concepts and Architecture of LLMaaS
Overview
The LLMaaS (Large Language Models as a Service) service by Cloud Temple provides secure and sovereign access to the most advanced artificial intelligence models, with the SecNumCloud certification from ANSSI.
🏗️ Technische Architektur
Cloud Infrastructure Temple
Hauptkomponenten
1. API Gateway LLMaaS
- OpenAI-kompatibel : Nahtlose Integration in bestehende Ökosysteme
- Rate Limiting : Verwaltung von Quoten je Abonnementstier
- Load Balancing : Intelligente Verteilung auf 12 GPU-Server
- Monitoring : Echtzeit-Metriken und Alarmierung
2. Authentication Service
- Secure API Tokens: Automatic rotation
- Access Control: Granular permissions per model
- Audit Trails: Full access traceability
🤖 Models and Tokens
Model Catalog
Complete catalog: List of models
Token Management
Token Types
- Input Tokens: Your prompt and context
- Output Tokens: Response generated by the model
- System Tokens: Metadata and instructions
Cost Calculation
Total cost = (Input tokens × 1.9€/M) + (Output tokens × 8€/M) + (Reasoning output tokens × 8€/M)
Optimierung
- Contextfenster: Wiederverwenden Sie Gespräche, um Kosten zu sparen
- Passende Modelle: Wählen Sie die Größe entsprechend der Komplexität
- Maximale Tokens: Begrenzen Sie die Länge der Antworten
Tokenisierung
# Beispiel zur Schätzung von Tokens
def estimate_tokens(text: str) -> int:
"""Approximative Schätzung: 1 Token ≈ 4 Zeichen"""
return len(text) // 4
prompt = "Erklären Sie die Photosynthese"
response_max = 200 # maximal gewünschte Tokens
estimated_input = estimate_tokens(prompt) # ~6 Tokens
total_cost = (estimated_input * 1.9 + response_max * 8) / 1_000_000
print(f"Geschätzter Kostenbetrag: {total_cost:.6f}€")
🔒 Security and Compliance
SecNumCloud Certification
The LLMaaS service is hosted on a technical infrastructure that holds the SecNumCloud 3.2 certification from ANSSI, ensuring:
Data Protection
- End-to-end Encryption: TLS 1.3 for all communications
- Secure Storage: Data encrypted at rest (AES-256)
- Isolation: Dedicated environments per tenant
Digital Sovereignty
- Hosting in France: Cloud Temple data centers certified
- French law: Native GDPR compliance
- No exposure: No data transfers to foreign clouds
Audit and Traceability
- Complete logs: All interactions tracked
- Retention: Stored according to legal policies
- Compliance: Audit reports available
Security Controls
Prompt Security
Prompt analysis is a native and integrated security feature of the LLMaaS platform. Enabled by default, it aims to detect and prevent attempts at "jailbreaking" or injecting malicious prompts before they even reach the model. This protection is based on a multi-layered approach.
It is possible to disable this security analysis for very specific use cases, although this is not recommended. For any questions regarding this or to request deactivation, please contact Cloud Temple support.
1. Strukturelle Analyse (check_structure)
- Überprüfung auf fehlerhaftes JSON: Das System erkennt, ob der Prompt mit einem
{beginnt und versucht, ihn als JSON zu parsen. Wenn der Parsevorgang erfolgreich ist und der JSON verdächtige Schlüsselwörter enthält (z. B. "system", "bypass"), oder wenn der Parsevorgang unerwartet fehlschlägt, kann dies auf eine Injektionsversuch hinweisen. - Unicode-Normalisierung: Der Prompt wird mittels
unicodedata.normalize('NFKC', prompt)normalisiert. Wenn sich der ursprüngliche Prompt von seiner normalisierten Version unterscheidet, kann dies auf die Verwendung von täuschenden Unicode-Zeichen (Homoglyphen) hindeuten, um Filter zu umgehen. Beispielsweise "аdmin" (kyrillisch) anstelle von "admin" (lateinisch).
2. Detection von verdächtigen Mustern (check_patterns)
- Das System verwendet reguläre Ausdrücke (
regex), um bekannte Angriffsmuster bei Prompt-Attacken zu erkennen, und zwar in mehreren Sprachen (Französisch, Englisch, Chinesisch, Arbeitspraktiken). - Beispiele für erkannte Muster:
- Systembefehle: Schlüsselwörter wie „ignore the instructions“, „ignore instructions“, „忽略指令“, „指示を無視“.
- HTML-Injektion: Versteckte oder schädliche HTML-Tags, beispielsweise
<div hidden>,<hidden div>. - Markdown-Injektion: Schädliche Markdown-Links, beispielsweise
[text](javascript:...),[text](data:...). - Wiederholte Sequenzen: Übermäßige Wiederholung von Wörtern oder Sätzen wie „forget forget forget“, „oublie oublie oublie“.
- Spezielle/Mischzeichen: Verwendung ungewöhnlicher Unicode-Zeichen oder Mischung verschiedener Schriftsysteme, um Befehle zu verschleiern (z. B. „s\u0443stème“).
3. Behavioral Analysis (check_behavior)
- The load balancer maintains a history of recent prompts.
- Fragmentation Detection: It combines recent prompts to check whether an attack is fragmented across multiple requests. For example, if "ignore" is sent in one prompt and "instructions" in the next, the system can detect them together.
- Repetition Detection: It identifies if the same prompt is repeated excessively. The current threshold for repetition detection is 30 consecutive identical prompts.
This multi-layered approach enables the detection of a wide range of prompt attacks, from the simplest to the most sophisticated, by combining static content analysis with dynamic behavioral analysis.
📈 Leistungsfähigkeit und Skalierbarkeit
Real-time Monitoring
Access via Cloud Temple Console:
- Usage metrics per model
- Latency and throughput graphs
- Alerts on performance thresholds
- Request history
🌐 Integration und Ökosystem
OpenAI-Kompatibilität
Der LLMaaS-Service ist kompatibel mit der OpenAI-API:
# Transparente Migration
from openai import OpenAI
# Vorher (OpenAI)
client_openai = OpenAI(api_key="sk-...")
# After (Cloud Temple LLMaaS)
client_ct = OpenAI(
api_key="your-cloud-temple-token",
base_url="https://api.ai.cloud-temple.com/v1"
)
# Identischer Code!
response = client_ct.chat.completions.create(
model="granite3.3:8b", # Cloud-Temple-Modell
messages=[{"role": "user", "content": "Hallo"}]
)
Supported Ecosystem
AI Frameworks
- ✅ LangChain : Native integration
- ✅ Haystack : Document pipelines
- ✅ Semantic Kernel : Microsoft orchestration
- ✅ AutoGen : Conversational agents
Entwicklungstools
- ✅ Jupyter : Interaktive Notebooks
- ✅ Streamlit : Schnelle Webanwendungen
- ✅ Gradio : Benutzeroberflächen für KI
- ✅ FastAPI : Backend-APIs
No-Code-Plattformen
- ✅ Zapier : Automatisierungen
- ✅ Make : Visuelle Integrationen
- ✅ Bubble : Webanwendungen
🔄 Lebenszyklus von Modellen
Model Updates
Versioning Policy
- Stable models: Fixed versions available for 6 months
- Experimental models: Beta versions for early adopters
- Deprecation: 3-month notice before removal
- Migration: Professional services available to support your transitions
Vorhersehbarer Lebenszyklus
Die folgende Tabelle zeigt den vorhersehbaren Lebenszyklus unserer Modelle. Das Ökosystem der generativen KI entwickelt sich sehr schnell, was zu scheinbar kurzen Lebenszyklen führen kann. Unser Ziel ist es, Ihnen Zugang zu den leistungsstärksten Modellen derzeit zu gewähren.
Dennoch verpflichten wir uns, die Modelle, die am häufigsten von unseren Kunden genutzt werden, über einen längeren Zeitraum zu erhalten. Für kritische Anwendungsfälle, die eine langfristige Stabilität erfordern, sind erweiterte Support-Phasen möglich. Zögern Sie nicht, den Support zu kontaktieren, um Ihre spezifischen Anforderungen zu besprechen.
Dieser Plan wird als Richtwert bereitgestellt und wird zu Beginn jedes Quartals überprüft.
- DMP (Datum der Markteinführung): Das Datum, ab dem das Modell in der Produktion verfügbar ist.
- DSP (Datum des Support-Endes): Das vorhersehbare Datum, ab dem das Modell nicht mehr gewartet wird. Ein Vorlaufzeitraum von 3 Monaten wird eingehalten, bevor das Modell endgültig entfernt wird.
| Modell | Herausgeber | Phase | DMP | DSP | LTS | Empfohlene Migration |
|---|---|---|---|---|---|---|
| devstral:24b | Mistral AI & All Hands AI | Produktion | 13/06/2025 | 30/03/2026 | Nein | devstral-small-2:24b |
| granite3.1-moe:2b | IBM | Produktion | 13/06/2025 | 30/03/2026 | Nein | granite4-tiny-h:7b |
| qwen3-coder:30b | Qwen Team | Produktion | 02/08/2025 | 30/03/2026 | Nein | qwen-coder-next:80b |
| qwen3:30b-a3b | Qwen Team | Produktion | 30/08/2025 | 30/03/2026 | Nein | qwen3-next:80b |
| cogito:32b | Deep Cogito | Produktion | 13/06/2025 | 30/06/2026 | Nein | gpt-oss:120b |
| gemma3:27b | Produktion | 13/06/2025 | 30/06/2026 | Nein | ||
| glm-4.7-flash:30b | Zhipu AI | Produktion | 22/01/2026 | 30/06/2026 | Nein | |
| medgemma:27b | Produktion | 02/12/2025 | 30/06/2026 | Nein | ||
| ministral-3:14b | Mistral AI | Production | 30/12/2025 | 30/06/2026 | No | |
| ministral-3:3b | Mistral AI | Production | 30/12/2025 | 30/06/2026 | No | |
| ministral-3:8b | Mistral AI | Production | 30/12/2025 | 30/06/2026 | No | |
| nemotron3-nano:30b | NVIDIA | Production | 04/01/2026 | 30/06/2026 | No | |
| olmo-3:32b | AllenAI | Production | 30/12/2025 | 30/06/2026 | No | |
| olmo-3:7b | AllenAI | Production | 30/12/2025 | 30/06/2026 | No | |
| qwen3-omni:30b | Equipo Qwen | Producción | 05/01/2026 | 30/06/2026 | No | |
| qwen3-vl:235b | Equipo Qwen | Producción | 04/01/2026 | 30/06/2026 | No | |
| qwen3-vl:2b | Equipo Qwen | Producción | 30/12/2025 | 30/06/2026 | No | |
| qwen3-vl:32b | Equipo Qwen | Producción | 30/12/2025 | 30/06/2026 | No | |
| qwen3-vl:8b | Equipo Qwen | Producción | 05/01/2026 | 30/06/2026 | No | |
| rnj-1:8b | Essential AI | Production | 30/12/2025 | 30/06/2026 | No | |
| devstral-small-2:24b | Mistral AI & All Hands AI | Producción | 02/02/2026 | 30/09/2026 | No | |
| gpt-oss:20b | OpenAI | Production | 08/08/2025 | 30/09/2026 | No | |
| granite4-small-h:32b | IBM | Production | 03/10/2025 | 30/09/2026 | No | |
| granite4-tiny-h:7b | IBM | Production | 03/10/2025 | 30/09/2026 | No | |
| mistral-small3.2:24b | Mistral AI | Production | 23/06/2025 | 30/09/2026 | No | |
| deepseek-ocr | DeepSeek AI | Production | 22/11/2025 | 30/12/2026 | No | |
| functiongemma:270m | Production | 30/12/2025 | 30/12/2026 | No | ||
| granite3.2-vision:2b | IBM | Production | 13/06/2025 | 30/12/2026 | No | |
| qwen-coder-next:80b | Equipo Qwen | Producción | 04/02/2026 | 30/12/2026 | No | |
| qwen3-next:80b | Equipo Qwen | Producción | 02/02/2026 | 30/12/2026 | No | |
| qwen3-vl:30b | Equipo Qwen | Producción | 30/12/2025 | 30/12/2026 | No | |
| qwen3-vl:4b | Equipo Qwen | Producción | 30/12/2025 | 30/12/2026 | No | |
| qwen3:0.6b | Equipo Qwen | Producción | 13/06/2025 | 30/12/2026 | No | |
| translategemma:12b | Production | 22/01/2026 | 30/12/2026 | No | ||
| translategemma:27b | Production | 22/01/2026 | 30/12/2026 | No | ||
| translategemma:4b | Production | 22/01/2026 | 30/12/2026 | No | ||
| bge-m3:567m | BAAI | Producción | 18/10/2025 | 30/12/2027 | Sí | |
| embeddinggemma:300m | Producción | 10/09/2025 | 30/12/2027 | Sí | ||
| gpt-oss:120b | OpenAI | Producción | 11/11/2025 | 30/12/2027 | Sí | |
| granite-embedding:278m | IBM | Producción | 13/06/2025 | 30/12/2027 | Sí | |
| llama3.3:70b | Meta | Producción | 13/06/2025 | 30/12/2027 | Sí | |
| qwen3-2507-gptq:235b | Equipo Qwen | Producción | 04/01/2026 | 30/12/2027 | Sí | |
| qwen3-2507-think:4b | Equipo Qwen | Producción | 31/08/2025 | 30/12/2027 | Sí |
Legend
- Phase: Model-Lebenszyklus (Evaluierung, Produktion, Veraltet)
- DMP: Datum der Produktionsbereitstellung
- DSP: Voraussichtliches Löschdatum
- LTS: Long Term Support. LTS-Modelle bieten garantierte Stabilität und erweiterten Support, ideal für kritische Anwendungen.
- Empfohlene Migration: Empfohlenes Modell zum Ersetzen eines veralteten Modells.
Den Echtzeit-Status des Lebenszyklus finden Sie auf der Seite: LLMaaS Status - Lebenszyklus
Deprecated Models
The world of LLMs is evolving rapidly. To ensure our customers have access to the most advanced technologies, we regularly deprecate models that no longer meet current standards or are no longer in use. The models listed below are no longer available on the public platform. However, they can be reactivated for specific projects upon request.
| Modell | Status | Deprecation-Datum |
|---|---|---|
| deepseek-r1:14b | Veraltet | 30/12/2025 |
| deepseek-r1:32b | Veraltet | 30/12/2025 |
| gemma3:1b | Veraltet | 30/12/2025 |
| gemma3:4b | Veraltet | 30/12/2025 |
| qwen3:0.6b | Veraltet | 30/12/2025 |
| qwen3:1.7b | Veraltet | 30/12/2025 |
| qwen3:14b | Veraltet | 30/12/2025 |
| qwen3:30b-a3b | Veraltet | 30/12/2025 |
| qwen3:4b | Veraltet | 30/12/2025 |
| qwen3:8b | Veraltet | 30/12/2025 |
| qwen3:32b | Veraltet | 30/12/2025 |
| qwq:32b | Veraltet | 30/12/2025 |
| granite3.3:2b | Veraltet | 30/12/2025 |
| granite3.3:8b | Veraltet | 30/12/2025 |
| mistral-small3.1:24b | Veraltet | 30/12/2025 |
| qwen2.5vl:32b | Veraltet | 30/12/2025 |
| qwen2.5vl:3b | Veraltet | 30/12/2025 |
| qwen2.5vl:72b | Veraltet | 30/12/2025 |
| qwen2.5vl:7b | Veraltet | 30/12/2025 |
| cogito:8b | Veraltet | 30/12/2025 |
| deepcoder:14b | Veraltet | 30/12/2025 |
| cogito:3b | Veraltet | 30/12/2025 |
| qwen3:235b | Veraltet | 22/11/2025 |
| qwen3-2507-think:30b-a3b | Veraltet | 14/11/2025 |
| gemma3:12b | Veraltet | 21/11/2025 |
| cogito:14b | Veraltet | 17/10/2025 |
| deepseek-r1:70b | Veraltet | 17/10/2025 |
| granite3.1-moe:3b | Veraltet | 17/10/2025 |
| llama3.1:8b | Veraltet | 17/10/2025 |
| phi4-reasoning:14b | Veraltet | 17/10/2025 |
| qwen2.5:0.5b | Veraltet | 17/10/2025 |
| qwen2.5:1.5b | Veraltet | 17/10/2025 |
| qwen2.5:14b | Veraltet | 17/10/2025 |
| qwen2.5:32b | Veraltet | 17/10/2025 |
| qwen2.5:3b | Veraltet | 17/10/2025 |
| deepseek-r1:671b | Veraltet | 17/10/2025 |
💡 Best Practices
To get the most out of the LLMaaS API, it is essential to adopt strategies for optimizing costs, performance, and security.
Kostenoptimierung
Die Kostenkontrolle basiert auf einer intelligenten Nutzung von Tokens und Modellen.
-
Modellauswahl: Verwenden Sie kein übermächtiges Modell für einfache Aufgaben. Ein größeres Modell ist leistungsfähiger, aber auch langsamer und verbraucht deutlich mehr Energie, was sich direkt auf die Kosten auswirkt. Passen Sie die Modellgröße an die Komplexität Ihrer Anforderung an, um ein optimales Gleichgewicht zu erreichen.
Beispiel: Für die Verarbeitung einer Million Tokens:
Gemma 3 1Bverbraucht 0,15 kWh.Llama 3.3 70Bverbraucht 11,75 kWh, also 78-mal mehr.
# Für eine Sentiment-Analyse reicht ein kompaktes Modell aus und ist wirtschaftlich.
if task == "sentiment_analysis":
model = "granite3.3:2b"
# Für eine komplexe juristische Analyse ist ein größeres Modell erforderlich.
elif task == "legal_analysis":
model = "deepseek-r1:70b" -
Context-Management: Der Gesprächsverlauf (
messages) wird bei jedem Aufruf zurückgesendet und verbraucht Eingabetokens. Bei langen Gesprächen sollten Strategien wie Zusammenfassung oder Fensterung in Betracht gezogen werden, um nur relevante Informationen zu speichern.# Bei langen Gesprächen kann man die ersten Austausche zusammenfassen.
messages = [
{"role": "system", "content": "Sie sind ein KI-Assistent."},
{"role": "user", "content": "Zusammenfassung der ersten 10 Austausche..."},
{"role": "assistant", "content": "Ok, ich habe den Kontext."},
{"role": "user", "content": "Hier ist meine neue Frage."}
] -
Beschränkung der Ausgabetokens: Verwenden Sie stets den Parameter
max_tokens, um zu lange und kostspielige Antworten zu vermeiden. Legen Sie eine angemessene Obergrenze basierend auf Ihren Erwartungen fest.# Maximal 100 Wörter für eine Zusammenfassung anfordern.
response = client.chat.completions.create(
model="granite3.3:8b",
messages=[{"role": "user", "content": "Fassen Sie dieses Dokument zusammen..."}],
max_tokens=150, # Puffer für ca. 100 Wörter
)
Leistung
Die Reaktionsfähigkeit Ihrer Anwendung hängt davon ab, wie Sie API-Aufrufe verwalten.
-
Asynchrone Anfragen: Um mehrere Anfragen zu verarbeiten, ohne auf das Ende jeder einzelnen warten zu müssen, verwenden Sie asynchrone Aufrufe. Dies ist besonders nützlich für Backend-Anwendungen, die eine große Anzahl gleichzeitiger Anfragen verarbeiten müssen.
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key="...", base_url="...")
async def process_prompt(prompt: str):
# Verarbeitet eine einzelne Anfrage asynchron
response = await client.chat.completions.create(model="granite3.3:8b", messages=[{"role": "user", "content": prompt}])
return response.choices[0].message.content
async def batch_requests(prompts: list):
# Startet mehrere Aufgaben parallel und wartet auf deren Abschluss
tasks = [process_prompt(p) for p in prompts]
return await asyncio.gather(*tasks) -
Streaming für die Benutzererfahrung (UX): Für Benutzeroberflächen (Chatbots, Assistenten) ist Streaming unerlässlich. Es ermöglicht die schrittweise Anzeige der Modellantwort Buchstabe für Buchstabe, was den Eindruck einer sofortigen Reaktion vermittelt, anstatt auf die vollständige Antwort warten zu müssen.
# Zeigt die Antwort in Echtzeit in einer Benutzeroberfläche an
response_stream = client.chat.completions.create(
model="granite3.3:8b",
messages=[{"role": "user", "content": "Erzähl mir eine Geschichte."}],
stream=True
)
for chunk in response_stream:
if chunk.choices[0].delta.content:
# Zeigt den Textabschnitt in der UI an
print(chunk.choices[0].delta.content, end="", flush=True)
Sicherheit
Die Sicherheit Ihrer Anwendung ist von entscheidender Bedeutung, besonders wenn Sie Benutzereingaben verarbeiten.
-
Validation and Data Cleansing (Sanitization): Never trust user input. Before transmitting it to the API, sanitize it to remove potentially harmful code or "prompt injection" instructions. Also limit the length to prevent abuse.
def sanitize_input(user_input: str) -> str:
# Simple example: Removing code formatting and limiting the length.
# For advanced sanitization, more robust libraries can be used.
cleaned = user_input.replace("`", "").replace("'", "").replace("\"", "")
return cleaned[:2000] # Begrenzung auf 2000 Zeichen -
Robuste Fehlerbehandlung: Umgeben Sie alle API-Aufrufe immer mit
try...except-Blöcken, um Netzwerkfehler, API-Fehler (z. B. 429 Rate Limit, 500 Internal Server Error) zu behandeln und eine degradierte, aber funktionale Benutzererfahrung zu gewährleisten.from openai import APIError, APITimeoutError
try:
response = client.chat.completions.create(...)
except APITimeoutError:
# Behandlung des Falls, dass die Anfrage zu lange dauert
return "Der Dienst benötigt länger als erwartet, bitte versuchen Sie es erneut."
except APIError as e:
# Behandlung spezifischer API-Fehler
logger.error(f"API-Fehler LLMaaS: {e.status_code} - {e.message}")
return "Entschuldigung, es ist ein Fehler mit dem KI-Service aufgetreten."
except Exception as e:
# Behandlung aller anderen Fehler (Netzwerk usw.)
logger.error(f"Ein unerwarteter Fehler ist aufgetreten: {e}")
return "Entschuldigung, ein unerwarteter Fehler ist aufgetreten."