Lộ trình
Bạn đã bao giờ cần mô phỏng một cuộc họp để kiểm thử ý tưởng sản phẩm hoặc quảng cáo chưa? TinyTroupe sẽ giải quyết vấn đề này.
TinyTroupe là một framework agent mã nguồn mở do Microsoft phát triển. Nó cung cấp một khung mô phỏng mạnh mẽ cho phép bạn tạo nhiều persona được hỗ trợ bởi AI và quan sát cách chúng tương tác với nhau.
Trong bài viết này, tôi sẽ giải thích về TinyTroupe và triển khai một dự án demo để giúp bạn hiểu cách tạo các persona chân thực trong một môi trường tương tác. Trong khi tài liệu chính thức cung cấp phần giới thiệu toàn diện, tôi sẽ tập trung vào hướng dẫn từng bước và các ví dụ nguyên bản.
TinyTroupe là gì?
TinyTroupe là một thư viện Python thử nghiệm dựa trên LLM mới phát hành, cho phép bạn tạo các "TinyPerson" với tính cách, sở thích và mục tiêu cụ thể. Các agent này nhằm mô phỏng hành vi con người thực tế trong những điều kiện nhất định.
Mục tiêu của TinyTroupe là cung cấp một bối cảnh nơi các tương tác, đối thoại và hành động của các agent giống con người dưới những điều kiện xác định được mô phỏng. Tài liệu chính thức đưa ra nhiều lý do để sử dụng framework này, chủ yếu xoay quanh việc tăng năng suất và thử nghiệm các kịch bản kinh doanh, như mô phỏng một buổi brainstorm của nhóm tập trung hoặc cách một khán giả mô phỏng đánh giá quảng cáo số.
Ngoài các trường hợp sử dụng cho doanh nghiệp, việc mô phỏng các kịch bản khác nhau và quan sát tương tác giữa các nhân vật cũng rất thú vị và vui nhộn, những điều mà bình thường không thể thực hiện (như chúng ta sẽ làm trong bài viết này).

