Leerpad
Heb je ooit een meeting willen simuleren waarin je productideeën of advertenties worden getest? TinyTroupe lost dit probleem op.
TinyTroupe is een open-source agentisch framework ontwikkeld door Microsoft. Het biedt een krachtig simulatiekader waarmee je meerdere AI-aangedreven persona’s kunt creëren en kunt zien hoe ze met elkaar interacteren.
In dit artikel leg ik TinyTroupe uit en bouw ik een demoproject om je te laten zien hoe je realistische persona’s maakt in een interactieve omgeving. Hoewel de officiële documentatie een uitgebreide introductie biedt, richt ik me op stapsgewijze begeleiding en originele voorbeelden.
Wat is TinyTroupe?
TinyTroupe is een recent uitgebrachte experimentele op LLM gebaseerde Python-bibliotheek waarmee je “TinyPersons” kunt creëren met specifieke persoonlijkheden, interesses en doelen. Deze agenten zijn bedoeld om realistisch menselijk gedrag onder bepaalde omstandigheden te simuleren.
TinyTroupe wil een setting bieden waarin de interacties, dialogen en acties van mensachtige agenten onder gedefinieerde voorwaarden worden gesimuleerd. De officiële documentatie biedt een aantal ideeën waarom je dit framework zou gebruiken, meestal gericht op het verhogen van de productiviteit en het testen van zakelijke scenario’s, zoals het simuleren van een brainstormsessie door een focusgroep of hoe een gesimuleerd publiek digitale advertenties zou beoordelen.
Naast zakelijke use-cases is het ook fascinerend en leuk om verschillende scenario’s te simuleren en interacties tussen personages te observeren die anders niet mogelijk zouden zijn (zoals we in dit artikel doen).

Bron: TinyTroupe GitHub-pagina
Belangrijkste kenmerken van TinyTroupe zijn:
- Persona-gebaseerd ontwerp: Elke gesimuleerde persoon (
TinyPerson) kan gedetailleerde kenmerken krijgen, waaronder leeftijd, achtergrond, beroep, vaardigheden en meningen. - Multi-agentinteracties: Persona’s kunnen met elkaar interacteren voor complexe scenario-simulaties.
Om het bouwen van deze agenten te verbeteren, biedt TinyTroupe mogelijkheden zoals:
- TinyPersonFactory: Een klasse voor het snel genereren van TinyPersons op basis van een korte beschrijving.
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.")
- Agentmogelijkheden: methoden zoals listen() en listen_and_act() om prikkels te ontvangen en acties te ondernemen. De methode define() maakt het mogelijk om eigenschappen en kenmerken naar keuze te creëren, zoals leeftijd of beschrijvingen.
- TinyTool: Een klasse om gesimuleerde tools te maken die door agenten kunnen worden gebruikt.
- Evaluatie: Klassen om het gedrag van agenten te valideren of de uitkomst van interacties te analyseren (zoals TinyPersonValidator en ResultsExtractor)
TinyTroupe installeren
Om TinyTroupe te installeren, kunnen we de volgende stappen nemen:
1. Maak een Python-omgeving:
conda create -n tinytroupe python=3.10
2. Activeer conda:
bash conda activate tinytroupe
3. Clone de repository:
git clone <https://github.com/microsoft/tinytroupe>
cd tinytroupe
4. Installeer de benodigde libraries:
bash pip install .
TinyTroupe voorbeeldproject: AI-symposium
We bouwen een eenvoudige simulatie om te laten zien hoe TinyTroupe in de praktijk werkt. Het doel is dat enkele historische figuren en experts de huidige staat en toekomst van kunstmatige intelligentie bespreken. Deze figuren zijn onder meer Richard Feynman, Aristoteles, Erwin Schrödinger en Alan Turing.
Imports
Als je wilt meedoen, zorg dan dat je je OpenAI API-sleutel bij de hand hebt, aangezien we GPT-4o zullen gebruiken—hier is een korte tutorial over aan de slag gaan met OpenAI’s API.
We beginnen met het importeren van de benodigde modules en onze API-sleutel.
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 maken
We gebruiken de klasse TinyPerson om onze vier figuren te creëren. Hoe vollediger je je personages beschrijft, hoe beter TinyTroupe nauwkeurige simulaties kan maken. We beschrijven van elke figuur de leeftijd, nationaliteit, beroep en routine (je kunt hier AI voor gebruiken). Merk op dat de beschrijving van de personages niet in alle gevallen consistent hoeft te zijn.
Met de onderstaande code creëren we vier persoonlijkheden:
- Richard Feynman
- Aristoteles
- 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
Een TinyWorld maken
Onze figuren hebben een wereld nodig om in te leven. Een wereld definiëren kan zo eenvoudig zijn als één regel code:
world = TinyWorld("AI Symposium", [create_aristotle(), create_feynman(), create_schrodinger(), create_turing()])
De simulatie uitvoeren
Met onze wereld en figuren klaar, vertellen we ze nu het doel. We gebruiken world.broadcast om een aankondiging te doen:
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.
""")
Als laatste stap voeren we de wereld uit in drie stappen:
world.run(3)
Het uitvoeren van de wereld vereist dat je een aantal stappen opgeeft. In ons voorbeeld geeft het aantal stappen aan hoeveel gespreksrondes onze figuren zullen hebben. Meer stappen kosten meer tijd en tokens.
Tijdens het uitvoeren van de wereld beginnen de agenten te handelen, hun tools te gebruiken of, in ons geval, een gesprek te voeren. De output is gedetailleerd en lang, dus ik plaats slechts een deel ervan voor de leesbaarheid:

Als de run is voltooid, kunnen we naar de output kijken om de uitkomst van onze simulatie te zien. Maar dat kan nogal tijdrovend zijn. Een eenvoudigere aanpak is om een tool te gebruiken die door het TinyTroupe-framework wordt geleverd om de resultaten van onze wereld te extraheren. Dit kan ook per individuele TinyPerson.
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)
We gebruiken nu de bibliotheek pprint om het geëxtraheerde rapport netjes te visualiseren:
from pprint import pprint
pprint(report)
Ons eindrapport ziet er als volgt uit (de output is nog steeds wat lang, dus ik heb het ingekort):

Ideeën om te bouwen met TinyTroupe
Wil je hands-on ervaring met het framework? Hier zijn drie ideeën die niet in de originele documentatie staan.
1. Simulatie voor medewerkerstraining
Maak een paar TinyPersons die uitdagende klanten of stakeholders voorstellen om een omgeving te simuleren waarin nieuwe medewerkers met hen kunnen interacteren en met lastige situaties leren omgaan.
2. Beoordeling van nieuw beleid
Evalueer hoe je doelgroepen zouden reageren op een nieuw bedrijfsbeleid voordat je het implementeert. De doelgroep kan worden vertegenwoordigd door TinyPersons met verschillende achtergronden en waarden van je medewerkers, klanten of socialmediapubliek.
3. Evaluatie van socialmediacontent
Simuleer vóór het delen van nieuwe content hoe je doelgroep erover zou kunnen denken. Gebruik hun feedback om te begrijpen hoe een nieuwe post wordt ontvangen en verbeter de kwaliteit voor maximaal bereik.
Conclusie
Zoals de auteurs benadrukken, bevindt TinyTroupe zich in de “experimentele” fase. Veel functies, mogelijkheden en API’s kunnen in de toekomst veranderen, en het team zal in de komende periode meer features uitrollen.
Let er echter op dat het realisme van deze simulaties beperkt kan zijn. Veel menselijk gedrag en onderscheidingen zijn niet genoeg “uitgelijnd” om nauwkeurig te worden gerepliceerd door LLM’s, wat betekent dat de uitkomsten van verschillende agenten vergelijkbaar kunnen uitvallen (zoals in ons voorbeeld, waar de figuren naar AI-achtige dialogen convergeerden). Dit is voorspelbaar gedrag bij AI-simulaties, omdat de motor achter deze AI-agenten—LLM’s—meer is ontworpen om “uitgelijnd” te zijn dan “menselijk”.
Toch kunnen productiviteitstoepassingen, zoals die in de documentatie, veel effectiever zijn bij het automatiseren van taken of het verkrijgen van inzicht in de interacties en gedragingen van een doelgroep.
TinyTroupe is een spannende agentische AI-tool om in de gaten te houden!
Masterstudent Kunstmatige Intelligentie en AI-technisch schrijver. Ik deel inzichten over de nieuwste AI-technologie, maak ML-onderzoek toegankelijk en vereenvoudig complexe AI-onderwerpen die nodig zijn om jou voorop te houden.

