Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Eigene KI-Anwendungen programmieren
Hinweis zur Software-Auswahl:
Diese Dokumentation priorisiert Open-Source-Software, die lokal unter Ubuntu läuft.
Bei kostenpflichtigen Services wird stets eine Open-Source-Alternative mit gleichem Funktionsumfang gegenübergestellt.
LLM-Modelle und APIs werden unabhängig vom Preis gelistet, da sie die Grundlage für viele Entwicklungen sind.
Legende
| Symbol |
Bedeutung |
| 🟩 |
Open Source – kostenlos, Ubuntu-kompatibel |
| 💰 |
Kostenpflichtig |
| 🤖 |
LLM-Modell / API – bleibt immer gelistet |
| 🐧 |
Linux / Ubuntu nativ |
| 🌐 |
Nur Web-Browser |
Lernpfad-Übersicht
graph LR
A["🟢 Phase 1\nSetup & APIs"] --> B["🟡 Phase 2\nRAG & Vektor-DBs"]
B --> C["🔴 Phase 3\nAgenten & Deploy"]
A --> A1["Python Setup\nAPI-Integration\nEinfache Abfragen"]
B --> B1["Dokumente indexieren\nEmbeddings generieren\nSemantische Suche"]
C --> C1["Multi-Agenten-Systeme\nWeb-UIs bauen\nDocker & Cloud-Deploy"]
Inhaltsverzeichnis
🟢 Phase 1 – Setup & API-Grundlagen
Was lerne ich hier?
Die Grundlagen der API-Kommunikation mit LLMs, das Einrichten von Python unter Ubuntu und die ersten Abfragen an lokale sowie Cloud-Modelle.
Voraussetzungen: Python-Grundkenntnisse.
1.1 Konzept: Wie kommunizieren Anwendungen mit KI?
Konzept: Client-Server-Prinzip bei LLMs
Deine eigene Anwendung fungiert als Client, der Anfragen (Prompts) an den LLM-Server (lokal oder in der Cloud) schickt. Die Antwort kommt strukturiert zurück (meist als JSON).
sequenceDiagram
Client (Deine App) ->> Server (LLM API): POST /chat/completions {"prompt": "Hallo"}
Note over Server: Generiert Antwort
Server -->> Client: 200 OK {"response": "Hallo! Wie kann ich helfen?"}
Konzept: Statuslose Kommunikation (Stateless)
LLM-APIs haben standardmäßig kein Gedächtnis. Jede Anfrage ist isoliert. Um einen Chatverlauf zu ermöglichen, muss deine Anwendung die gesamte Historie mitsenden:
[
{"role": "user", "content": "Mein Name ist Thorsten."},
{"role": "assistant", "content": "Hallo Thorsten!"},
{"role": "user", "content": "Wie heiße ich?"}
]
Einstiegs-Werkzeuge (APIs & Runner):
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 🤖 Ollama |
Lokaler Runner |
Lokale API-Schnittstelle (OpenAI-kompatibel) |
🐧 Ja |
ollama.com |
| 🟩 Python 3 |
Programmiersprache |
Standard für KI-Entwicklung |
🐧 Ja |
python.org |
| 🤖 OpenAI API |
Cloud API |
Marktführer für LLM-APIs |
🌐 Web |
platform.openai.com |
1.2 Thema: Entwicklungsumgebung unter Ubuntu einrichten
Konzept: Virtual Environments (Venvs)
Python-Bibliotheken sollten niemals global installiert werden. Virtuelle Umgebungen isolieren die Projektabhängigkeiten voneinander.
# Erstellen und Aktivieren eines Venv unter Ubuntu
sudo apt install python3-venv python3-pip
python3 -m venv .venv
source .venv/bin/activate
Software – Open Source zuerst:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 python3-venv |
Tool |
Virtuelle Umgebungen erstellen |
🐧 Ja |
python.org |
| 🟩 VSCodium |
Editor |
Open-Source-Editor für Python |
🐧 Ja |
vscodium.com |
| 🟩 Jupyter Lab |
Interactive Dev |
Interaktives Testen von Code-Abschnitten |
🐧 Ja |
jupyter.org |
Vergleich: Open Source vs. Kommerziell
| Funktion |
Open Source 🟩 |
Kommerziell 💰 |
| Code-Editor |
VSCodium, Neovim |
VS Code (Microsoft), PyCharm |
| Virtualization |
virtualenv, venv |
Anaconda / Miniconda (kommerzielle Lizenzpflichten) |
1.3 Thema: Text-Generierung mit APIs (Cloud & Lokal)
Das Format von OpenAI hat sich als Industriestandard etabliert. Viele Open-Source-Tools (wie Ollama) implementieren dieselbe Schnittstellen-Struktur.
# API-Abruf mit Python
import openai
client = openai.OpenAI(
base_url="http://localhost:11434/v1", # Für Ollama lokal
api_key="ollama" # Beliebiger String für lokal
)
response = client.chat.completions.create(
model="llama3",
messages=[{"role": "user", "content": "Was ist Python?"}]
)
print(response.choices[0].message.content)
Software – Open Source zuerst:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 Ollama API |
API-Server |
Stellt OpenAI-kompatible lokale Endpunkte bereit |
🐧 Ja |
github.com/ollama |
| 🟩 LiteLLM |
API-Proxy |
Vereinheitlicht alle LLM-APIs in ein Format |
🐧 Ja |
github.com/BerriAI |
Vergleich: Open Source vs. Kommerziell
| Kriterium |
Lokale API (Ollama + Llama) 🟩 |
Cloud API (OpenAI, Claude) 💰 |
| Kosten |
✅ Kostenlos (nutzt eigene Hardware) |
💰 Abrechnung nach Tokens |
| Datenschutz |
✅ Code & Daten verlassen nie den Rechner |
❌ Daten fließen an US-Server |
| Performance |
🟡 Abhängig von Grafikkarte (GPU) |
✅ Sehr schnell |
1.4 Thema: Lokale Modelle nutzen mit Hugging Face
Konzept: Pipelines und Tokenizer
Bevor ein LLM Text verarbeitet, muss der Text in Zahlen (Tokens) zerlegt werden. Die Library transformers abstrahiert diesen Prozess in Pipelines:
from transformers import pipeline
generator = pipeline("text-generation", model="gpt2")
result = generator("Die Zukunft der künstlichen Intelligenz ist", max_length=30)
print(result[0]['generated_text'])
Software – alle Open Source:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 Transformers (Hugging Face) |
Python-Lib |
Pytorch/TensorFlow-Schnittstelle für Modelle |
🐧 Ja |
github.com/huggingface |
| 🟩 PyTorch |
Deep Learning |
Mathematisches Backend für KI-Modelle |
🐧 Ja |
pytorch.org |
🟡 Phase 2 – RAG & Vektordatenbanken
Was lerne ich hier?
Wie du deine KI mit eigenen Dokumenten (PDFs, Markdown) verknüpfst, ohne das Modell neu trainieren zu müssen.
Voraussetzungen: Phase 1 abgeschlossen.
2.1 Konzept: RAG (Retrieval-Augmented Generation)
graph TD
A["👤 User stellt Frage"] --> B["🔍 Suche in Vektordatenbank"]
B --> C["📄 Relevanter Textabschnitt gefunden"]
C --> D["🤖 Prompt: 'Beantworte Frage mit Hilfe von Textabschnitt'"]
D --> E["💬 Genauer Output des LLMs"]
Warum RAG statt Fine-Tuning?
- RAG erzeugt keine Halluzinationen bei Quellenangaben
- RAG kann Dokumente in Echtzeit aktualisieren (einfach in Vektor-DB tauschen)
- RAG ist wesentlich günstiger und braucht keine teure GPU fürs Training
2.2 Thema: Was sind Embeddings?
Konzept: Semantischer Vektorraum
Ein Embedding konvertiert Text (Wörter, Absätze) in eine Liste von Zahlen (Vektor). Texte mit ähnlicher Bedeutung liegen im Vektorraum nah beieinander.
"Hund" -> [0.12, -0.45, 0.89]
"Welpe" -> [0.11, -0.43, 0.88] (nah beieinander)
"Auto" -> [-0.78, 0.05, -0.12] (weit entfernt)
Software – Open Source zuerst:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 Sentence-Transformers |
Python-Lib |
Lokale Embeddings hocheffizient erzeugen |
🐧 Ja |
sbert.net |
| 🟩 Ollama (Embedding Models) |
Modell-Server |
Generiert Embeddings über API (z.B. nomic-embed-text) |
🐧 Ja |
ollama.com |
Vergleich: Open Source vs. Kommerziell
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| Text-Embeddings |
Sentence-Transformers, Ollama |
OpenAI text-embedding-3 |
2.3 Thema: Vektordatenbanken einrichten
Konzept: Ähnlichkeitssuche (Cosine Similarity)
Vektordatenbanken sind darauf spezialisiert, Vektoren zu speichern und blitzschnell den ähnlichsten Vektor zu einer Suchanfrage zu finden.
Software – Open Source zuerst:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 Chroma |
Vektor-DB |
Einfache, leichtgewichtige In-Memory DB |
🐧 Ja |
trychroma.com |
| 🟩 pgvector (PostgreSQL) |
Vektor-DB |
Vektorsuche direkt in PostgreSQL |
🐧 Ja |
github.com/pgvector |
| 🟩 Qdrant |
Vektor-DB |
Hochperformante Suchmaschine (Rust-basiert) |
🐧 Ja |
qdrant.tech |
Vergleich: Open Source vs. Kommerziell
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| Vektorspeicherung |
Qdrant, Chroma, pgvector |
Pinecone, Weaviate Cloud |
2.4 Thema: RAG-Pipeline mit LangChain & LlamaIndex
Konzept: Orchestrierung von KI-Komponenten
Frameworks wie LangChain verknüpfen Lader (PDF/CSV), Textsplitter, Embedding-Modelle und LLMs zu einer einzigen Kette (Chain).
# Minimales LlamaIndex-RAG-Beispiel
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
# 1. Dokumente laden
documents = SimpleDirectoryReader("data").load_data()
# 2. Index erstellen (Embeddings automatisch)
index = VectorStoreIndex.from_documents(documents)
# 3. Abfragen
query_engine = index.as_query_engine()
response = query_engine.query("Welche Urlaubsregelungen gelten?")
print(response)
Software – Open Source zuerst:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 LangChain |
Framework |
Das flexibelste Orchestrierungs-Framework |
🐧 Ja |
langchain.com |
| 🟩 LlamaIndex |
Framework |
Spezialisiert auf Datenverbindung und RAG |
🐧 Ja |
llamaindex.ai |
🔴 Phase 3 – Web-UIs, Agenten & Deployment
Was lerne ich hier?
Wie du deine Skripte in interaktive Web-Apps verwandelst, selbstständig agierende Agenten programmierst und alles stabil deployst.
Voraussetzungen: RAG-Grundlagen verstanden.
3.1 Konzept: Autonome KI-Agenten programmieren
Moderne LLMs können entscheiden, Funktionen in deinem Python-Code auszuführen, wenn sie Informationen benötigen (z. B. Wetter abfragen oder Taschenrechner benutzen).
sequenceDiagram
participant AgentLLM as "Agent (LLM)"
AgentLLM ->> System: Soll ich Rechnen? Ja. Rufe Add("5, 3") auf.
System -->> AgentLLM: Ergebnis: 8
AgentLLM ->> User: Das Ergebnis ist 8.
Software – alle Open Source:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 CrewAI |
Framework |
Kollaboration mehrerer Agenten mit Rollen |
🐧 Ja |
crewai.com |
| 🟩 Microsoft AutoGen |
Framework |
Eventgesteuertes Multi-Agenten-Framework |
🐧 Ja |
microsoft.github.io/autogen |
3.2 Thema: Web-Interfaces für KI-Apps (Streamlit & Gradio)
Konzept: Rapid Prototyping
Statt HTML, CSS und JS aufzubauen, schreiben Streamlit und Gradio das Frontend direkt aus deinem Python-Code heraus.
# Streamlit App
import streamlit as st
st.title("Mein KI-Chat")
user_input = st.text_input("Frag mich was:")
if user_input:
st.write(f"KI sagt: Du hast '{user_input}' gefragt.")
Software – alle Open Source:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 Streamlit |
Frontend |
Ideal für datenintensive KI-Dashboard-Apps |
🐧 Ja |
streamlit.io |
| 🟩 Gradio |
Frontend |
Standard für ML-Modell-Demos (Hugging Face) |
🐧 Ja |
gradio.app |
| 🟩 Chainlit |
Frontend |
Maßgeschneidert für Chatbot-UIs (wie ChatGPT) |
🐧 Ja |
github.com/Chainlit |
3.3 Thema: Fine-Tuning und LoRA
Konzept: Wann macht Fine-Tuning Sinn?
- Du brauchst einen spezifischen Tonfall oder Format
- Das Modell soll eine proprietäre Syntax lernen
- Extrem geringe Latenz nötig (kleines Modell spezialisieren)
Konzept: LoRA (Low-Rank Adaptation)
Statt alle Milliarden Gewichte des Modells zu ändern, trainiert LoRA nur eine winzige Zusatzmatrix. Das spart 90% der Rechenleistung.
Software – alle Open Source:
3.4 Thema: Deployment, Docker & Betrieb
Konzept: Containerisierung von KI-Apps
Durch Docker verpackst du dein Python-Skript, das Venv und alle C-Bibliotheken (wie CUDA) in ein portables Paket.
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["streamlit", "run", "app.py"]
Software – Open Source zuerst:
| Software |
Typ |
Funktion |
Ubuntu |
Link |
| 🟩 Docker |
Container |
Isolation und Auslieferung der App |
🐧 Ja |
docker.com |
| 🟩 Coolify |
Self-hosted PaaS |
Heroku-Alternative auf eigenem Ubuntu-Server |
🐧 Ja |
coolify.io |
Vergleich: Open Source vs. Kommerziell
| Hosting-Ziel |
Open Source 🟩 (Ubuntu / Self-hosted) |
Kommerziell 💰 |
| App-Hosting |
Coolify + eigener Server |
Heroku, Vercel, Render |
| Modell-Hosting |
Ollama API, vLLM |
Hugging Face Endpoints, Replicate |
📋 Praxisprojekte
🟢 Einsteiger: Lokaler QA-Chatbot über Textdateien
graph LR
A["📄 Ordner mit Texten"] --> B["🐍 LlamaIndex-Skript"]
B --> C["🧠 Ollama (lokal)"]
C --> D["💬 Terminal-Fragebeantwortung"]
Software (alle Open Source): Python · Ollama (Modell: Llama3) · LlamaIndex
🟡 Fortgeschritten: PDF-Chatbot mit Web-UI (RAG)
graph TD
A["📄 PDF hochladen"] --> B["⚡ Chroma Vektor-DB"]
B --> C["🧠 Embeddings (Sentence-Transformers)"]
C --> D["🐍 LangChain Pipeline"]
D --> E["💻 Streamlit Web-UI"]
E --> F["💬 Nutzer-Chat"]
Software (alle Open Source): Streamlit · LangChain · Chroma · Sentence-Transformers · Ollama
🔴 Experte: Multi-Agenten-Forschungsteam
Ein Agent sucht Informationen im Web, der andere schreibt eine Zusammenfassung, der dritte korrigiert den Stil.
graph LR
A["Nutzer-Auftrag"] --> B["🕵️ Agent 1\nWeb-Searcher"]
B --> C["✍️ Agent 2\nWriter"]
C --> D["🔍 Agent 3\nReviewer"]
D --> E["📄 Fertiger Report"]
Software (alle Open Source): CrewAI · Python · Ollama (lokales Modell) / LiteLLM
📦 Vollständige Softwareübersicht & Vergleich
KI-Runtimes & API-Server
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| Lokaler API-Server |
Ollama 🐧, llama.cpp 🐧 |
— |
| Server-Schnittstelle |
vLLM 🐧, TGI 🐧 |
RunPod, Replicate |
| API-Orchestrierung |
LiteLLM 🐧 |
LangSmith (Monetarisierung) |
Python-Umgebung & Editoren
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| Code-Editor |
VSCodium 🐧, JupyterLab 🐧 |
PyCharm, VS Code |
| Paketverwaltung |
pip 🐧, poetry 🐧 |
Anaconda Enterprise |
ML-Libraries & Frameworks
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| Modell-Zugriff |
Transformers 🐧, PyTorch 🐧 |
— |
| App-Orchestrierung |
LangChain 🐧, LlamaIndex 🐧 |
— |
Vektordatenbanken
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| In-Memory DB |
Chroma 🐧 |
— |
| SQL-Integration |
PostgreSQL + pgvector 🐧 |
Supabase Cloud |
| Standalone DB |
Qdrant 🐧, Milvus 🐧 |
Pinecone |
Web-Frontends für KI
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| UI-Framework |
Streamlit 🐧, Gradio 🐧, Chainlit 🐧 |
Taipy Enterprise |
Agenten-Frameworks
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| Multi-Agenten |
CrewAI 🐧, AutoGen 🐧, LangGraph 🐧 |
— |
Fine-Tuning
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| Training-Lib |
Unsloth 🐧, TRL 🐧 |
Predibase, EntryPoint |
Deployment & Hosting
| Funktion |
Open Source 🟩 (Ubuntu) |
Kommerziell 💰 |
| App-Platform |
Coolify 🐧, Caprover 🐧 |
Heroku, Render |
| Container |
Docker 🐧, Podman 🐧 |
— |
Weiterführende Ressourcen
Letzte Aktualisierung: Juli 2026
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).