TinyTroupe 是微软开源的一个实验性 Python 库,主题为“基于大语言模型的多智能体角色模拟,用于增强想象力和商业洞察”。它允许模拟具有特定个性、兴趣和目标的人,这些人工代理称为 TinyPerson,能够倾听用户及其他代理的发言、作出回应,并在模拟的 TinyWorld 环境中展开活动。该库通过大语言模型(尤其是 GPT-4)生成逼真的模拟行为,从而研究各种有说服力的互动和消费者类型。其重点在于理解人类行为,而非像 AI 助手那样直接支持人类行为,因此包含一些仅在模拟场景中才有意义的专门机制。与其他游戏化的大语言模型模拟方法不同,TinyTroupe 旨在启发生产力和商业场景,助力更成功的项目与产品。
主要用途与应用场景:
- 广告:在投入资金前,用模拟受众离线评估数字广告(例如 Bing Ads)。
- 软件测试:向系统(如搜索引擎、聊天机器人或 Copilot)提供测试输入,然后评估结果。
- 训练与探索性数据:生成逼真的合成数据,之后可用于训练模型或进行机会分析。
- 产品与项目管理:阅读项目或产品提案,并从特定角色(如医生、律师及各类知识工作者)的视角给出反馈。
- 头脑风暴:模拟焦点小组,以较低成本获得优质的产品反馈。
主要能力与机制:
- 高度可定制的角色(personas),包含性格特质、偏好、信念等更深层的设定,并支持通过 JSON 文件定义角色、以 TinyPerson.load_specification() 加载。
- 角色片段(fragments),用于在不同代理之间复用角色元素。
- 基于大语言模型的逻辑命题(Propositions),用于监控代理行为,例如 persona_adherence、hard_persona_adherence、self_consistency、fluency 等。
- 干预(Interventions),允许指定基于事件的模拟修改。
- TinyPerson 的动作纠正机制,提升对角色设定的遵从度、自我一致性和流畅性。
- TinyPersonFactory 采用基于计划的方法生成新代理,支持更大规模群体的采样,并可并行生成代理。
- TinyWorld 在每个模拟步骤中并行运行代理,加快模拟速度。
- InPlaceExperimentRunner 类,支持在单个文件中运行受控实验(如 A/B 测试)。
- SimulationExperimentEmpiricalValidator,使用统计检验(t 检验、KS 检验)将模拟结果与真实世界经验数据对比,以验证模拟是否匹配真实人类行为。
- AgentChatJupyterWidget,支持在 Jupyter notebook 中直接与代理交互对话。
- 客户端、环境和代理级别的成本跟踪工具,用于监控 API 费用。
- 实验性、有限度的 Ollama 支持,用于本地模型。
- 内部 LLM 使用通过 LLMChat 类和 @llm 装饰器得到更好支持,装饰器可将任意标准 Python 函数转换为基于 LLM 的函数。
- 配置机制已重构,除静态 config.ini 文件外,也支持动态编程式重新配置。
- LLM API 缓存现使用 JSON 而非 pickle。
- 默认模型为 gpt-5-mini;GPT-5 系列使用与 GPT-4 系列不同的参数,可能需要相应调整 config.ini 设置。旧版模型(gpt-4.1-mini、gpt-4o-mini)仍受支持。
使用方式与前提条件: 运行该库需要 Python 3.10 或更高版本(假定使用 Anaconda,也可使用其他 Python 发行版)、Git(用于克隆仓库和通过 pip 安装库),以及对 Azure OpenAI Service 或 OpenAI GPT-4 API 的访问权限。对于 Azure OpenAI Service,需设置 AZURE_OPENAI_KEY 和 AZURE_OPENAI_ENDPOINT 环境变量;对于 OpenAI,需设置 OPENAI_API_KEY 环境变量,例如在 Linux/macOS 上执行 export OPENAI_API_KEY=your-key-here,在 Windows PowerShell 上执行 $env:OPENAI_API_KEY="your-key-here"。默认 config.ini 使用 OpenAI API 和 gpt-5-mini 作为主模型,可通过在运行程序或 notebook 所在文件夹中放置自定义 config.ini 来定制;examples/ 文件夹提供了示例配置文件。为确保模拟期间不生成有害内容,强烈建议在 API 层面使用内容过滤器;若使用 Azure OpenAI,其提供广泛的内容审核支持。若内容过滤器拦截了 API 调用,库将抛出异常,无法继续模拟。TinyTroupe 主要针对 OpenAI 模型及兼容端点开发,以便充分发挥特定模型的能力,而非尝试适配任意模型。
示例:
- 客户访谈:商业顾问与银行家对话,逐步深入挖掘信息,直至获得满意的具体项目想法。
- 电视广告评估:评估多个在线广告选项并选出最佳,可自动提取各代理的选择并计算总体偏好。
- 产品头脑风暴:围绕 Microsoft Word 的新 AI 功能开展焦点小组,通过操纵环境让代理彼此互动,并以机器可读方式提取结果。
- 瓶装西班牙冷汤市场调研:模拟市场调研问卷,并用统计检验(t 检验、KS 检验)对比模拟代理与真实受访者的回答分布。
- AI 儿童故事讲述市场调研:模拟家长评估不同 AI 故事设备并排序,使用 Borda 计数和首选份额分析与真实调查数据对比。 例子的截图可能随更新而与本地运行结果不完全一致,但整体结构和内容应相似。目前模拟输出在深色背景下可视化效果更好,建议在 Jupyter 客户端使用深色主题。
限制与法律声明: TinyTroupe 仍处于早期阶段,是进行中的研究项目,仍在大量开发中并需要进一步整理;API 仍会频繁变动,可能破坏现有程序。它仅用于研究和模拟,用户对生成输出的任何使用负全责;使用受多项重要附加法律考量的约束,使用前应阅读完整的法律免责声明。本地模型支持并非核心团队当前优先事项。
分类:ai-agent