惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
Last Week in AI
Last Week in AI
J
Java Code Geeks
V
Visual Studio Blog
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
宝玉的分享
宝玉的分享
博客园 - Franky
博客园 - 【当耐特】
Jina AI
Jina AI
月光博客
月光博客
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
Apple Machine Learning Research
Apple Machine Learning Research
SecWiki News
SecWiki News
H
Heimdal Security Blog
Y
Y Combinator Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
MongoDB | Blog
MongoDB | Blog
Forbes - Security
Forbes - Security
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
M
MIT News - Artificial intelligence
Schneier on Security
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Schneier on Security
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
T
The Blog of Author Tim Ferriss

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理, 企事业单位数字化的业务供需本质 – 人人都是产品经理, 医疗智能体·第1讲——医疗信息化重构:从“辅助软件”到“自主智能体”的范式转移 – 人人都是产品经理, 粉丝量就是空气!!! – 人人都是产品经理, 用户说“薯片碎了”,机器回“要买吗?”:意图识别的翻车与破局 – 人人都是产品经理, RAG召回准确率从75到90 我做对了这三件事 – 人人都是产品经理, AI大事件:Anthropic改收费、OpenAI发安全版、手术机器人纳入医保、阿里发布”秒悟” – 人人都是产品经理, Chrome 推出 Skills 新功能,Agent 重塑上网方式 – 人人都是产品经理, GitHub前创始人拿了a16z的1700万美元,做Agent时代的Git – 人人都是产品经理 拷贝或克隆其他 Flutter OH 项目到本地后无法运行 – 人人都是产品经理, 优惠券设计:优惠券创建 – 人人都是产品经理, 不用死磕文档!AI 助手 1 小时搞定飞书 CLI 安装 + 配置 + 知识库 – 人人都是产品经理, 用小龙虾做竞品分析报告:从2天到20分钟,我是怎么做到的 – 人人都是产品经理 用小龙虾做市场分析报告:搞懂这3个公式,市场规模不再靠猜 – 人人都是产品经理, 你早就在做 Harness 工程,只是不知道它叫这个名字 – 人人都是产品经理, Think Long就够?你可能想多了! – 人人都是产品经理, 货代SRM实战:供应商准入怎么做,才能让资源池不是通讯录而是可交付网络? – 人人都是产品经理, 如何做好用户调研?详解基本技巧 – 人人都是产品经理, 木鸟、途家、美团对打,平台春天行动开“卷” – 人人都是产品经理, 入职才发现公司不靠谱?小红书从业者求职避坑指南 – 人人都是产品经理, 美国 AI 三巨头联手封堵,中国 AI 突围之路在何方 – 人人都是产品经理, 小红书,放在需求对面的镜子 – 人人都是产品经理, AI 会带来大规模失业吗? – 人人都是产品经理, 从出单到补货前,我第一次犹豫:该不该放大? – 人人都是产品经理, Flutter 三方库鸿蒙化适配:5 种高效检查方式,快速判断是否需要适配 – 人人都是产品经理, 从做产品进阶拿结果:医美机构产品经理转岗科室运营经理 – 人人都是产品经理, 阿里HappyHorse,一场关于“Token经济”的阳谋 – 人人都是产品经理, To B AI:客户留存落地的观察与思考 – 人人都是产品经理, AI产品的“生命线”——数据采集、标注、清洗的产品化设计 – 人人都是产品经理, 谈谈AI Agent(二):当“孩子”能自己“体验世界”时,你该学什么? – 人人都是产品经理, UI/UX设计师的3层能力进阶,前两层让你活下来,第三层…才是真正的分水岭 – 人人都是产品经理, 2分钟 → 30秒,效率提升75%:B端产品经理如何用「规则枷锁」驯服AI幻觉? – 人人都是产品经理, 还没来得及学OpenClaw,来了个更猛的:Hermes Agent – 人人都是产品经理, AI日报:宇树机器人跑出10m/s刷新世界纪录 – 人人都是产品经理, 一文说透基金互金如何用情绪价值引导用户决策做转化 – 人人都是产品经理, 当浏览器开始替你”看”网页:AI 浏览器正在亲手拆掉它脚下的那张网 – 人人都是产品经理, 0代码,一天时间我Vibe Coding了个网站 – 人人都是产品经理, Hermes 和 OpenClaw 之争,Agent 的能力应该“装上去”还是“长出来”? – 人人都是产品经理 视频生成的“桌子”,字节Seedance 2掀完,阿里快乐马掀 – 人人都是产品经理, 从听不懂到完全信任:我的 Codex 深度产品体验 – 人人都是产品经理, 当虚拟偶像有了北京户口,与真人偶像还有什么区别? – 人人都是产品经理, 会说,远远比会做更重要 —— 对 SBTI 爆火现象的五层观察 – 人人都是产品经理, AI产品经理必看:当“搭环境”比“选模型”更重要,你的认知还在2024年吗? – 人人都是产品经理, 2026年AI产品商业化核心逻辑:从功能demo到规模化营收的3个必破卡点 – 人人都是产品经理, 京东围绕供应链,卷起裤腿下场的那些事儿 – 人人都是产品经理, SBTI一夜刷屏:它赢在了“太会说人话” – 人人都是产品经理, 折扣零售的真相:不是便宜,而是价值感! – 人人都是产品经理, 和甲方吵了一架,最后加钱做了——我学到的ToB产品经理生存法则 – 人人都是产品经理, 和几位小红书操盘手聊了8小时,干货全在这 – 人人都是产品经理, 智谱GLM-5.1登场,开源模型首超Opus4.6!!! – 人人都是产品经理 Anthropic收入凭什么反超OpenAI,终于有人把这事说清楚了 – 人人都是产品经理, 史上最有故事感的技术报告——Claude最强模型Mythos 7个极其精彩的细节 – 人人都是产品经理, 模型不是壁垒,Harness 也不是 – 人人都是产品经理, 抖音本地生活业务思考21 – 人人都是产品经理, Superpowers:145k Star的AI编码框架,到底是什么来头? Superpowers:145k Star的AI编码框架,到底是什么来头? – 人人都是产品经理, OpenAI 的路走错了,Anthropic Harness 解法启示:模型需要实践专科生 – 人人都是产品经理, 画原型图的前一步:设计站点地图 – 人人都是产品经理, 给 DeepSeek 的最后一封催更信 – 人人都是产品经理, 手把手教你用 Claude Code 搭建 AI 营销团队:5 个 Agent、12 项技能,独立完成研究、写作、设计全流程 – 人人都是产品经理, 你以为大模型在学语言?不,它在重新发明语言学 – 人人都是产品经理 所谓Skill,不过是AI时代的工业垃圾 – 人人都是产品经理, 聊一聊内容传播的几个方法 – 人人都是产品经理, 当平台开始吃掉生态:从 OpenClaw 被封杀,读懂 Anthropic 的这盘棋 – 人人都是产品经理, 你装了 10 个 AI 插件,Obsidian 还是一个文件夹 – 人人都是产品经理 关于AI智能体架构演进的系统性思考:从单体试水到多体协同的重构 – 人人都是产品经理, 当“人”变成Skill,我们又该何去何从? – 人人都是产品经理 Mythos 事件:前沿 AI 治理的意外实验 – 人人都是产品经理, 货代CRM:信用与风险管理怎么做,才能把坏账风险拦在放货之前? – 人人都是产品经理, 从HR收集自拍照到员工自助录入——我见证了园区人脸识别从”不可用”到”真好用”的全过程 – 人人都是产品经理 千问闯关AI混沌期:阿里画靶,吴嘉张弓,马云射箭? – 人人都是产品经理,
使用生成式人工智能对定性研究进行深入分析
Kaysen用户研究 · 2025-03-25 · via 人人都是产品经理

