unsetunset前言unsetunset
在做多Agent系统时,因为整个系统可能会经过多次Agent处理,耗时会比较高,如果不给前端展示Agent处理的过程,那么用户的体验就会非常不好,在用户的视角,你的程序可能卡死了,但其实你的Agent在背后干活以求获得好的结果。
解决方案也比较直观,就是将Agent的处理过程在前端返回出来,这也是很多产品的做法,即所谓的有一个thinking过程的展示。
本文就是实现一个这样的效果,教育目的,所以会写的经量简单。
unsetunset实现unsetunset
为了简化,我们这里就不弄多Agent系统来讲解,直接用Llamaindex构建一个基本的RAG,然后我们将RAG的过程展示为thinking过程,至于多Agent其实也一样的,然后用React来做前端。
Github: https://github.com/ayuLiao/show_llm_thinking_example
效果如下:

unsetunset后端技术细节unsetunset
我们定义了Message对象,每个Message对象会有关联的sub_processes对象,sub_processes对象存储着处理过程信息。
class ProcessType(str, Enum):
THINKING = "thinking"
SEARCHING = "searching"
ANALYZING = "analyzing"
GENERATING = "generating"
class S