![]()
Die vorherige Lektion hat Agenten hochskaliert in die Cloud. Diese bringt sie herunter auf eine einzelne Maschine. Am Ende wirst du einen funktionierenden Engineering-Assistenten haben, der logisch denkt, Werkzeuge aufruft, deine Dateien liest und deine Dokumentation durchsucht — ohne einen einzigen Cloud-Inferenzaufruf.
Warum sollte man das wollen? Drei Gründe, die in der echten Ingenieurarbeit ständig auftauchen:
Der Haken ist, dass du ein Cloud-Frontier-Modell gegen ein Small Language Model (SLM) eintauschst, das auf deiner CPU, GPU oder NPU läuft. Diese Lektion handelt davon, Agenten zu bauen, die gut innerhalb dieser Einschränkung sind und nicht so tun, als gäbe es sie nicht.
Diese Lektion behandelt:
Nach Abschluss dieser Lektion wirst du wissen, wie man:
Diese Lektion setzt voraus, dass du frühere Lektionen abgeschlossen hast und sicher bist in:
Du benötigst außerdem:
requirements.txt sowie foundry-local-sdk, openai und chromadb für diese Lektion.Ein Frontier-Cloud-Modell hat hunderte Milliarden Parameter und ein Rechenzentrum dahinter. Ein SLM hat wenige Milliarden Parameter und muss in den RAM deines Laptops passen. Dieser Unterschied setzt klare Erwartungen.
SLMs sind gut bei:
SLMs sind schwächer bei:
Die erfolgreiche Strategie für lokale Agenten ist deshalb: lass das SLM orchestrieren und die Werkzeuge die schwere Arbeit machen. Das Modell muss deinen Code nicht kennen — es muss wissen, wann es read_file und search_docs aufruft. Das spielt direkt in die Stärken eines SLM.
flowchart LR
U[Entwickler] --> A[Lokaler SLM-Agent]
A -->|entscheidet, welches Werkzeug| T1[datei_lesen]
A -->|entscheidet, welches Werkzeug| T2[Dokumente durchsuchen RAG]
A -->|entscheidet, welches Werkzeug| T3[Code analysieren]
T1 --> A
T2 --> A
T3 --> A
A --> R[Antwort, vollständig auf dem Gerät]
Microsoft Foundry Local ist eine leichte Laufzeitumgebung, die Modelle komplett auf deinem Gerät herunterlädt, verwaltet und bereitstellt. Das wichtigste Merkmal für uns ist, dass es einen OpenAI-kompatiblen HTTP-Endpunkt bereitstellt — das bedeutet, das OpenAI SDK und der OpenAI-Client des Microsoft Agent Frameworks funktionieren damit mit nur einem Wechsel der base_url. Alles, was du über das Bauen von Agenten gelernt hast, lässt sich eins zu eins übertragen; nur der Endpunkt verschiebt sich von der Cloud auf localhost.
Foundry Local wählt außerdem automatisch die beste Modellversion für deine Hardware — eine CPU-Version, eine CUDA/GPU-Version oder eine NPU-Version — so musst du deine Maschine nicht manuell optimieren.
Installiere Foundry Local (siehe die Dokumentation für dein Betriebssystem), und verifiziere dann, dass es funktioniert:
# Installieren (Beispiel; folgen Sie der Dokumentation für Ihre Plattform)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Laden Sie ein Qwen-Modell herunter und führen Sie es aus, starten Sie dann den lokalen Dienst
foundry model run qwen2.5-7b-instruct
foundry service status
Sobald der Dienst läuft, hast du einen lokalen, OpenAI-kompatiblen Endpunkt (typischerweise http://localhost:PORT/v1). Das Notebook verwendet das foundry-local-sdk, um den Endpunkt automatisch zu finden, sodass du den Port nicht hartkodieren musst.
Ein Agent ist nur ein Agent, wenn er Werkzeuge aufrufen kann. Viele SLMs können chatten, erzeugen aber unzuverlässige, fehlerhafte Werkzeugaufrufe. Qwen-Modelle sind für den Funktionsaufruf trainiert und geben konsistent wohlgeformte Werkzeugaufrufstrukturen aus — genau das macht aus einem lokalen Chatmodell einen lokalen Agenten.
Der Ablauf ist die bekannte Werkzeugaufrufschleife, nur eben lokal ausgeführt:
sequenceDiagram
participant U as Benutzer
participant A as Qwen Agent (lokal)
participant T as Lokales Werkzeug
U->>A: "Was macht auth.py?"
A->>A: Entscheiden: read_file aufrufen
A->>T: read_file("auth.py")
T-->>A: Dateiinhalte
A->>A: Inhalte analysieren
A-->>U: Erklärung
Dokumentensuche ist der Ort, an dem lokale Agenten ihren Mehrwert zeigen. Anstatt zu hoffen, dass das SLM sich die Dokumentation deines Frameworks gemerkt hat, bettest du diese Dokumente in eine lokale Vektordatenbank ein und lässt den Agenten die relevanten Abschnitte bei Bedarf abrufen.
Wir verwenden Chroma, einen eingebetteten Vektorstore, der im Prozess ohne Server läuft. Die Pipeline ist komplett lokal: lokales Einbettungsmodell → lokale Vektoren → lokale Suche → lokales SLM.
flowchart TB
D[Deine Dokumente / Code] --> E[Lokales Einbettungsmodell]
E --> V[(Chroma Vektor-Datenbank - auf der Festplatte)]
Q[Agentenabfrage] --> QE[Frage lokal einbetten]
QE --> V
V -->|Top-k Abschnitte| A[Qwen-Agent]
A --> Ans[Fundierte Antwort]
Das ist das gleiche Agentic RAG-Muster aus Lektion 5 — der einzige Unterschied ist, dass jede Komponente auf deiner Maschine läuft.
MCP ist ein Transport, kein Cloud-Service. Ein MCP-Server kann lokal als Prozess über stdio laufen und Werkzeuge über das Standardprotokoll für deinen Agenten bereitstellen. So kannst du das wachsende Ökosystem an MCP-Servern wiederverwenden — Dateisystemzugriff, Git-Operationen, Datenbankabfragen — komplett offline.
Die Sicherheitslage unterscheidet sich von der Cloud, ist aber nicht absent: ein lokaler MCP-Server läuft immer noch mit den Berechtigungen deines Nutzers, also begrenze, was er erreichen kann (ein Projektordner, nicht dein gesamtes Heimatverzeichnis) und behandle seine Ausgaben als Eingaben, die du validieren solltest.
Local-first heißt nicht lokal-allein. Reife Systeme routen nach Sensibilität und Schwierigkeit:
| Situation | Wo es läuft |
|---|---|
| Sensibler Code / Daten oder offline | Lokales SLM |
| Einfache, begrenzte Aufgabe | Lokales SLM (günstig, schnell) |
| Komplexe mehrstufige Schlussfolgerungen bei nicht-sensiblen Daten | Cloud-Modell |
| Alles, während eines Ausfalls | Lokales SLM (sanfter Abbau) |
Das spiegelt die Modell-Routing-Idee aus Lektion 16 wider — nur dass eines der “Modelle” jetzt deine eigene Maschine ist. Ein robustes Design weicht auf lokal aus, wenn die Cloud nicht verfügbar ist, so dass der Agent in der Qualität abnimmt statt komplett auszufallen.
flowchart LR
Q[Anfrage] --> S{Sensibel oder offline?}
S -->|ja| L[Lokales SLM]
S -->|nein| C{Benötigt tiefgehendes Nachdenken?}
C -->|nein| L
C -->|ja| Cloud[Cloud-Modell]
L --> Out[Antwort]
Cloud --> Out
Öffne code_samples/17-local-agent-foundry-local.ipynb und bearbeite es Schritt für Schritt. Du baust einen lokalen Engineering-Assistenten, der vollständig auf deinem Arbeitsplatz läuft und kann:
Zu keinem Zeitpunkt wird Cloud-Inferenz genutzt.
Der Assistent verbindet sich über den OpenAI-kompatiblen Endpunkt mit Foundry Local, sodass der Agenten-Code fast identisch mit den Cloud-Lektionen aussieht — nur der Client ändert sich:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local entdeckt/lädt das Modell herunter und stellt uns einen lokalen Endpunkt zur Verfügung.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key ist ein lokaler Platzhalter
Die Werkzeuge sind übliche Python-Funktionen mit Geltungsbereich auf ein Projektverzeichnis:
def read_file(path: str) -> str:
\"\"\"Read a file, but only inside the sandboxed project directory.\"\"\"
full = (PROJECT_ROOT / path).resolve()
if PROJECT_ROOT not in full.parents and full != PROJECT_ROOT:
return \"Access denied: path is outside the project directory.\"
return full.read_text(encoding=\"utf-8\")
Beachte die Sandbox-Prüfung — selbst lokal ist ein Werkzeug, das beliebige Pfade liest, ein Risiko. Das Notebook hält alle Werkzeuge strikt auf einen Projekt-Stammordner begrenzt.
Teste dein Verständnis, bevor du zur Übung weitergehst.
1. Nenne zwei konkrete Gründe, einen Agenten lokal statt in der Cloud laufen zu lassen.
2. Wie ist die empfohlene Arbeitsteilung zwischen einem SLM und seinen Werkzeugen in einem lokalen Agenten, und warum?
3. Was macht es möglich, Cloud-Agenten-Code mit Foundry Local wiederzuverwenden?
4. Warum verwenden wir speziell ein Qwen Function-Calling-Modell statt irgendeines SLM?
5. Welche Komponenten laufen in der lokalen RAG-Pipeline auf der Maschine?
6. Ein lokaler MCP-Server läuft auf deiner Maschine. Macht ihn das automatisch sicher? Welche Vorsichtsmaßnahme solltest du trotzdem ergreifen?
7. Beschreibe eine sinnvolle hybride Routing-Regel, die ein lokales Modell einbezieht.
8. Was ist eine realistische Mindest-RAM-Größe für den lokalen Agenten in dieser Lektion, und was bringt mehr RAM?
Erweitere den lokalen Engineering-Assistenten zu einem lokalen Dokumentationsprüfer für ein kleines Projekt deiner Wahl (verwende bei Bedarf einen der Lektionen-Ordner aus diesem Repo).
Deine Abgabe sollte:
Ein find_todos-Werkzeug hinzufügen, das das Projekt nach TODO-/FIXME-Kommentaren durchsucht und diese mit Datei- und Zeilennummer zurückgibt — dabei die gleiche Sandbox-Prüfung wie read_file einhalten.
Schreiben Sie dann einen kurzen Absatz darüber, was Sie für diesen Reviewer in die Cloud verlagern und was Sie lokal behalten würden, und warum. Bewertet wird, ob die lokalen Komponenten korrekt verbunden sind und ob Ihr hybrides Denken stichhaltig ist – nicht die Modellqualität.
In dieser Lektion haben Sie einen Agenten gebaut, der vollständig auf Ihrem eigenen Rechner läuft:
Dies schließt den Bereitstellungsbogen ab: Lektion 16 hat Agenten in Microsoft Foundry skaliert, und diese Lektion hat sie auf einen einzelnen Arbeitsplatz herunter skaliert. Die nächste Lektion beschäftigt sich damit, bereitgestellte Agenten sicher zu halten.
Bereitstellen skalierbarer Agenten
Haftungsausschluss: Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.