Zum Hauptinhalt springen

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

Technical Architecture of LLMaaS Cloud 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

Security Controls LLMaaS

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.

Contact Support for Disabling

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

LLMaaS Model Lifecycle

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.
ModellHerausgeberPhaseDMPDSPLTSEmpfohlene Migration
devstral:24bMistral AI & All Hands AIProduktion13/06/202530/03/2026Neindevstral-small-2:24b
granite3.1-moe:2bIBMProduktion13/06/202530/03/2026Neingranite4-tiny-h:7b
qwen3-coder:30bQwen TeamProduktion02/08/202530/03/2026Neinqwen-coder-next:80b
qwen3:30b-a3bQwen TeamProduktion30/08/202530/03/2026Neinqwen3-next:80b
cogito:32bDeep CogitoProduktion13/06/202530/06/2026Neingpt-oss:120b
gemma3:27bGoogleProduktion13/06/202530/06/2026Nein
glm-4.7-flash:30bZhipu AIProduktion22/01/202630/06/2026Nein
medgemma:27bGoogleProduktion02/12/202530/06/2026Nein
ministral-3:14bMistral AIProduction30/12/202530/06/2026No
ministral-3:3bMistral AIProduction30/12/202530/06/2026No
ministral-3:8bMistral AIProduction30/12/202530/06/2026No
nemotron3-nano:30bNVIDIAProduction04/01/202630/06/2026No
olmo-3:32bAllenAIProduction30/12/202530/06/2026No
olmo-3:7bAllenAIProduction30/12/202530/06/2026No
qwen3-omni:30bEquipo QwenProducción05/01/202630/06/2026No
qwen3-vl:235bEquipo QwenProducción04/01/202630/06/2026No
qwen3-vl:2bEquipo QwenProducción30/12/202530/06/2026No
qwen3-vl:32bEquipo QwenProducción30/12/202530/06/2026No
qwen3-vl:8bEquipo QwenProducción05/01/202630/06/2026No
rnj-1:8bEssential AIProduction30/12/202530/06/2026No
devstral-small-2:24bMistral AI & All Hands AIProducción02/02/202630/09/2026No
gpt-oss:20bOpenAIProduction08/08/202530/09/2026No
granite4-small-h:32bIBMProduction03/10/202530/09/2026No
granite4-tiny-h:7bIBMProduction03/10/202530/09/2026No
mistral-small3.2:24bMistral AIProduction23/06/202530/09/2026No
deepseek-ocrDeepSeek AIProduction22/11/202530/12/2026No
functiongemma:270mGoogleProduction30/12/202530/12/2026No
granite3.2-vision:2bIBMProduction13/06/202530/12/2026No
qwen-coder-next:80bEquipo QwenProducción04/02/202630/12/2026No
qwen3-next:80bEquipo QwenProducción02/02/202630/12/2026No
qwen3-vl:30bEquipo QwenProducción30/12/202530/12/2026No
qwen3-vl:4bEquipo QwenProducción30/12/202530/12/2026No
qwen3:0.6bEquipo QwenProducción13/06/202530/12/2026No
translategemma:12bGoogleProduction22/01/202630/12/2026No
translategemma:27bGoogleProduction22/01/202630/12/2026No
translategemma:4bGoogleProduction22/01/202630/12/2026No
bge-m3:567mBAAIProducción18/10/202530/12/2027
embeddinggemma:300mGoogleProducción10/09/202530/12/2027
gpt-oss:120bOpenAIProducción11/11/202530/12/2027
granite-embedding:278mIBMProducción13/06/202530/12/2027
llama3.3:70bMetaProducción13/06/202530/12/2027
qwen3-2507-gptq:235bEquipo QwenProducción04/01/202630/12/2027
qwen3-2507-think:4bEquipo QwenProducción31/08/202530/12/2027

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.

ModellStatusDeprecation-Datum
deepseek-r1:14bVeraltet30/12/2025
deepseek-r1:32bVeraltet30/12/2025
gemma3:1bVeraltet30/12/2025
gemma3:4bVeraltet30/12/2025
qwen3:0.6bVeraltet30/12/2025
qwen3:1.7bVeraltet30/12/2025
qwen3:14bVeraltet30/12/2025
qwen3:30b-a3bVeraltet30/12/2025
qwen3:4bVeraltet30/12/2025
qwen3:8bVeraltet30/12/2025
qwen3:32bVeraltet30/12/2025
qwq:32bVeraltet30/12/2025
granite3.3:2bVeraltet30/12/2025
granite3.3:8bVeraltet30/12/2025
mistral-small3.1:24bVeraltet30/12/2025
qwen2.5vl:32bVeraltet30/12/2025
qwen2.5vl:3bVeraltet30/12/2025
qwen2.5vl:72bVeraltet30/12/2025
qwen2.5vl:7bVeraltet30/12/2025
cogito:8bVeraltet30/12/2025
deepcoder:14bVeraltet30/12/2025
cogito:3bVeraltet30/12/2025
qwen3:235bVeraltet22/11/2025
qwen3-2507-think:30b-a3bVeraltet14/11/2025
gemma3:12bVeraltet21/11/2025
cogito:14bVeraltet17/10/2025
deepseek-r1:70bVeraltet17/10/2025
granite3.1-moe:3bVeraltet17/10/2025
llama3.1:8bVeraltet17/10/2025
phi4-reasoning:14bVeraltet17/10/2025
qwen2.5:0.5bVeraltet17/10/2025
qwen2.5:1.5bVeraltet17/10/2025
qwen2.5:14bVeraltet17/10/2025
qwen2.5:32bVeraltet17/10/2025
qwen2.5:3bVeraltet17/10/2025
deepseek-r1:671bVeraltet17/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.

  1. 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 1B verbraucht 0,15 kWh.
    • Llama 3.3 70B verbraucht 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"
  2. 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."}
    ]
  3. 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.

  1. 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)
  2. 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.

  1. 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
  2. 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."