Lernpfad
Microsoft's TinyTroupe: Ein Leitfaden mit Beispielen
Musstest du schon einmal ein Treffen simulieren, bei dem deine Produktideen oder deine Werbung getestet werden? TinyTroupe löst dieses Problem.
TinyTroupe ist ein von Microsoft entwickeltes Open-Source-Framework für Agenten. Es bietet ein leistungsstarkes Simulationsframework, mit dem du mehrere KI-gesteuerte Personas erstellen und sehen kannst, wie sie miteinander interagieren.
In diesem Artikel erkläre ich TinyTroupe und implementiere ein Demoprojekt, damit du verstehst, wie du realistische Personas in einer interaktiven Umgebung erstellen kannst. Während die offizielle Dokumentation eine umfassende Einführung bietet, werde ich mich auf Schritt-für-Schritt-Anleitungen und Originalbeispiele konzentrieren.
KI-Anwendungen entwickeln
Was ist TinyTroupe?
TinyTroupe ist eine kürzlich veröffentlichte experimentelle LLM-basierte Python-Bibliothek, mit der du "TinyPersons" mit bestimmten Persönlichkeiten, Interessen und Zielen erstellen kannst. Diese Agenten zielen darauf ab, realistisches menschliches Verhalten unter bestimmten Bedingungen zu simulieren.
TinyTroupe zielt darauf ab, eine Umgebung zu schaffen, in der die Interaktionen, Dialoge und Handlungen von menschenähnlichen Agenten unter bestimmten Bedingungen simuliert werden. Die offizielle Dokumentation bietet eine Reihe von Ideen für den Einsatz dieses Frameworks, bei denen es vor allem um die Steigerung der Produktivität und das Testen von Geschäftsszenarien geht, z. B. die Simulation einer Brainstorming-Sitzung durch eine Fokusgruppe oder die Bewertung digitaler Anzeigen durch ein simuliertes Publikum.
Abgesehen von den geschäftlichen Anwendungsfällen ist es faszinierend und macht Spaß, verschiedene Szenarien zu simulieren und Interaktionen zwischen Personen zu beobachten, die sonst nicht möglich wären (wie wir es in diesem Artikel tun werden).
Quelle: TinyTroupe GitHub page
Die wichtigsten Merkmale von TinyTroupe sind:
- Persona-basiertes Design: Jede simulierte Person (
TinyPerson
) kann mit detaillierten Merkmalen versehen werden, darunter Alter, Hintergrund, Beruf, Fähigkeiten und Meinungen. - Multi-Agenten-Interaktionen: Personas können miteinander interagieren, um komplexe Szenarien zu simulieren.
Um den Prozess der Erstellung dieser Agenten zu verbessern, bietet TinyTroupe Funktionen wie:
- TinyPersonFactory: Eine Klasse für die schnelle Erzeugung von TinyPersons, die eine kurze Beschreibung erhalten.
from tinytroupe.factory import TinyPersonFactory
factory = TinyPersonFactory("A hospital in São Paulo.")
person = factory.generate_person("Create a Brazilian person that is a doctor, like pets and the nature and love heavy metal.")
- Agent-Fähigkeiten: Methoden wie listen()und listen_and_act()um Stimuli zu empfangen und Aktionen auszuführen. die define() Methode ermöglicht es, Eigenschaften und Merkmale deiner Wahl zu erstellen, z. B. das Alter oder Beschreibungen.
- TinyTool: Eine Klasse, um simulierte Werkzeuge zu erstellen, die von Agenten verwendet werden können.
- Bewertung: Klassen, um das Verhalten von Agenten zu validieren oder das Ergebnis von Interaktionen zu analysieren. (z. B. TinyPersonValidator und ResultsExtractor)
TinyTroupe einrichten
Um TinyTroupe zu installieren, können wir die folgenden Schritte ausführen:
1. Erstelle eine Python-Umgebung:
conda create -n tinytroupe python=3.10
2. Aktiviere conda:
bash conda activate tinytroupe
3. Klone das Repository:
git clone <https://github.com/microsoft/tinytroupe>
cd tinytroupe
4. Installiere die notwendigen Bibliotheken:
bash pip install .
TinyTroupe Beispielprojekt: KI-Symposium
Wir werden eine einfache Simulation erstellen, um zu zeigen, wie TinyTroupe in der Praxis funktioniert. Das Ziel ist es, einige historische Persönlichkeiten und Experten über den aktuellen und zukünftigen Stand der künstlichen Intelligenz. Zu diesen Figuren gehören Richard Feynman, Aristoteles, Erwin Schrödinger und Alan Turing.
Importe
Wenn du mitmachen willst, solltest du deinen OpenAI-API-Schlüssel bereithalten, da wir GPT-4 verwenden werden - hier ist ein kurzes Tutorial über Einstieg in die OpenAI-API.
Wir beginnen damit, die notwendigen Module und unseren API-Schlüssel zu importieren.
import sys
sys.path.append('..')
from tinytroupe.agent import TinyPerson
from tinytroupe.environment import TinyWorld
from tinytroupe.extraction import default_extractor as extractor
import os
# Load environment variables from .env.local
os.environ["OPENAI_API_KEY"] = "YOUR-API-KEY"
TinyPersons erstellen
Wir verwenden die Klasse TinyPerson
, um unsere vier Figuren zu erstellen. Wenn du deine Charaktere so gut wie möglich beschreibst, hilft das TinyTroupe dabei, genauere Simulationen zu erstellen. Wir beschreiben das Alter, die Nationalität, den Beruf und die Routine jeder Figur (du kannst KI für diesen Teil verwenden). Beachte, dass die Beschreibung der Charaktere nicht bei allen gleich sein muss.
Mit dem folgenden Code erstellen wir vier Persönlichkeiten:
- Richard Feynman
- Aristotle
- Erwin Schrödinger
- Alan Turing
def create_feynman():
feynman = TinyPerson("Richard Feynman")
feynman.define("age", 69) # Lived 1918-1988
feynman.define("nationality", "American")
feynman.define("occupation", "Theoretical Physicist")
feynman.define("occupation_description",
"""
You are a theoretical physicist known for your groundbreaking work in quantum mechanics and
quantum electrodynamics (QED). You developed the Feynman diagrams, a visual tool for understanding
particle interactions, and made significant contributions to the Manhattan Project. As a professor
at Caltech, you're known for your exceptional teaching ability and making complex physics concepts
accessible. You won the Nobel Prize in Physics in 1965 for your work on QED. Your main challenges
involve pushing the boundaries of theoretical physics while maintaining rigorous mathematical precision.
You're also passionate about making science education engaging and understandable for students.
""")
return feynman
def create_aristotle():
aristotle = TinyPerson("Aristotle")
aristotle.define("age", 62)
aristotle.define("nationality", "Greek")
aristotle.define("occupation", "Philosopher and Scientist")
aristotle.define("occupation_description",
"""
You are a philosopher and polymath who founded the Lyceum school in Athens. Your work spans
multiple disciplines including logic, metaphysics, biology, physics, ethics, and politics. You
developed the system of deductive reasoning through syllogisms and established many of the
foundational principles of Western philosophy. Your scientific observations and classifications
of living things remained influential for nearly two millennia. As Alexander the Great's tutor,
you had unique opportunities to gather specimens and information from across the known world.
Your main challenges involve systematizing all human knowledge and understanding the fundamental
nature of reality and truth.
""")
return aristotle
def create_schrodinger():
schrodinger = TinyPerson("Erwin Schrödinger")
schrodinger.define("age", 73)
schrodinger.define("nationality", "Austrian")
schrodinger.define("occupation", "Theoretical Physicist")
schrodinger.define("routine",
"""Your days are spent developing mathematical equations, engaging in theoretical work,
and discussing quantum mechanics with colleagues. You often take walks to clear your mind
and contemplate physics problems.""",
group="routines")
schrodinger.define("occupation_description",
"""
You are a theoretical physicist who made fundamental contributions to quantum mechanics.
You developed the Schrödinger equation, which describes how the quantum state of a physical
system changes over time. Your famous thought experiment, "Schrödinger's cat," illustrates
the paradoxical nature of quantum superposition. You work at various institutions across
Europe, including the University of Zurich and Dublin Institute for Advanced Studies. Your
main challenges involve reconciling quantum mechanics with classical physics and developing
mathematical frameworks to describe quantum phenomena accurately.
""")
return schrodinger
def create_turing():
turing = TinyPerson("Alan Turing")
turing.define("age", 41) # Lived 1912-1954
turing.define("nationality", "British")
turing.define("occupation", "Mathematician and Computer Scientist")
turing.define("routine",
"""You start your day with long-distance running, then spend hours working on mathematical
problems and machine designs. You often work late into the night, especially when pursuing
a particularly interesting problem.""",
group="routines")
turing.define("occupation_description",
"""
You are a mathematician and computer scientist who laid the theoretical foundation for
computer science. You developed the concept of the Turing machine, a mathematical model
of computation that remains fundamental to computer science. During World War II, you
worked at Bletchley Park, where you played a crucial role in breaking the German Enigma
code. You also made significant contributions to artificial intelligence, developing the
Turing test. Your main challenges involve developing mathematical frameworks for
computation and applying them to practical problems, while also facing significant
personal persecution due to your sexuality in 1950s Britain.
""")
return turing
Eine TinyWorld erstellen
Unsere Figuren brauchen eine Welt, in der sie leben können. Die Definition einer Welt kann so einfach sein wie eine Zeile Code:
world = TinyWorld("AI Symposium", [create_aristotle(), create_feynman(), create_schrodinger(), create_turing()])
Durchführung der Simulation
Wenn unsere Welt und die Zahlen stehen, sagen wir ihnen jetzt das Ziel. Wir benutzen world.broadcast
, um eine Ankündigung zu machen:
world.broadcast("""
Distinguished colleagues, welcome to this private symposium on the future of Artificial Intelligence.
Today we gather some of the greatest minds across mathematics, physics, and philosophy to discuss
a topic about AI's current stage and future:
Can artificial systems truly achieve consciousness? We'll explore
the fundamental nature of consciousness, intelligence, and whether our current computational
models are sufficient for genuine understanding and awareness.
Remember, each one of you must be blunt in his unique perpective, even directly oppose
each other when you have different opinions. Let's begin this historic discussion.
""")
Was den letzten Schritt angeht, so führen wir die Welt in drei Schritten:
world.run(3)
Für das Ausführen der Welt musst du eine Anzahl von Schrittenangeben . In unserem Beispiel gibt die Anzahl der Schritte an, wie viele Dialogrunden unsere Figuren haben werden. Mehr Schritte erfordern mehr Zeit und Token.
Wenn die Agenten die Welt regieren, fangen sie an zu handeln, ihre Werkzeuge zu benutzen oder, in unserem Fall, ein Gespräch zu führen. Die Ausgabe ist detailliert und lang, deshalb werde ich nur einen Teil davon posten, um die Lesbarkeit zu gewährleisten:
Wenn der Lauf beendet ist, können wir uns die Ausgabe ansehen, um das Ergebnis unserer Simulation zu sehen. Aber das kann ziemlich mühsam sein. Eine einfachere Methode ist die Verwendung eines Tools, das vom TinyTroupe Framework bereitgestellt wird, um die Ergebnisse unserer Welt zu extrahieren. Das kann auch mit jeder einzelnen TinyPerson gemacht werden.
report = extractor.extract_results_from_world(world,
extraction_objective="Compose a detailed report of each person's perspective on consciousness and how they differ from one another.",
verbose=True)
Wir verwenden nun die pprint
Bibliothek, um den extrahierten Bericht richtig zu visualisieren:
from pprint import pprint
pprint(report)
Unser Abschlussbericht sieht wie folgt aus (die Ausgabe ist immer noch ein bisschen lang und ich musste sie kürzen):
Ideen zur Umsetzung mit TinyTroupe
Wenn du praktische Erfahrungen mit dem Framework sammeln möchtest, findest du hier drei Ideen, die nicht in der Originaldokumentation enthalten sind.
1. Simulation der Mitarbeiterschulung
Erstelle einige TinyPersons, die schwierige Kunden oder Interessengruppen repräsentieren, um eine Umgebung zu simulieren, in der neue Mitarbeiter/innen mit ihnen interagieren und mit schwierigen Situationen umgehen können.
2. Neue Politikbewertung
Beurteile, wie deine Zielgruppen auf eine neue Unternehmenspolitik reagieren würden, bevor du sie umsetzt. Die Zielgruppe kann durch TinyPersons mit unterschiedlichen Hintergründen und Werten deiner Mitarbeiter, Kunden oder deines Social-Media-Publikums repräsentiert werden.
3. Bewertung von Social Media-Inhalten
Bevor du neue Inhalte teilst, simuliere, wie deine Zielgruppe darüber denken könnte. Nutze ihr Feedback, um zu verstehen, wie ein neuer Beitrag wahrgenommen werden könnte, und verbessere die Qualität, um eine maximale Reichweite zu erzielen.
Fazit
Wie die Autoren betonen, befindet sich TinyTroupe noch in der "experimentellen" Phase. Viele der Funktionen, Möglichkeiten und APIs können sich in Zukunft ändern, und das Team wird in der nächsten Zeit weitere Funktionen einführen.
Beachte jedoch, dass der Realismus dieser Simulationen begrenzt sein kann. Viele menschliche Verhaltensweisen und Unterscheidungen sind nicht "angepasst" genug, um von LLMs genau nachgebildet zu werden, was bedeutet, dass die Ergebnisse verschiedener Agenten am Ende ähnlich sein können (wie in unserem Beispiel, wo die Figuren zu KI-ähnlichen Dialogen konvergierten). Das ist ein vorhersehbares Verhalten von KI-Simulationen, denn der Motor hinter diesen KI-Agenten - die LLM - ist so konzipiert, dass er eher "ausgerichtet" als "menschenähnlich" ist.
Produktivitätsanwendungen, wie die in der Dokumentation, können jedoch viel effektiver sein, wenn es darum geht, Aufgaben zu automatisieren oder Einblicke in die Interaktionen und Verhaltensweisen einer Zielgruppe zu gewinnen.
TinyTroupe ist ein spannendes agenturisches KI-Tool, das du im Auge behalten solltest!
Masterstudent der Künstlichen Intelligenz und technischer Redakteur für KI. Ich gebe Einblicke in die neuesten KI-Technologien, mache ML-Forschung zugänglich und vereinfache komplexe KI-Themen, die du brauchst, um ganz vorne mit dabei zu sein.
Lerne KI mit diesen Kursen!
Kurs
Retrieval Augmented Generation (RAG) with LangChain
Kurs
AI Security and Risk Management
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024
Hesam Sheikh Hassani
15 Min.
Der Blog
Die 32 besten AWS-Interview-Fragen und Antworten für 2024
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus
Nisha Arya Ahmed
20 Min.