Pular para o conteúdo principal

TinyTroupe da Microsoft: Um guia com exemplos

Saiba como usar o TinyTroupe da Microsoft para simular interações entre personas de IA com características distintas para diferentes fins.
Actualizado 28 de nov. de 2024  · 8 min de leitura

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

Aprenda a criar aplicativos de IA usando a API OpenAI.
Comece a Treinar Gratuitamente

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).

Imagem do TinyTroupe de seu repositório.

Fonte: Página do GitHub do TinyTroupe

Os principais recursos do TinyTroupe incluem:

  1. Design baseado em persona: Cada pessoa simulada (TinyPerson ) pode receber características detalhadas, incluindo idade, histórico, ocupação, habilidades e opiniões.
  2. 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:

A saída do world.run.

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):

O relatório extraído de nossa simulação mundial (saída muito longa para uma captura de tela).

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!


Hesam Sheikh Hassani's photo
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

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.

Temas

Aprenda IA com estes cursos!

programa

Developing AI Applications

23hrs hr
Learn to create AI-powered applications with the latest AI developer tools, including the OpenAI API, Hugging Face, and LangChain.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado
A tiny computer used for ML

blog

O que é o TinyML? Uma introdução ao aprendizado de máquina minúsculo

Saiba mais sobre o TinyML, seus aplicativos e benefícios, e como você pode começar a trabalhar com esse campo emergente de aprendizado de máquina.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

blog

ChatGPT vs Google Bard: Um guia comparativo para chatbots de IA

Uma introdução amigável para iniciantes aos dois chatbots com tecnologia de IA sobre os quais todos estão falando.
Javier Canales Luna's photo

Javier Canales Luna

17 min

tutorial

AI do cursor: Um guia com 10 exemplos práticos

Saiba como instalar o Cursor AI no Windows, macOS e Linux e descubra como usá-lo em 10 casos de uso diferentes.
François Aubry's photo

François Aubry

10 min

tutorial

Guia para iniciantes no uso da API do ChatGPT

Este guia o orienta sobre os conceitos básicos da API ChatGPT, demonstrando seu potencial no processamento de linguagem natural e na comunicação orientada por IA.
Moez Ali's photo

Moez Ali

11 min

tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

14 min

tutorial

Visão GPT-4: Um guia abrangente para iniciantes

Este tutorial apresentará tudo o que você precisa saber sobre o GPT-4 Vision, desde o acesso a ele, passando por exemplos práticos do mundo real, até suas limitações.
Arunn Thevapalan's photo

Arunn Thevapalan

12 min

See MoreSee More