Erstellen eines Multi-Agenten-Systems mit Weaviate
Wir bauen ein Multi-Agenten-System mit Weaviate, da es sich um eine beeindruckende Datenbank handelt, die für die Verarbeitung von Vektorsuchen und semantischen Abfragen optimiert ist. Mit seiner Fähigkeit, Daten effizient zu speichern und abzurufen, wird es zu einem entscheidenden Bestandteil jeder modernen Anwendung. Wie erstellt Weaviate also genau ein Multi-Agenten-System? Lassen Sie uns ins Detail gehen.
Voraussetzungen
- Go 1.18+
- Docker 20.10+
- Python 3.9+
- Weaviate v1.19.0
- Grundkenntnisse über REST-APIs
Schritt 1: Weaviate mit Docker einrichten
Um zu beginnen, richten wir Weaviate mit Docker ein. Ich weiß, einige von euch denken vielleicht: „Docker schon wieder? Wirklich?“ Aber es ist immer noch der einfachste Weg, um alles zum Laufen zu bringen.
docker run -p 8080:8080 \
-e WEAVIATE_HOST=localhost \
-e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true \
--name weaviate \
semitechnologies/weaviate:1.19.0
Warum das tun? Das Ausführen von Weaviate in einem Container isoliert es und ermöglicht es Ihnen, fast sofort damit zu arbeiten, ohne sich um lokale Umgebungsprobleme kümmern zu müssen. Vergessen Sie jedoch nicht, die Containerprotokolle zu überwachen! Sie können dies mit:
docker logs -f weaviate
Wenn Sie eine Fehlermeldung erhalten, die besagt: „Kann Container nicht starten“, stellen Sie sicher, dass Sie Ihre Docker-Installation und -Konfiguration überprüft haben. Ich habe einmal Stunden damit verbracht, herauszufinden, warum ein Container nicht gestartet werden konnte, nur um festzustellen, dass Docker nicht lief.
Schritt 2: Schema für das Multi-Agenten-System konfigurieren
Als nächstes erstellen wir ein Schema für unser Multi-Agenten-Setup. Denken Sie an ein Schema als den Plan für Ihre Datenstruktur.
import requests
url = "http://localhost:8080/v1/schema"
data = {
"classes": [{
"class": "Agent",
"properties": [{
"name": "name",
"dataType": ["string"]
}, {
"name": "role",
"dataType": ["string"]
}]
}]
}
response = requests.post(url, json=data)
if response.status_code == 200:
print("Schema erfolgreich erstellt.")
else:
print("Fehler:", response.json())
Dies initialisiert eine `Agent`-Klasse mit Eigenschaften für `name` und `role`. Die Herausforderung besteht darin, wie die Datentypen konstruiert werden. Falsche Bezeichnungen der Datentypen führen zu Fehlern, die einen denken lassen, der Code sei defekt. Achten Sie auf die API-Antwort.
Schritt 3: Agenten in Weaviate einfügen
Jetzt, wo wir unser Schema eingerichtet haben, ist es Zeit, einige Agenten hinzuzufügen. Hier geschieht die Magie.
agents = [
{"name": "Agent A", "role": "Researcher"},
{"name": "Agent B", "role": "Analyst"},
]
url = "http://localhost:8080/v1/objects"
for agent in agents:
response = requests.post(url, json={"class": "Agent", "properties": agent})
if response.status_code == 201:
print(f"{agent['name']} hinzugefügt.")
else:
print("Fehler:", response.json())
Verwenden Sie dieses Snippet, um Agenten im Batch einzufügen. Es kann sein, dass Sie auf eine Schwierigkeit mit doppelten Einträgen oder falschen Eigenschaftsnamen stoßen. Achten Sie darauf! Ich habe versehentlich Duplikate verursacht, die meine Ergebnisse verfälschten. Niemand möchte mit Agent A zweimal arbeiten!
Schritt 4: Abfragen von Agenten
Die Agenten in der Datenbank zu haben, ist schön und gut, aber wie erhalten wir Informationen zurück? Hier kommt die Abfrage ins Spiel.
query = """
{
Get {
Agent {
name
role
}
}
}
"""
response = requests.post("http://localhost:8080/v1/graphql", json={"query": query})
if response.status_code == 200:
data = response.json()
for agent in data['data']['Get']['Agent']:
print(f"Name: {agent['name']}, Rolle: {agent['role']}")
else:
print("Fehler:", response.json())
Diese GraphQL-Abfrage ruft alle Agenten ab. Wenn die Abfrage fehlschlägt, stellen Sie sicher, dass Ihr Schema dem entspricht, was Sie abzurufen versuchen. Es ist üblich, zu vergessen, das Schema zu aktualisieren, was dazu führt, dass Abfragen nichts zurückgeben. Ich habe die Zählung verloren, wie oft ich versucht habe zu fragen, nur um festzustellen, dass ich eine andere Version des Schemas verwendet habe.
Die Fallstricke
Hier sind einige Punkte zu beachten, die die meisten Tutorials außer Acht lassen:
- Versionsprobleme: Die Schema-Evolution von Weaviate ist nicht perfekt. Wenn Sie Ihr Schema ändern, erstellen Sie die Klassen vorsichtig neu, sonst verlieren Sie Daten.
- Typen und Eigenschaften: Inkonsistenzen bei den Eigenschaftstypen führen zu frustrierenden Fehlern. Überprüfen Sie immer Ihr Schema und Ihre Dateneinstellungen, bevor Sie abfragen.
- Fehlerbehandlung: Nicht alle API-Fehler sind selbsterklärend. Verwenden Sie die Debug-Ausgabe großzügig, um zu erfassen, was schiefgeht.
- Datenformat: Stellen Sie beim Senden von Daten sicher, dass sie im richtigen Format vorliegen, insbesondere bei Datumsangaben oder geschachtelten Datentypen. Unstimmigkeiten führen dazu, dass Sie Zeit mit der Verfolgung von Sackgassen verlieren.
- Skalierungsprobleme: Die Leistung kann bei zu vielen Agenten oder Abfragen abnehmen. Überwachen Sie Ihre Docker-Ressourcen. Ich habe einmal meinen Laptop mit einer einfachen Schleife ineffizienter Abfragen zum Stillstand gebracht!
Vollständiges Codebeispiel
Alle Schritte kombiniert, hier ist der komplette, ausführbare Code, um sicherzustellen, dass Sie ein funktionierendes Multi-Agenten-System haben.
import requests
# Schritt 1: Weaviate mit Docker einrichten
# (Führen Sie den vorherigen Docker-Befehl in Ihrer CLI aus)
# Schritt 2: Schema konfigurieren
schema_url = "http://localhost:8080/v1/schema"
schema_data = {
"classes": [{
"class": "Agent",
"properties": [{
"name": "name",
"dataType": ["string"]
}, {
"name": "role",
"dataType": ["string"]
}]
}]
}
requests.post(schema_url, json=schema_data)
# Schritt 3: Agenten einfügen
agents = [
{"name": "Agent A", "role": "Researcher"},
{"name": "Agent B", "role": "Analyst"},
]
insert_url = "http://localhost:8080/v1/objects"
for agent in agents:
requests.post(insert_url, json={"class": "Agent", "properties": agent})
# Schritt 4: Agenten abfragen
query = """
{
Get {
Agent {
name
role
}
}
}
"""
response = requests.post("http://localhost:8080/v1/graphql", json={"query": query})
if response.status_code == 200:
data = response.json()
for agent in data['data']['Get']['Agent']:
print(f"Name: {agent['name']}, Rolle: {agent['role']}")
else:
print("Fehler:", response.json())
Was kommt als Nächstes
Nachdem Sie Ihr Multi-Agenten-System eingerichtet haben, ziehen Sie in Betracht, die Funktionen zu erweitern. Integrieren Sie ein Echtzeit-Nachrichtensystem zwischen den Agenten oder beginnen Sie, Aktionen zwischen Agenten mithilfe einer Orchestrierungs-Engine zu verknüpfen. Es ist lohnend zu sehen, wie die Interaktionen zum Leben erwachen.
FAQ
Wie behebe ich Probleme mit Weaviate?
Beginnen Sie damit, die Protokolle mithilfe von Docker zu überprüfen. Stellen Sie auch sicher, dass Ihre API-Endpunkte wie erwartet reagieren. Die Internetverbindung oder die Firewall-Einstellungen können manchmal die Netzwerkaufrufe stören.
Kann ich Weaviate bei einem Cloud-Anbieter ausführen?
Absolut! Weaviate kann auf AWS, GCP oder Azure mit Docker oder den offiziellen verwalteten Servicediensten bereitgestellt werden. Achten Sie nur auf Ihre Cloud-Rechnung, sonst enden Sie wie ich in Tränen!
Ist Weaviate für Produktionslasten geeignet?
Es kann, wenn es richtig eingerichtet ist, aber Sie müssen sicherstellen, dass eine angemessene Überwachung, Skalierung und Sicherung vorhanden ist. Das Testen in Ihrer Umgebung hilft, unangenehme Überraschungen zu vermeiden.
Datenquellen
Letzte Aktualisierung am 30. März 2026. Datenquellen aus offiziellen Dokumenten und Community-Benchmarks.
🕒 Published: