Programa
Você já precisou simular uma reunião em que suas ideias de produtos ou anúncios são testados? TinyTroupe resolve esse problema.
O TinyTroupe é uma estrutura agêntica de código aberto desenvolvida pela Microsoft. Ele oferece uma estrutura de simulação avançada que permite que você crie várias personas com tecnologia de IA e veja como elas interagem umas com as outras.
Neste artigo, explicarei o TinyTroupe e implementarei um projeto de demonstração para ajudar você a entender como criar personas realistas em um ambiente interativo. Embora a documentação oficial forneça uma introdução abrangente, vou me concentrar em orientações passo a passo e exemplos originais.
Desenvolver aplicativos de IA
O que é a TinyTroupe?
A TinyTroupe é uma biblioteca Python experimental baseada em LLM lançada recentemente que permite que você crie "TinyPersons" com personalidades, interesses e objetivos específicos. Esses agentes têm o objetivo de simular o comportamento humano realista em condições específicas.
O objetivo do TinyTroupe é oferecer um ambiente em que sejam simuladas as interações, os diálogos e as ações de agentes semelhantes aos humanos sob condições definidas. A documentação oficial fornece várias ideias sobre por que você pode usar essa estrutura, que, em sua maioria, gira em torno de aumentar a produtividade e testar cenários de negócios, como a simulação de uma sessão de brainstorming por um grupo de foco ou como um público simulado avaliaria anúncios digitais.
Além dos casos de uso comercial, é fascinante e divertido simular diferentes cenários e observar interações entre personagens que, de outra forma, não seriam possíveis (como faremos neste artigo).
Fonte: Página do GitHub do TinyTroupe
Os principais recursos do TinyTroupe incluem:
- Design baseado em persona: Cada pessoa simulada (
TinyPerson
) pode receber características detalhadas, incluindo idade, histórico, ocupação, habilidades e opiniões. - Interações de vários agentes: As personas podem interagir umas com as outras para simulações de cenários complexos.
Para melhorar o processo de criação desses agentes, a TinyTroupe oferece recursos como:
- TinyPersonFactory: Uma classe para a geração rápida de TinyPersons, com uma breve descrição.
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.")
- Recursos do agentemétodos como listen()e listen_and_act()para receber estímulos e realizar ações. define() permite que você crie propriedades e características de sua escolha, como idade ou descrições.
- TinyTool: Uma classe para criar ferramentas simuladas que podem ser usadas por agentes.
- Avaliação: Classes para validar o comportamento dos agentes ou analisar o resultado das interações. (como TinyPersonValidator e ResultsExtractor)
Configuração do TinyTroupe
Para instalar o TinyTroupe, você pode seguir as seguintes etapas:
1. Crie um ambiente Python:
conda create -n tinytroupe python=3.10
2. Ativar conda:
bash conda activate tinytroupe
3. Clone o repositório:
git clone <https://github.com/microsoft/tinytroupe>
cd tinytroupe
4. Instale as bibliotecas necessárias:
bash pip install .
Projeto de exemplo da TinyTroupe: Simpósio de IA
Criaremos uma simulação simples para demonstrar como o TinyTroupe funciona em ação. O objetivo é fazer com que algumas figuras históricas e especialistas discutam o estado atual e futuro da inteligência artificial. Essas figuras incluem Richard Feynman, Aristóteles, Erwin Schrödinger e Alan Turing.
Importações
Se você quiser acompanhar o processo, certifique-se de ter sua chave de API da OpenAI pronta, pois usaremos o GPT-4o - aqui está um tutorial rápido sobre como começar a usar a API da OpenAI.
Começamos importando os módulos necessários e nossa chave de API.
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"
Criando TinyPersons
Usamos a classe TinyPerson
para criar nossas quatro figuras. Descrever seus personagens o máximo possível ajudaria a TinyTroupe a criar simulações mais precisas. Descrevemos a idade, a nacionalidade, a ocupação e a rotina de cada figura (você pode usar IA para essa parte). Observe que a descrição dos personagens não precisa ser consistente em todos eles.
Por meio do código abaixo, criamos quatro personalidades:
- Richard Feynman
- Aristóteles
- 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
Criando um TinyWorld
Nossas figuras precisam de um mundo para viver. A definição de um mundo pode ser tão simples quanto uma linha de código:
world = TinyWorld("AI Symposium", [create_aristotle(), create_feynman(), create_schrodinger(), create_turing()])
Execução da simulação
Com o nosso mundo e os números definidos, agora dizemos a eles qual é a meta. Usamos o site world.broadcast
para fazer um anúncio:
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.
""")
Quanto à última etapa, administramos o mundo em três etapas:
world.run(3)
A execução do mundo exige que você especifique um número de etapas. Em nosso exemplo, o número de etapas indica quantas rodadas de diálogo nossas figuras terão. Mais etapas exigem mais tempo e tokens.
Ao administrar o mundo, os agentes começariam a agir, a usar suas ferramentas ou, no nosso caso, a conversar. O resultado é detalhado e longo, portanto, publicarei apenas uma parte dele para facilitar a leitura:
Quando a execução for concluída, você poderá ver o resultado da simulação. Mas isso pode ser um pouco entediante. Uma abordagem mais fácil é usar uma ferramenta fornecida pela estrutura da TinyTroupe para extrair os resultados do nosso mundo. Isso também pode ser feito com cada TinyPerson individual.
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)
Agora, usamos a biblioteca pprint
para visualizar adequadamente o relatório extraído:
from pprint import pprint
pprint(report)
Nosso relatório final é o seguinte (o resultado ainda é um pouco longo, e tive que truncá-lo):
Ideias para implementar com a TinyTroupe
Se você quiser obter experiência prática com a estrutura, aqui estão três ideias que não são abordadas na documentação original.
1. Simulação de treinamento de funcionários
Crie algumas TinyPersons que representem clientes ou partes interessadas desafiadores para simular um ambiente em que os novos funcionários possam interagir com eles e lidar com situações difíceis.
2. Avaliação de novas políticas
Avalie como seus grupos-alvo reagiriam a uma nova política da empresa antes de implementá-la. O grupo-alvo pode ser representado por TinyPersons com diferentes origens e valores de seus funcionários, clientes ou público de mídia social.
3. Avaliação de conteúdo de mídia social
Antes de compartilhar um novo conteúdo, simule como seu público-alvo poderia pensar sobre ele. Use o feedback deles para entender como uma nova postagem pode ser percebida e melhore a qualidade para obter o máximo de alcance.
Conclusão
Como os autores enfatizam, a TinyTroupe está em fase "experimental". Muitas das funções, recursos e APIs podem mudar no futuro, e a equipe implementará mais recursos no próximo período.
Observe, no entanto, que o realismo dessas simulações pode ser limitado. Muitos comportamentos e distinções humanos não são "alinhados" o suficiente para serem replicados com precisão pelos LLMs, o que significa que os resultados de diferentes agentes podem acabar sendo semelhantes (como visto em nosso exemplo, em que as figuras convergiram para diálogos semelhantes aos da IA). Esse é um comportamento previsível das simulações de IA, já que o mecanismo por trás desses agentes de IA - os MLMs - foi projetado para ser mais "alinhado" do que "semelhante ao humano".
No entanto, os aplicativos de produtividade, como os da documentação, podem ser muito mais eficazes na automatização de tarefas ou na obtenção de informações sobre as interações e os comportamentos de um grupo-alvo.
A TinyTroupe é uma ferramenta de IA agêntica interessante para você ficar de olho!
Estudante de mestrado em Inteligência Artificial e redatora técnica de IA. Compartilho insights sobre a mais recente tecnologia de IA, tornando a pesquisa de ML acessível e simplificando tópicos complexos de IA necessários para manter você na vanguarda.