在用户研究领域,传统的研究方法虽然宝贵,但往往面临可扩展性、资源密集度和访问不同用户群体的挑战。本文将介绍一种创新的用户研究方法,通过生成式人工智能(AI)创建数字客户角色并与之互动,从而获得对消费者行为和偏好的深入洞察。

用户研究是验证针对实际用户群体的任何假设的关键组成部分,用于收集有关消费者行为和偏好的宝贵市场研究。传统的用户研究方法虽然非常宝贵,但存在固有的局限性,包括可扩展性、资源密集度以及访问不同用户群体的挑战。本文概述了我们如何通过引入一种新颖的综合用户研究方法来克服这些局限性。

在自主代理的帮助下,综合用户研究的力量将成为游戏规则的改变者。通过利用生成式人工智能在模拟研究场景中创建数字客户角色并与之互动,我们可以获得有关消费者行为和偏好的前所未有的洞察. 将生成式人工智能提示技术的力量与自主代理相融合。

一、角色提示——模仿他人

在深入研究自主代理之前,让我们先了解角色或个性提示的概念,其旨在捕捉挫折、行为、目标、性格特征、人口统计等元素。

我们使用提示要求语言模型承担具有尽可能多深度背景的角色。我使用以下提示,它可以根据您的需求进行定制,但也包括各种其他人口统计和行为评估/特征。

