Open-Source · Apache 2.0

AI-Infrastruktur für die Schweiz

Die besten Open-Source-Tools, zu einem vollständigen Stack zusammengeführt. Alles läuft bei dir, nichts davon in einer fremden Cloud.

Swiss AI-Hub chat interface showing the Research Assistant with sidebar navigation and suggested prompts

Alles drin. Alles verbunden.

Swiss AI-Hub kombiniert die besten Open-Source-Tools zu einer produktionsreifen AI-Plattform. Fertig zum Einsatz, ohne monatelange Eigenintegration.

LLM Gateway & Inference

Ein einheitliches, OpenAI-kompatibles API für alle Provider. Modelle lokal auf GPU mit vLLM betreiben oder direkt an Swiss LLM Cloud routen. Kostentracking pro User ist dabei.

Data Pipelines

Asset-basierte Orchestrierung mit vollständiger Herkunftsverfolgung, vom Quelldokument bis zum fertigen Embedding. Über 70 Cloud-Storage-Provider lassen sich per Rclone anbinden.

Vector & Semantic Search

Embeddings speichern und schnelle Ähnlichkeitssuchen für RAG mit Milvus bereitstellen. Web-UI für Inspektion und Debugging ist inklusive.

Security & Datensouveränität

SSO via Keycloak, PII-Erkennung mit Presidio, TLS via Traefik. Jedes Byte bleibt unter Schweizer Jurisdiktion. Nichts verlässt dein Netzwerk.

Agent Memory & Wissen

Gedächtnis über Sessions hinweg, mit Faktenextraktion und Entitätsbeziehungen. Das Neo4j-Graph-Backend hält fest, wer, was und womit zusammenhängt.

Observability & Tracing

Jeder Prompt und jede Response wird erfasst, mit Kostentracking pro Trace, RAG-Analyse und Auswertungsdatensätzen. OpenTelemetry sorgt für durchgehenden Kontext über alle Services.

Swiss AI-Hub entstand aus einer einfachen Beobachtung: Zu viele starke Teams verschwenden ihre beste Energie damit, immer wieder dieselbe AI-Infrastruktur von Grund auf neu zu bauen. Das wollten wir ein für alle Mal ändern.

Platform Tour

Fünf Demos, die die Plattform von Anfang bis Ende zeigen. Jede läuft direkt nach docker compose up.

Dokumente hochladen

Dateien per Drag & Drop ins Admin-UI. Die Plattform übernimmt Parsing, Chunking, Embedding und Indizierung automatisch. Unterstützt werden PDF, DOCX, PPTX und XLSX. SharePoint, OneDrive, Google Drive und über 70 weitere Provider lassen sich per Rclone anbinden.

Mit dem SDK weiterentwickeln

Jede Turnkey-Plattform hat irgendwann Grenzen. Die Swiss AI-Hub SDKs stellen sicher, dass du keine davon spürst.

Eigene Agents mit dekorierten Workflow-Steps, Dependency Injection und automatischer Plattformintegration. SSO, Tracing, Kostentracking und die Chat-UI sind ohne Zusatzaufwand dabei.

$pip install swiss-ai-hub-agent

Was dieser Code macht: Dieser Agent beantwortet Fragen aus der Knowledge Base oder eskaliert an einen menschlichen Experten. Der @step()-Dekorator definiert den Ablauf — Abhängigkeiten wie Config, Locale Handler und Displayer werden automatisch injiziert. Die Runtime routet Guard-Events an verschiedene Steps: ContextSufficientEvent löst eine LLM-Antwort mit Kostentracking aus, ContextInsufficientEvent ruft BotInTheLoop auf, um via Teams oder Slack einen Menschen einzubeziehen. Wenn der Experte antwortet, setzt der Dispatcher beim relay_expert-Step fort. Ein einziger Aufruf von AgentRunner verbindet sich mit NATS, registriert den Agent auf der Plattform und beginnt zu lauschen.

agent_example.py
1from swiss_ai_hub.agent import Agent, AgentConfig, AgentRunner, step
2from swiss_ai_hub.core.events import UserMessageEvent, LLMStopEvent, StopEvent
3from swiss_ai_hub.core.events.semantic import RetrieverEvent
4from swiss_ai_hub.core.events.guard import ContextSufficientEvent, ContextInsufficientEvent
5from swiss_ai_hub.core.events.botl import BotInTheLoop
6from swiss_ai_hub.core.displayers import EventDisplayer
7from swiss_ai_hub.core.retrievers import KnowledgeRetriever
8from swiss_ai_hub.core.i18n import LocaleString, LocaleHandler
9
10class ExpertQAAgent(Agent):
11 name = LocaleString(en="Expert QA")
12 description = LocaleString(en="Answers from documents or escalates to a human expert")
13 icon = "mage:user-check"
14
15 @step()
16 async def retrieve(self, event: UserMessageEvent, config: AgentConfig, t: LocaleHandler) -> RetrieverEvent:
17 retriever = KnowledgeRetriever(config.retriever)
18 nodes = await retriever.retrieve(query=event.user_query, t=t)
19 return RetrieverEvent(nodes=nodes)
20
21 @step()
22 async def check_context(self, event: RetrieverEvent) -> ContextSufficientEvent | ContextInsufficientEvent:
23 if event.nodes:
24 return ContextSufficientEvent()
25 return ContextInsufficientEvent()
26
27 @step()
28 async def respond(
29 self, _: ContextSufficientEvent, retrieval: RetrieverEvent, start: UserMessageEvent,
30 config: AgentConfig, displayer: EventDisplayer,
31 ) -> LLMStopEvent:
32 context = "\n\n".join(node.content for node in retrieval.nodes)
33 messages = [ChatMessage(role="system", content=f"Answer based on:\n{context}"), *start.messages]
34 async with config.llm.cost_reporting_llm(displayer) as llm:
35 return await displayer.display_llm_stream(config.llm, llm, messages, as_stop_step=True)
36
37 @step()
38 async def escalate(
39 self, _: ContextInsufficientEvent, start: UserMessageEvent, config: AgentConfig,
40 ) -> BotInTheLoop.request:
41 return BotInTheLoop.invoke(question=start.user_query, user=start.user, channel_config=config.channel)
42
43 @step()
44 async def relay_expert(self, event: BotInTheLoop.response, displayer: EventDisplayer) -> StopEvent:
45 await displayer.display_chunk(f"{event.responder.user_name}: {event.response}", model_name="human-expert")
46 return StopEvent()
47
48runner = AgentRunner(agent_type=ExpertQAAgent, agent_config=AgentConfig.as_form())
49await runner.run_forever()

Gesamtarchitektur

Von LLM-Providern bis zu Datenquellen, von externen Integrationen bis zu internen Datenbanken. Jede Komponente ist verbunden, beobachtbar und vollständig in deiner Hand.

Swiss AI-Hub Tier 3 architecture: every component connected, from LLM providers to data sources

Bereit loszulegen?

Drei Befehle. Unter fünf Minuten. Der komplette AI-Stack läuft auf deinen Servern. Und bleibt dort.

$curl -fsSL https://raw.githubusercontent.com/bbvch-ai/aihub-core/main/install.sh | bash