Einführung
Sie möchten kein Geld für APIs ausgeben oder sind Sie besorgt um den Datenschutz? Oder möchten Sie einfach nur LLMs lokal ausführen? Keine Sorge; dieser Leitfaden hilft Ihnen beim Erstellen von Agenten und Multi-Agenten-Frameworks mit lokalen LLMs, die völlig kostenlos verwendet werden können. Wir werden untersuchen, wie man Agenten-Frameworks mit CrewAI und Ollama erstellt, und uns die verschiedenen von Ollama verfügbaren LLMs ansehen.
Überblick
- Dieser Leitfaden konzentriert sich auf den Aufbau von Agenten-Frameworks und Multi-Agenten-Systemen unter Verwendung lokaler LLMs mit CrewAI und Ollama und bietet eine kostenlose und die Privatsphäre wahrende Lösung.
- Es stellt die Schlüsselkonzepte von Agenten und Multi-Agenten-Frameworks vor und betont ihre Rolle bei der autonomen, kollaborativen Problemlösung in verschiedenen Branchen.
- CrewAI wird als fortschrittliches Framework zur Orchestrierung von Aufgaben zwischen Agenten hervorgehoben. Es verwendet strukturierte Rollen, Ziele und Speicherverwaltung, um die Aufgabenausführung zu verbessern.
- Ollama ermöglicht die lokale Ausführung von Sprachmodellen wie Llama2, Llama3 und LLaVA, sodass Benutzer Cloud-Dienste für KI-Aufgaben umgehen können.
- Der Artikel enthält ein praktisches Beispiel für den Aufbau eines Multi-Agenten-Programs zur Bildklassifizierung, -beschreibung und Informationsabfrage mit CrewAI und Ollama.
- Das Fazit unterstreicht die Vorteile der Verwendung verschiedener LLMs für spezialisierte Aufgaben und zeigt die Flexibilität der Kombination von CrewAI und Ollama in lokalen Umgebungen.
Agenten, Agenten-Frameworks und CrewAI
Generative KI hat sich von der Foundation-KI zur Große Sprachmodelle (LLM) zu fortgeschrittenen Multi-Agenten-Systemen. Theoretisch Agenten sind autonome Systeme, die ohne menschliches Zutun planen, schlussfolgern und handeln können. Diese Agenten zielen darauf ab, den menschlichen Eingriff zu reduzieren und gleichzeitig die Funktionalität zu erweitern.
Agentische Frameworks
Diese Frameworks nutzen mehrere Agenten, die zusammenarbeiten, und ermöglichen so eine Zusammenarbeit, Kommunikation und Problemlösung, die über die Fähigkeiten von Einzelagenten hinausgeht. In diesen Frameworks haben Agenten unterschiedliche Rollen und Ziele und können komplexe Aufgaben ausführen. Multi-Agenten-Frameworks sind für groß angelegte, dynamische und verteilte Problemlösungen unerlässlich und können daher in Branchen wie Robotik, Finanzen, Gesundheitswesen und darüber hinaus angepasst werden.
Schlüsselkomponenten von Agentic Frameworks
- Agentenarchitektur: Definiert die interne Struktur von Agenten, einschließlich Planung, Argumentation und Kommunikationsprotokollen.
- Kommunikationsprotokolle: Methoden zur Agentenzusammenarbeit durch Nachrichtenübermittlung und Datenaustausch.
- Agenten-Interaktionsdesign: Mechanismen für die Zusammenarbeit der Agenten, einschließlich Aufgabenzuweisung und Konfliktlösung.
- Umfeld: Die Umgebung, in der Agenten interagieren, häufig unter Einbeziehung externer Instruments und Ressourcen.
Diese Frameworks ermöglichen modulare und skalierbare Systeme, sodass sich Agenten zur Anpassung an sich entwickelnde Anforderungen leicht ändern oder hinzufügen lassen.
CrewAI-Rahmenwerk
CrewAI ist ein fortschrittliches Multiagenten-Framework, das es mehreren Agenten (als „Crew“ bezeichnet) ermöglicht, durch Aufgabenorchestrierung zusammenzuarbeiten. Das Framework unterteilt Agenten in drei Attribute – Rolle, Ziel und Hintergrundgeschichte – und sorgt so für ein umfassendes Verständnis der Funktion jedes Agenten. Dieser strukturierte Ansatz verringert das Risiko einer Unterspezifikation und verbessert die Aufgabendefinition und -ausführung.
Hauptstärken von CrewAI
- Explizite Aufgabendefinition: Die Aufgaben sind klar definiert, sodass klar ist, was jeder Agent tut.
- Werkzeuggebrauch: Aufgabenspezifische Instruments haben Vorrang vor Instruments auf Agentenebene, wodurch ein feingranularerer und kontrollierterer Toolset entsteht.
- Agenteninteraktionsprozesse: crewAI unterstützt sequentielle und hierarchische Agenten-Kollaborationsprozesse.
- Erweiterte Speicherverwaltung: Das Framework bietet Kurzzeit-, Langzeit-, Entitäts- und Kontextgedächtnis und erleichtert so anspruchsvolles Denken und Lernen.
Ollama
Ollama ist ein Framework zum Erstellen und Ausführen von Sprachmodellen auf lokalen Rechnern. Es ist einfach zu verwenden, da wir Modelle direkt auf Geräten ausführen können, ohne dass Cloud-basierte Dienste erforderlich sind. Es gibt keine Bedenken hinsichtlich der Privatsphäre.
Zur Interaktion mit Hallo!
Wir können die pip set up ollama
Befehl zum Integrieren von Ollama in Python.
Jetzt können wir Modelle herunterladen mit dem ollama pull
Befehl zum Herunterladen der Modelle.
Lassen Sie uns Folgendes ausführen:
ollama pull llama2
ollama pull llama3
ollama pull llava
Jetzt haben wir drei der Massive Language Fashions (LLMs) lokal:
- Lama 2: Ein Open-Supply-Großsprachenmodell von Meta.
- Lama 3: Die neueste Iteration der Llama-Reihe von Meta, die die Fähigkeiten für komplexe Aufgaben der Sprachgenerierung mit erhöhter Parametergröße und Effizienz weiter verfeinert.
- LLaVA: Ein Bildsprachenmodell, das für Aufgaben zum Verständnis von Bildern und Texten entwickelt wurde.
Wir können diese Modelle lokal verwenden, indem wir ollama run model-name
hier ist ein Beispiel:
Sie können drücken ctrl + d
um das Menü zu verlassen.
Lesen Sie auch: Wie führe ich LLM-Modelle lokal mit Ollama aus?
Aufbau eines Multi-Agenten-Programs
Lassen Sie uns daran arbeiten, ein agentenbasiertes System aufzubauen, das ein Bild als Eingabe verwendet und einige interessante Fakten über das Tier im System liefert.
Ziele
- Erstellen Sie ein Multi-Agenten-System zur Bildklassifizierung, -beschreibung und Informationsabfrage mit CrewAI.
- Automatisieren Sie die Entscheidungsfindung: Agenten führen bestimmte Aufgaben aus, wie das Identifizieren von Tieren in Bildern, deren Beschreibung und das Abrufen relevanter Fakten.
- Aufgabensequenzierung: Koordinieren Sie Agenten durch Aufgaben in einem schrittweisen, agentenbasierten System.
Komponenten
- Klassifizierer-Agent: Identifiziert mithilfe des Modells llava:7b, ob das Eingabebild ein Tier enthält.
- Beschreibung Agent: Beschreibt das Tier im Bild, ebenfalls unterstützt von llava:7b.
- Informationsabruf-Agent: Ruft mithilfe von llama2 zusätzliche Fakten über das Tier ab.
- Aufgabendefinitionen: Jede Aufgabe ist an einen bestimmten Agenten gebunden, der seine Aktionen steuert.
- Crew-Administration: Die Crew koordiniert die Aktionen der Agenten, führt Aufgaben aus und aggregiert Ergebnisse basierend auf dem Eingabebild
Standardmäßig werden Aufgaben in CrewAI sequenziell ausgeführt. Sie können einen Aufgabenmanager hinzufügen, um die Reihenfolge der Ausführung zu steuern. Darüber hinaus ermöglicht die Funktion allow_delegation einem Agenten, seinen vorherigen Agenten aufzufordern, bei Bedarf eine Antwort neu zu generieren. Wenn Sie den Speicher auf True setzen, können Agenten aus früheren Interaktionen lernen. Sie können Aufgaben optionally available so konfigurieren, dass Sie nach menschlichem Suggestions zum Ergebnis fragen.
Lesen Sie auch: Erstellen kollaborativer KI-Agenten mit CrewAI
Lassen Sie uns unser Multi-Agenten-System bauen
Bevor wir beginnen, installieren wir alle erforderlichen Pakete:
pip set up crewai
pip set up 'crewai(instruments)'
pip set up ollama
1. Erforderliche Bibliotheken importieren
from crewai import Agent, Process, Crew
import pkg_resources
# Get the model of CrewAI
crewai_version = pkg_resources.get_distribution("crewai").model
print(crewai_version)
0.61.0
2. Definieren Sie die Agenten
Hier definieren wir drei Agenten mit spezifischen Rollen und Zielen. Jeder Agent ist für eine Aufgabe im Zusammenhang mit der Bildklassifizierung und -beschreibung verantwortlich.
- Klassifizierer-Agent: Überprüft, ob das Bild ein Tier enthält, und verwendet das Modell llava:7b, um das Tier zu klassifizieren.
- Beschreibung Agent: Beschreibt das Tier im Bild. Auch hier wird dasselbe llava:7b-Modell wie beim vorhergehenden Agenten verwendet.
- Informationsabruf-Agent: Dieser Agent ruft zusätzliche Informationen oder interessante Fakten über das Tier ab. Er verwendet llama2, um diese Informationen bereitzustellen.
# 1. Picture Classifier Agent (to examine if the picture is an animal)
classifier_agent = Agent(
position="Picture Classifier Agent",
aim="Decide if the picture is of an animal or not",
backstory="""
You could have a watch for animals! Your job is to establish whether or not the enter picture is of an animal
or one thing else.
""",
llm='ollama/llava:7b' # Mannequin for image-related duties
)
# 2. Animal Description Agent (to explain the animal within the picture)
description_agent = Agent(
position="Animal Description Agent {image_path}",
aim="Describe the animal within the picture",
backstory="""
You're keen on nature and animals. Your activity is to explain any animal primarily based on a picture.
""",
llm='ollama/llava:7b' # Mannequin for image-related duties
)
# 3. Info Retrieval Agent (to fetch additional information in regards to the animal)
info_agent = Agent(
position="Info Agent",
aim="Give compelling details about a sure animal",
backstory="""
You might be excellent at telling fascinating info.
You do not give any incorrect data if you do not know it.
""",
llm='ollama/llama2' # Mannequin for normal information retrieval
)
3. Definieren Sie Aufgaben für jeden Agenten
Jede Aufgabe ist an einen der Agenten gebunden. Aufgaben beschreiben die Eingabe, die erwartete Ausgabe und welcher Agent sie verarbeiten soll.
- Aufgabe 1: Klassifizieren Sie, ob das Bild ein Tier enthält.
- Aufgabe 2: Wenn das Bild als Tier klassifiziert ist, beschreiben Sie es.
- Aufgabe 3: Geben Sie basierend auf der Beschreibung zusätzliche Informationen zum Tier an.
# Process 1: Examine if the picture is an animal
task1 = Process(
description="Classify the picture ({image_path}) and inform me if it is an animal.",
expected_output="If it is an animal, say 'animal'; in any other case, say 'not an animal'.",
agent=classifier_agent
)
# Process 2: If it is an animal, describe it
task2 = Process(
description="Describe the animal within the picture.({image_path})",
expected_output="Give an in depth description of the animal.",
agent=description_agent
)
# Process 3: Present extra details about the animal
task3 = Process(
description="Give further details about the described animal.",
expected_output="Present at the very least 5 fascinating info or details about the animal.",
agent=info_agent
)
4. Agenten und Aufgaben mit einer Crew verwalten
Zur Verwaltung der Agenten und Aufgaben wird eine Crew eingerichtet. Sie koordiniert die Aufgaben sequentiell und stellt die Ergebnisse basierend auf der Gedankenkette der Agenten bereit.
# Crew to handle the brokers and duties
crew = Crew(
brokers=(classifier_agent, description_agent, info_agent),
duties=(task1, task2, task3),
verbose=True
)
# Execute the duties with the offered picture path
outcome = crew.kickoff(inputs={'image_path': 'racoon.jpg'})
Ich habe dem CrewAI-Framework das Bild eines Waschbären übergeben und dies ist die Ausgabe, die ich erhalten habe:
Hinweis: Stellen Sie sicher, dass sich das Bild im Arbeitsverzeichnis befindet. Alternativ können Sie auch den vollständigen Pfad angeben.
AUSGABE
# Agent: Picture Classifier Agent## Process: Classify the picture (racoon.jpg) and inform me if it is an animal.
# Agent: Picture Classifier Agent
## Closing Reply:
Primarily based on my evaluation, the picture (racoon.jpg) accommodates a raccoon, which is
certainly an animal. Subsequently, the ultimate reply is 'animal'.# Agent: Animal Description Agent racoon.jpg
## Process: Describe the animal within the picture.(racoon.jpg)
# Agent: Animal Description Agent racoon.jpg
## Closing Reply:
The picture (racoon.jpg) encompasses a raccoon, which is a mammal identified for its
agility and flexibility to varied environments. Raccoons are characterised
by their distinct black "masks" across the eyes and ears, in addition to a
grayish or brownish coat with white markings on the face and paws. They've
a comparatively quick tail and small rounded ears. Raccoons are omnivorous and
have a extremely dexterous entrance paw that they use to govern objects. They
are additionally identified for his or her intelligence and skill to unravel issues, similar to
opening containers or climbing bushes.# Agent: Info Agent
## Process: Give further details about the described animal.
# Agent: Info Agent
## Closing Reply:
Listed below are 5 fascinating info in regards to the raccoon:
1. Raccoons have distinctive dexterity of their entrance paws, which they use to
manipulate objects with outstanding precision. In truth, research have proven
that raccoons are in a position to open containers and carry out different duties with a
stage of talent rivaling that of people!2. Regardless of their cute look, raccoons are formidable hunters and might
catch all kinds of prey, together with fish, bugs, and small mammals.
Their delicate snouts assist them find meals at the hours of darkness waters or
underbrush.3. Raccoons are extremely adaptable and could be present in a variety of habitats,
from forests to marshes to city areas. They're even identified to climb bushes
and swim in water!4. Along with their intelligence and problem-solving expertise, raccoons
have a superb reminiscence and are in a position to acknowledge and work together with
particular person people and different animals. They'll additionally be taught to carry out tips
and duties by coaching.5. Not like many different mammals, raccoons don't hibernate in the course of the winter
months. As a substitute, they enter a state of dormancy often known as torpor, which
permits them to preserve power and survive harsh climate situations. Throughout
this time, their coronary heart charge slows dramatically, from round 70-80 beats per
minute to simply 10-20!I hope these fascinating info will present a complete understanding of
the fascinating raccoon species!
Der Klassifikator bestätigte, dass es sich um ein Tier handelte, und dann beschrieb der Agent mit dem Modell llava:7b das Tier und das Bild und übergab es nacheinander an den Informationsagenten. Obwohl der Informationsagent llama2 verwendete, ein textbasiertes Modell, konnte er den Kontext des vorherigen Agenten verwenden und Informationen über einen Waschbären liefern.
Lesen Sie auch: Erstellen eines reaktionsfähigen Chatbots mit Llama 3.1, Ollama und LangChain
Abschluss
Es ist sinnvoll, mehrere LLMs entsprechend ihrer Stärken zu verwenden, da unterschiedliche Modelle bei unterschiedlichen Aufgaben hervorragende Ergebnisse erzielen. Wir haben CrewAI und Ollama verwendet, um die Zusammenarbeit mehrerer Agenten zu demonstrieren, und auch lokal LLMs von Ollama verwendet. Ja, die Ollama-Modelle sind aus offensichtlichen Gründen möglicherweise langsamer als Cloud-basierte Modelle, aber beide haben ihre eigenen Vor- und Nachteile. Die Wirksamkeit des Agenten-Frameworks hängt von den Arbeitsabläufen und der Verwendung der richtigen Instruments und LLMs zur Optimierung der Ergebnisse ab.
Häufig gestellte Fragen
Antwort: Wenn dieser Wert auf „True“ gesetzt ist, handelt es sich um einen CrewAI-Parameter, mit dem Agenten Aufgaben an andere zuweisen können, wodurch komplexe Aufgabenabläufe und Zusammenarbeit ermöglicht werden.
Antwort: crewAI verwendet Pydantic-Objekte, um Eingabe-/Ausgabedatenstrukturen für Aufgaben zu definieren und zu validieren und so sicherzustellen, dass Agenten Daten im erwarteten Format empfangen und produzieren.
Antwort: crewAI schafft dies, indem es Agenten und Aufgaben in einem „Crew“-Objekt organisiert und Aufgaben basierend auf benutzerdefinierten Abhängigkeiten sequenziell koordiniert.
Antwort: Ja, beide unterstützen benutzerdefinierte LLMs. Geben Sie für crewAI den Modellpfad/-namen an, wenn Sie einen Agenten erstellen. Befolgen Sie für Ollama deren Dokumentation, um benutzerdefinierte Modelle zu erstellen und auszuführen.