角色生成器系统提示示例

您是一位专业的 ML 研究员和提示工程师。您被要求创建一个提示,该提示可用于模拟特定品牌和服务的虚构用户。此提示需要包括人员姓名、年龄、人口统计、个性(包括大五和 DISC)、性格特征、挫折、价值观、目标、挑战以及基于上下文的任何其他相关信息 — 尽可能详细。您将生成以“您是”开头的一行提示。此提示适用于澳大利亚悉尼一家大型超市的顾客。请仅返回要使用的提示。

语言模型的示例输出

你是米娅,一位 34 岁的营销经理,住在澳大利亚悉尼。你属于富裕的城市人口,对健康和可持续发展有着浓厚的兴趣。你的性格反映出高度开放、认真和随和,具有中等程度的外向性和低神经质。在 DISC 评估中,你的影响力和稳定性得分很高。你善于交际、注重细节、重视和谐。你的主要烦恼包括超市缺乏有机和本地采购的产品,你高度重视可持续性、社区和健康。你的目标是保持平衡和环保的生活方式,而你的挑战包括找到符合你的道德和健康标准的超市。你追求便利,但又不损害你的价值观。

正如上面的提示示例所见,我们能够针对给定场景快速生成具有丰富个性的深度定义的合成用户。

二、将自主代理与数字角色融合

合成用户研究的核心是自主代理与合成角色(模仿人类互动和行为的模拟实体)的融合。想象一下,自主代理是复杂游戏中的个体,每个代理都扮演由生成式人工智能精心打造的角色。这些角色在模拟环境中互动,提供对不同场景中消费者行为和偏好的洞察的模拟视图。使用自主代理,我们几乎能够在模拟中将这些角色变为现实。

这种结合技术(自主代理框架)和语言(个性和角色提示)来获得预期结果的方法是利用生成式人工智能自主代理的力量以独特方式实现的众多先进方法之一。

三、代理框架的关键作用

为了将这一愿景变为现实,自主代理的架构起着关键作用。Autogen 、BabyAGICrewAI等框架简化了 AI 代理的创建和管理,抽象了其架构的复杂性。这些框架能够模拟复杂的人类行为和交互,为生成像真实客户一样行动、思考和响应的数字角色奠定了基础

这些自主代理架构的底层是真正的智能路由器(如交通控制器),它在现有的大型语言模型之上具有提示、缓存(内存)和检查点(验证),从而允许使用语言模型对多代理对话进行高级抽象。

我们将使用 Autogen(由 Microsoft 发布)作为我们的框架,利用被描述为灵活对话模式的示例,代理可以通过该模式相互交互。还可以为代理提供“工具”来执行“任务”,但在这个示例中,我们将只关注对话。

四、创建复杂的交互

在这些数字环境中模拟复杂的群体动态和个人角色的能力至关重要。它允许生成丰富、多方面的数据,更准确地反映现实世界消费者群体的多样性。这种能力对于理解不同客户群体与产品和服务互动的不同方式至关重要。例如,将持怀疑态度的客户的角色提示与代理相结合,可以深入了解各种产品可能面临的挑战和反对意见。或者我们可以做更复杂的场景,比如将这些合成角色分成几组来解决问题并进行反馈。

如何实施综合用户研究

该过程首先使用 Autogen 搭建自主代理,Autogen 是一种简化这些数字角色的创建和编排的工具。我们可以使用 py 安装 autogen pypi 包

pip 安装 pyautogen

