LLM-native应用中复杂慢速策略的UI交互设计 【2023Q3】
0、前言
本文主要讨论需要很大延迟的复杂慢速策略应用应该如何做UI交互设计。本文的答案其实是很多人已经很熟悉的——New Bing Chat模式。
但我发现似乎很多人并未充分理解它的交互设计思路,这让我觉得有必要写此文。另一个原因是,我最近一个季度的思考结论是:这可能是这方面【唯一】的最佳实践。当我当初看到New Bing Chat的交互时候,也只是把它当作【一种】交互设计而已,没有对它评价很高。
站在现在回看New Bing Chat产品的推出之早、UI交互设计之完善、效果之出众(相对于现在大家实现的知识库问答产品),Bing AI团队的工作是让人叹为观止的。后续我还会从策略实现角度讨论New Bing Chat与LLM-native知识库问答产品的设计。
1、New Bing Chat的交互设计
1.1、单轮提问
单从产品使用上,我们就能推断其内部策略大体流程包括:
【S1】根据用户输入判断是否需要进行搜索召回,不需要的时候直接使用LLM进行回答。
【S2】需要搜索时,使用LLM产生搜索检索query,并【显示给用户】
【S3】使用检索query进行搜索,评估搜索内容
【S4】如果第一次搜索结果没有达到预期,则再次生成搜索检索query,并【显示给用户】
【S5】根据搜索结果使用LLM流式生成回答
【S6】在流式生成回答过程中,对于每句(以逗号计算)话进行来源标记,也是流式的推送给用户UI。来源表现为下划线、引用上标、引用来源。
这比很多团队实现的简单知识库问答系统的逻辑要复杂得多。很明显,从用户发送请求到流式的返回结果,等待了一个不短的时间,Bing AI团队的解决方式就是:展示中间过程的状态,而不是简单地显示一个thinking...
在该场景中,适合显示的中间过程状态就只有搜索query,每轮搜索的原始结果并不适合推送给用户。这种方式有如下好处:
在结果产生之前,给用户发送中间进度信息,增加用户的等待耐心
有搜索经验的用户可以根据产生的搜索query来判断系统是否正确理解了自己的意思,可以用于改进用户自己后续的提问。
当第一轮搜索结果不好时,显式的告诉用户已经触发了第二轮搜索
【S6】其实也很值得讨论,但那更多是针对于知识库问答产品的设计。所以我不在本文,而在后面的知识库实现技术方案文章中进行讨论。
1.2、其他部分UI设计拾遗
本小节虽然与本文主题关系不大,但对于关注UI设计的人来说也是值得参考的,所以简要列几点:
【F1】把重新开始对话按键设计的很显眼,并吸引用户频繁使用。
为了提高用户不断重启对话,尽量回避“系统在多轮对话下容易出异常回复”的问题。
这个功能在被发现辱骂用户之前就已经有了,并不是后面的临时补丁。而后面不得已上了更强的最大问答轮数限制。
【F2】把temperature参数量化成有创造力、平衡、精确三档之后展示给用户。
temperature会明显地影响返回结果,不同参数适合的场景不同,所以通过这种方式引导用户选择适合TA自己的设置。
【F3】一轮对话之后,增加常用问题选项,减少用户的后续输入量。
因为用户打字的成本还是不能无视的,能方便用户更低成本输入更精确的提问可以优化产品使用体验。
【F4】支持语音输入。
同样是减少用户打字成本,降低用户输入更多信息的门槛。
2、复杂慢速策略的UI交互设计
抽象上一节的设计思路:
给用户展示中间进度信息,增加用户耐心
给用户暴露用户可以理解的中间状态
方便用户了解内部过程的执行效果。如果执行明显偏离用户期望可以提前中止。
方便用户优化自己的使用方式。起到了部分产品使用教程的作用。
方便用户学习如何直接使用原始工具。
这个方式不仅适用于这种简单的串行流程,像AutoGPT这样的复杂内部过程也都可以参考实现。案例就是ChatGPT上的Bing Plugin模式、普通Plugin模式、Code Interpreter模式等的UI。本质上都是把用户可以理解的中间状态展示给用户。
对于后续更高准确度要求的场景,类似各种XoT(X of Thought)的策略框架必然会大量使用。这时候就需要适当的截取其中重要节点的Thought展示给用户,作为中间状态。
甚至未来UI中,用户可以在过程中人工再根据这些Thought进行优先探索指定或者提供别的信息,变成人机联合探索过程。
虽然本文核心内容并不长,但我觉得应该足够让大部分读者理解我的意思了。如果有不清楚或者想讨论的内容可以来找我交流讨论。
交流与合作
如果希望和我交流讨论,或参与相关的讨论群,或者建立合作,请私信联系,见 联系方式。
希望留言可以到知乎对应文章下留言。
本文的观点(这是唯一最佳实践)形成于2023.8。
本文于2023.9.12首发于微信公众号与知乎。
知乎链接 https://zhuanlan.zhihu.com/p/655950127