8、Agent的高级用法4:流式输出及模式

8.1 流式输出的说明

通过invoke 调用Agent时,内部可能经历多次调用,长时间看不到调用情况,用户体验不好,可以通过流式调用(渐进式显示输出)优化用户体验, 实时显示 Agent 运行过程中的更新。特别是在处理LLM 延迟时尤其有效。
流式输出好处:

  • 大型语言模型生成完整响应通常需要几秒钟时间,对于长输出可能达到10-20 秒,用户期望即时反馈, 流式传输让等待过程更加可控。
  • 相比非流式传输需要用户长时间等待完整响应,流式传输可以立即显示文字逐渐出现的效果, 大幅降低用户的等待焦虑。

设置方式:
通过“ agent.stream(stream_mode=指定模式) ”来指定。具体模式有:values、updates(默认)、messages、custom、checkpoints、tasks、debug。

8.2 具体的输出模式

8.2.1 values输出模式
当stream_mode 设置为values模式时,每个步骤执行后,都会输出完整的状态信息,适用于每一步都要获取完整状态、状态持久化场景。
举例:

图片[1]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[2]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[3]-8、Agent的高级用法4:流式输出及模式-大赛人网

代码运行后示意结果如下:

图片[4]-8、Agent的高级用法4:流式输出及模式-大赛人网

8.2.2 updates输出模式
这种模式就是默认模式。该模式中,每个步骤执行后,只增量更新状态中发生变化的内容,用于监控Agent 执行进度,例如观察Agent决定调用工具、工具执行结果等步骤。
代码如下:

图片[5]-8、Agent的高级用法4:流式输出及模式-大赛人网

运行结果如下:

图片[6]-8、Agent的高级用法4:流式输出及模式-大赛人网

8.2.3 messages输出模式
该模式中会输出流式返回的Token以及相关的元数据(如:来自哪个节点),可以用在实现类似ChatGPT 的打字机效果场景,为聊天机器人等交互式应用提供最佳的实时体验。
代码如下:

图片[7]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[8]-8、Agent的高级用法4:流式输出及模式-大赛人网

8.2.4 tasks输出模式
该模式会输出当前task任务开始和结束的时间,包含任务的结果和错误信息,该模式用于监控任务的生
命周期。
代码如下:

图片[9]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[10]-8、Agent的高级用法4:流式输出及模式-大赛人网

8.2.5 debug输出模式
该模式与tasks模式类似,比task模式多输出任务步骤、时间戳、task类型(task/task_result),该模式用于调试、监控task任务的生命周期。
代码如下:

图片[11]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[12]-8、Agent的高级用法4:流式输出及模式-大赛人网

8.2.6 checkpoints输出模式
该模式中,每当检查点(checkpoint)被创建时会触发输出,输出包含检查点中的状态,用于需要状态持久化、工作流恢复或分布式执行跟踪的高级场景。
代码案例如下:

图片[13]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[14]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[15]-8、Agent的高级用法4:流式输出及模式-大赛人网

8.2.7 custom输出模式
开发者通过get_stream_writer 在工具或节点内部自定义发送的数据,用于输出业务逻辑相关的进度信息(如“已处理10/100条记录”)、自定义日志或指标。
举例:生成销售报告和库存报告Agent

图片[16]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[17]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[18]-8、Agent的高级用法4:流式输出及模式-大赛人网

8.3 流式输出模式总结

如下是LangChain Agent输出模式对比:

图片[19]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[20]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[21]-8、Agent的高级用法4:流式输出及模式-大赛人网
图片[22]-8、Agent的高级用法4:流式输出及模式-大赛人网
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容