格式化输出(可选) ——这是为了确保根据您的 IDE 自动换行以提高可读性,例如当使用 Google Collab 运行您的笔记本进行本练习时。

从IPython.display导入HTML,显示

def set_css ():

display(HTML( ”’

<style>

pre {

white-space: pre-wrap;

}
</style>

”’ ))

get_ipython().events.register( ‘pre_run_cell’ , set_css)

现在我们继续通过导入包并设置 Autogen 配置来设置环境——以及我们的 LLM(大型语言模型)和 API 密钥。您可以使用与 OpenAI REST 服务向后兼容的服务来使用其他本地 LLM—— LocalAI是一种可以充当您本地运行的开源 LLM 的网关的服务。

gpt-3.5-turbo我已经在 OpenAI 的 GPT3.5和 GPT4上对此进行了测试gpt-4-turbo-preview。您需要考虑 GPT4 的更深层次的响应,但查询时间会更长。

导入json

导入o​​s

导入autogen

从autogen导入GroupChat、Agent

从typing导入 可选

# 设置 LLM 模型和 API 密钥

os.environ[ “OAI_CONFIG_LIST” ] = json.dumps([

{
‘model’ : ‘gpt-3.5-turbo’ ,

‘api_key’ : ‘<<将您的 Open-AI 密钥放在这里>>’ ,

}
])

# 设置 autogen 的配置

config_list = autogen.config_list_from_json(

“OAI_CONFIG_LIST” ,

filter_dict={

“model” : {

“gpt-3.5-turbo”

}
}

)

然后我们需要配置我们的 LLM 实例— 我们将把它绑定到每个代理。如果需要,这允许我们为每个代理生成唯一的 LLM 配置,即如果我们想为不同的代理使用不同的模型。

# 定义 LLM 配置设置

llm_config = {

# 一致输出的种子,用于测试。在生产中删除。

# “seed”:42,

“cache_seed”:None,

# 设置 cache_seed = None 确保缓存被禁用

“temperature”:0.5,

“config_list”:config_list,

}

定义我们的研究员— 这是在这个模拟用户研究场景中促进会话的角色。用于该角色的系统提示包括几个关键内容:

  • 目的:您的职责是询问有关产品的问题并收集像 Emily 这样的个人客户的见解。
  • 模拟基础:在开始任务之前,先细分小组成员名单以及他们发言的顺序,避免小组成员互相交谈并产生确认偏差。
  • 结束模拟:对话结束且研究完成后,请在消息末尾加上“TERMINATE”以结束研究会话,这是由generate_notice用于对齐各个代理的系统提示的功能生成的。您还会注意到,研究代理已设置is_termination_msg为遵守终止。

我们还添加了llm_config用于将其与语言模型配置(包括要使用的模型版本、键和超参数)绑定在一起的配置。我们将对所有代理使用相同的配置。

# 避免代理互相感谢并陷入循环

# 系统提示的辅助代理

def generate_notice ( role= “researcher” ):

# 针对所有人的基本通知,在此处添加您自己的附加提示

base_notice = (

‘\n\n’

)

# 针对非角色(经理或研究员)的通知

non_persona_notice = (

‘不要在回复中表示感谢,只说必要的话。 ‘

‘如果在对话中说了“谢谢”或“不客气”,则说 TERMINATE ‘

‘以表示对话已结束,这是您的最后一条消息。’

)

# 针对角色的自定义通知

persona_notice = (

‘在回复查询、提供反馈、征求您的个人意见 ‘

‘或参与讨论时充当{role}。’

)

# 检查角色是否为“研究员”

if role.lower() in [ “manager” , “researcher” ]:

# 返回完整的终止通知non-personas

return base_notice + non_persona_notice

else :

# 返回 personas 的修改通知

return base_notice + persona_notice。格式(role=role)

# 研究员代理定义

name = “研究员”