Nguồn: Trang GitHub TinyTroupe
Các tính năng chính của TinyTroupe gồm:
- Thiết kế dựa trên persona: Mỗi người được mô phỏng (
TinyPerson) có thể được gán các đặc điểm chi tiết, bao gồm tuổi, xuất thân, nghề nghiệp, kỹ năng và quan điểm. - Tương tác đa agent: Các persona có thể tương tác với nhau để mô phỏng các kịch bản phức tạp.
Để cải thiện quy trình xây dựng các agent này, TinyTroupe cung cấp các khả năng như:
- TinyPersonFactory: Một lớp để tạo TinyPerson nhanh chóng dựa trên mô tả ngắn.
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.")
- Khả năng của agent: các phương thức như listen() và listen_and_act() để nhận kích thích và thực hiện hành động. phương thức define() cho phép tạo các thuộc tính và đặc điểm theo ý bạn, như tuổi hoặc mô tả.
- TinyTool: Một lớp để tạo các công cụ mô phỏng có thể được agent sử dụng.
- Đánh giá: Các lớp để kiểm định hành vi của agent hoặc phân tích kết quả tương tác (chẳng hạn như TinyPersonValidator và ResultsExtractor)
Thiết lập TinyTroupe
Để cài đặt TinyTroupe, chúng ta có thể thực hiện các bước sau:
1. Tạo môi trường Python:
conda create -n tinytroupe python=3.10
2. Kích hoạt conda:
bash conda activate tinytroupe
3. Clone kho mã:
git clone <https://github.com/microsoft/tinytroupe>
cd tinytroupe
4. Cài đặt các thư viện cần thiết:
bash pip install .
Dự án ví dụ TinyTroupe: Hội thảo AI
Chúng ta sẽ xây dựng một mô phỏng đơn giản để trình diễn TinyTroupe hoạt động như thế nào. Mục tiêu là mời một số nhân vật lịch sử và chuyên gia thảo luận về hiện trạng và tương lai của trí tuệ nhân tạo. Các nhân vật gồm Richard Feynman, Aristotle, Erwin Schrödinger và Alan Turing.
Imports
Nếu bạn muốn làm theo, hãy chuẩn bị sẵn khóa API OpenAI vì chúng ta sẽ dùng GPT-4o — đây là hướng dẫn nhanh về bắt đầu với API của OpenAI.
Chúng ta bắt đầu bằng cách import các mô-đun cần thiết và khóa 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"
Tạo TinyPerson
Chúng ta dùng lớp TinyPerson để tạo bốn nhân vật. Mô tả nhân vật càng chi tiết sẽ càng giúp TinyTroupe tạo ra các mô phỏng chính xác hơn. Chúng ta mô tả tuổi, quốc tịch, nghề nghiệp và thói quen của mỗi nhân vật (bạn có thể dùng AI cho phần này). Lưu ý mô tả các nhân vật không nhất thiết phải nhất quán giữa tất cả họ.
Qua đoạn mã dưới đây, chúng ta tạo bốn tính cách:
- 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
Tạo TinyWorld
Các nhân vật của chúng ta cần một thế giới để sống. Định nghĩa một thế giới có thể đơn giản chỉ bằng một dòng code:
world = TinyWorld("AI Symposium", [create_aristotle(), create_feynman(), create_schrodinger(), create_turing()])
Chạy mô phỏng
Khi thế giới và các nhân vật đã sẵn sàng, giờ chúng ta cho họ biết mục tiêu. Ta dùng world.broadcast để đưa ra thông báo:
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.
""")
Ở bước cuối cùng, chúng ta chạy thế giới trong ba bước:
world.run(3)
Số bước cần được chỉ định khi chạy thế giới. Trong ví dụ của chúng ta, số bước cho biết số vòng đối thoại giữa các nhân vật. Nhiều bước hơn sẽ tốn nhiều thời gian và token hơn.
Khi chạy thế giới, các agent sẽ bắt đầu hành động, sử dụng công cụ của mình hoặc, trong trường hợp của chúng ta, trò chuyện. Đầu ra rất chi tiết và dài, nên tôi chỉ đăng một phần để dễ đọc:

Khi chạy xong, chúng ta có thể xem đầu ra để thấy kết quả mô phỏng. Nhưng việc này có thể hơi mất công. Cách dễ hơn là dùng một công cụ do framework TinyTroupe cung cấp để trích xuất kết quả của thế giới. Việc này cũng có thể thực hiện với từng TinyPerson riêng lẻ.
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)
Giờ chúng ta dùng thư viện pprint để hiển thị báo cáo đã trích xuất cho rõ ràng:
from pprint import pprint
pprint(report)
Báo cáo cuối cùng của chúng ta như sau (đầu ra vẫn hơi dài nên tôi đã cắt bớt):

Các ý tưởng triển khai với TinyTroupe
Nếu bạn muốn thực hành với framework, dưới đây là ba ý tưởng không có trong tài liệu gốc.
1. Mô phỏng đào tạo nhân viên
Tạo một vài TinyPerson đại diện cho khách hàng hoặc bên liên quan khó tính để mô phỏng môi trường cho nhân viên mới tương tác và xử lý tình huống khó.
2. Đánh giá chính sách mới
Đánh giá cách các nhóm mục tiêu sẽ phản ứng với một chính sách công ty mới trước khi triển khai. Nhóm mục tiêu có thể được đại diện bởi các TinyPerson với nền tảng và hệ giá trị khác nhau của nhân viên, khách hàng hoặc khán giả mạng xã hội của bạn.
3. Đánh giá nội dung mạng xã hội
Trước khi chia sẻ nội dung mới, hãy mô phỏng cách khán giả mục tiêu có thể nghĩ về nó. Dùng phản hồi của họ để hiểu một bài đăng mới có thể được đón nhận ra sao và cải thiện chất lượng để tối đa hóa độ phủ.
Kết luận
Như các tác giả nhấn mạnh, TinyTroupe đang ở giai đoạn "thử nghiệm". Nhiều chức năng, khả năng và API có thể thay đổi trong tương lai, và đội ngũ sẽ phát hành thêm tính năng trong thời gian tới.
Tuy nhiên, mức độ chân thực của các mô phỏng này có thể bị giới hạn. Nhiều hành vi và khác biệt của con người chưa đủ "căn chỉnh" để LLM tái hiện chính xác, nghĩa là kết quả của các agent có thể trở nên tương đồng (như trong ví dụ của chúng ta, nơi các nhân vật hội tụ về kiểu đối thoại giống AI). Đây là hành vi có thể dự đoán của các mô phỏng AI, vì động cơ đằng sau các agent AI — LLM — được thiết kế để "căn chỉnh" nhiều hơn là "giống con người".
Tuy vậy, các ứng dụng năng suất, như trong tài liệu, có thể hiệu quả hơn nhiều trong việc tự động hóa tác vụ hoặc thu nhận hiểu biết về tương tác và hành vi của nhóm mục tiêu.
TinyTroupe là một công cụ AI theo hướng agent đáng để theo dõi!
Học viên cao học ngành Trí tuệ nhân tạo và chuyên viên biên tập kỹ thuật AI. Tôi chia sẻ những góc nhìn về công nghệ AI mới nhất, giúp phổ biến nghiên cứu ML và đơn giản hóa các chủ đề AI phức tạp để bạn luôn đi đầu.