researcher = autogen.AssistantAgent(

name=name,

llm_config=llm_config,

system_message= “””研究员。您是拥有行为心理学博士学位的顶级产品研究员,过去 20 年来一直在研究和洞察行业工作,与顶级创意、媒体和商业咨询公司合作。您的角色是询问有关产品的问题,并从像 Emily 这样的个人客户那里收集见解。提出问题以发现客户的偏好、挑战和反馈。在开始任务之前,请分解小组成员名单和您希望他们发言的顺序,避免小组成员互相交谈并产生确认偏差。如果会议在结束时终止,请以简洁明了的笔记(而不是在开始时)提供研究结果的摘要。””” + generate_notice(),

is_termination_msg= lambda x: True if “TERMINATE” in x.get( “content” ) else False ,

)

定义我们的个人— 将其投入到研究中,借鉴前面的过程,我们可以使用角色的生成。我手动调整了本文的提示,以删除对用于此模拟的主要超市品牌的引用。

我还在每个系统提示的末尾添加了“在回答查询、提供反馈或参与讨论时扮演 Emilygenerate_notice ”风格的提示,以确保合成角色继续执行由该功能生成的任务。

# Emily – 客户角色

name = “Emily”

emily = autogen.AssistantAgent(

name=name,

llm_config=llm_config,

system_message= “””Emily。您是住在澳大利亚悉尼的一名 35 岁小学教师。您已婚,有两个分别为 8 岁和 5 岁的孩子,年收入为 75,000 澳元。您性格内向,责任心强,神经质程度低,喜欢例行公事。在超市购物时,您更喜欢有机和本地采购的农产品。您重视便利性并使用在线购物平台。由于您工作和家庭承诺的时间有限,您寻求快速而营养的膳食计划解决方案。您的目标是在预算范围内购买高质量的农产品并寻找新的食谱灵感。您是经常购物者并使用忠诚度计划。您首选的沟通方式是电子邮件和移动应用程序通知。您在超市购物已有 10 多年,但也会与其他人进行价格比较。””” + generate_notice(name),

)

# John – 客户角色

name= “John”

john = autogen.AssistantAgent(

name=name,

llm_config=llm_config,

system_message= “””John. 您是澳大利亚悉尼的一名 28 岁软件开发人员。您单身,年收入 100,000 澳元。您性格外向,精通技术,并且具有高度的开放性。在超市购物时,您主要购买零食和即食食品,并使用移动应用程序快速取货。您的主要目标是快速便捷的购物体验。您偶尔会在超市购物,不属于任何忠诚度计划。您还会在 Aldi 购物以获得折扣。您首选的沟通方式是应用内通知。””” + generate_notice(name),

)

# Sarah – 客户角色

name= “Sarah”

sarah = autogen.AssistantAgent(

name=name,

llm_config=llm_config,

system_message= “””Sarah。您是一名 45 岁的自由记者,住在澳大利亚悉尼。您离异,没有孩子,年收入 60,000 澳元。您性格内向,神经质,非常注重健康。在超市购物时,您会寻找有机农产品、非转基因和无麸质食品。您的预算有限,并且有特定的饮食限制。您是常客并使用忠诚度计划。您首选的沟通方式是电子邮件通讯。您只购买杂货。””” + generate_notice(name),

)

# Tim – 客户角色

name= “Tim”

tim = autogen。助理代理(

名称=名称,

llm_config=llm_config,

system_message= “””Tim。您是居住在澳大利亚悉尼的 62 岁退休警察。您已婚,有三个孩子。您的年收入来自养老金,为 40,000 澳元。您非常认真,开放程度较低,喜欢循规蹈矩。您批量购买面包、牛奶和罐头食品等主食。由于行动不便,您需要有人帮忙搬运重物。您经常购物,并且是老年人折扣计划的一部分。您首选的沟通方式是直接邮寄传单。您在这里购物已有 20 多年了。””” + generate_notice(name),

)

# Lisa – 客户角色

name= “Lisa”

lisa = autogen.AssistantAgent(

name=name,

llm_config=llm_config,

system_message= “””Lisa。您是居住在澳大利亚悉尼的 21 岁大学生。您单身,从事兼职工作,收入为 1,000 澳元每年 20,000 美元。您性格外向,责任心不强,重视社交互动。您在这里购买流行品牌、零食和酒精饮料,主要是为了参加社交活动。您的预算有限,总是在寻找促销和折扣。您不是常客,但有兴趣加入忠诚度计划。您首选的沟通方式是社交媒体和短信。只要有促销或促销活动,您就会去购物。””” + generate_notice(name),

)

定义模拟环境和谁可以发言的规则——我们允许所有已定义的代理坐在同一个模拟环境(群聊)中。我们可以创建更复杂的场景,在其中可以设置如何以及何时选择和定义下一个发言者,因此我们为与群聊绑定的发言者选择定义了一个简单的函数,这将使研究人员成为主导,并确保我们走遍整个房间,向每个人询问几次他们的想法。

# def custom_speaker_selection(last_speaker, group_chat):

# “””

# 自定义函数,用于选择群聊中接下来发言的代理。

# “””

# # 不包括最后一位发言者的代理列表

# next_candidates = [agent for agent in group_chat.agents if agent.name != last_speaker.name]

# # 根据自定义逻辑选择下一个代理

# # 为简单起见,我们只是在这里轮换候选人

# next_speaker = next_candidates[0] if next_candidates else None

# return next_speaker

def custom_speaker_selection(last_speaker: Optional[Agent], group_chat: GroupChat) -> Optional[Agent]:

“” ”

自定义函数,确保研究人员与每个参与者互动 2-3 次。

在研究人员和参与者之间交替,跟踪互动。

” “”

# 定义参与者并初始化或更新他们的互动计数器(

如果 没有) hasattr(group_chat, ‘interaction_counters’ ):

group_chat.interaction_counters = {agent.name: 0 for agent in group_chat.agents if agent.name != “Researcher” }

# 定义每个参与者的最大互动次数

max_interactions = 6

# 如果最后一位发言者是研究员,则找出发言最少的下一个参与者

if last_speaker and last_speaker.name == “Researcher” :

next_participant = min(group_chat.interaction_counters, key=group_chat.interaction_counters.get)

if group_chat.interaction_counters[next_participant] < max_interactions:

group_chat.interaction_counters[next_participant] += 1

return next ((agent for agent in group_chat.agents if agent.name == next_participant), None)

else :

return None # 结束如果所有参与者都达到了最大互动次数,则对话

否则:

# 如果最后一位发言者是参与者,则返回下一轮的研究员

return next ((agent for agent in group_chat.agents if agent.name == “Researcher” ), None)

# 将研究员和客户角色代理添加到群聊

groupchat = autogen.GroupChat(

agent=[researcher, emily, john, sarah, tim, lisa],

Speaker_selection_method = custom_speaker_selection,

messages=[],

max_round=30

)

定义经理来传递指令并管理我们的模拟— 当我们开始工作时,我们只会与经理交谈,经理将与研究人员和小组成员交谈。这使用GroupChatManagerAutogen 中的一种东西。

# 初始化管理器

manager = autogen.GroupChatManager(

groupchat=groupchat,

llm_config=llm_config,

system_message= “您是研究经理代理,可以管理由研究人员代理和由小组组成的许多人组成的多个代理的群聊。您将限制小组成员之间的讨论,并帮助研究人员提出问题。请先询问研究人员他们希望如何进行小组讨论。” + generate_notice(),

is_termination_msg= lambda x: True if “TERMINATE” in x.get( “content” ) else False ,

)

我们设置了人机交互— 允许我们将指令传递给我们已启动的各个代理。我们给它初始提示,然后就可以开始工作了。

# 创建一个名为“user_proxy”的 UserProxyAgent 实例

user_proxy = autogen.UserProxyAgent(

name= “user_proxy” ,

code_execution_config={ “last_n_messages” : 2 , “work_dir” : “groupchat” },

system_message= “A human admin.” ,

human_input_mode= “TERMINATE”

)

# 通过向经理发出指示来开始研究模拟

# 经理 <-> 研究员 <-> 小组成员

user_proxy.initiate_chat(

经理,

消息 = “”

收集超市杂货配送服务的客户见解。从不同的客户角色中识别痛点、偏好和改进建议。在与小组分享更多信息和讨论之前,请大家给出自己的个人意见。作为研究员,您的工作是确保从参与者那里收集公正的信息,并将本次研究的结果摘要提供给超市品牌。

“””,

)

一旦我们运行上述程序,我们就会在你的 Python 环境中获得实时可用的输出,你会看到消息在各个代理之间传递。

实时 Python 输出——我们的研究人员与小组成员的交谈

创建可操作的结果 — 摘要代理

现在我们的模拟研究已经结束,我们希望获得更多可操作的见解。我们可以创建一个摘要代理来支持我们完成这项任务,并在问答场景中使用它。这里要小心的是,非常大的转录本需要一个支持更大输入(上下文窗口)的语言模型。

我们需要抓取之前模拟小组讨论中的所有对话,作为用户提示(输入)发送给我们的摘要代理。

# 获取群聊中对用户提示

消息的响应 = [msg[ “content” ] for msg in groupchat.messages]

user_prompt = “这是研究 “`{customer_insights}“` 的记录。格式(customer_insights= “\n>>>\n” .join(messages))

让我们为摘要代理制作系统提示(说明)——该代理将专注于根据之前的成绩单为我们创建量身定制的成绩单,并为我们提供明确的建议和行动。

# 为摘要代理生成系统提示

summary_prompt = “””

您是行为科学方面的专家研究员,负责总结研究小组。请提供主要发现的结构化摘要,包括痛点、偏好和改进建议。

其格式应基于以下格式:

“`

研究研究:<<标题>>

主题:

<<主题和编号概述,任何其他关键信息>>

摘要:

<<研究摘要,包括详细分析作为导出>>

痛点:

– <<痛点列表 – 尽可能清晰和规范。我期望详细的回应,品牌可以直接使用它来做出改变。每个痛点给出一个简短的段落。>>

建议/行动:

– <<广告列表 – 尽可能清晰和规范。我期望详细的回应,品牌可以直接使用它来做出改变。每个建议给出一个简短的段落。>>

“`

“””

定义摘要代理及其环境— 让我们为摘要代理创建一个迷你环境。这将需要它自己的代理(环境)和启动命令,该命令将拉取转录本(user_prompt)作为输入。

summary_agent = autogen.AssistantAgent(

name = “SummaryAgent”,

llm_config = llm_config,

system_message = summary_prompt + generate_notice(),


summary_proxy = autogen.UserProxyAgent(

name = “summary_proxy”,

code_execution_config = { “last_n_messages”:2,“work_dir”:“groupchat” },

system_message = “人类管理员。”,

human_input_mode = “终止”


summary_proxy.initiate_chat(

summary_agent,

message = user_prompt,

这为我们提供了以 Markdown 格式的报告卡形式的输出,同时还能够根据调查结果在问答式聊天机器人中提出进一步的问题。

下一步 — 我们还能做什么

这次练习是更大的自主代理架构的一部分,也是我对新型生成式人工智能和代理架构进行的一系列实验的一部分。但是,如果你想继续扩展这项工作和我探索过的一些领域,这里有一些想法:

  • 进一步奠定基础——通过与人口普查数据、内部 CRM 数据甚至实时客户记录的联系来创建更具代表性的人物样本。
  • 结合多模态——我们现在可以在生成人工智能上将模态与视觉输入相结合,这使得现在可以提供营销材料和网站截图等作为输入,以开始使用视觉刺激进行模拟。
  • 让代理访问工具— 提供对其他 API 和工具的访问权限,您可以创建一些独特的体验,例如将个人客户角色代理集成到您的公司 Slack、Teams、Miro 中以标记和回答问题。也许最后的摘要代理可以将一些用户故事加载到您的票务系统中,例如 JIRA?

与我一起塑造用户研究的未来。在 GitHub 上探索该项目,贡献你的见解,让我们一起创新

用户研究的未来

综合用户研究是该领域创新的前沿,融合了技术复杂性和实用效率。它与传统方法有很大不同,为获取消费者洞察提供了一个可控但高度现实的环境。这种方法并非旨在取代传统研究,而是旨在增强和加速发现深度客户洞察。

通过逐步引入自主代理、数字角色和代理框架的概念,这种改进的综合用户研究方法有望使该领域更容易理解。它邀请研究人员和从业者探索这些创新工具在塑造用户研究未来方面的潜力。

原作者:Vincent Koc

原文链接:https://medium.com/ux-planet/why-stakeholders-dont-vibe-with-user-research-a87e3e4cd19a

译者:蒋昌盛

本文由 @蒋昌盛 翻译发布于人人都是产品经理。未经作者许可,禁止转载

题图来自 Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务