4、课后阅读:Static runtime Context

静态运行时上下文(Static runtime Context)表示不可变的数据,如用户元数据、工具和传递给应用程序的数据库连接对象。通常在运行开始时通过 invoke / stream 的 context 参数传递,此类数据在运行期间不会更改。

4.1 中间件中访问

4.1.1 Node-style hooks
此类钩子都通过runtime.context 访问上下文对象。
用户自定义ContextSchema 用@dataclass 修饰,在Agent创建时通过state_schema 参数传递。
本例从长期记忆中查询用户额度,如果额度用尽则中断流程。
代码

图片[1]-4、课后阅读:Static runtime Context-大赛人网
图片[2]-4、课后阅读:Static runtime Context-大赛人网
图片[3]-4、课后阅读:Static runtime Context-大赛人网
图片[4]-4、课后阅读:Static runtime Context-大赛人网
图片[5]-4、课后阅读:Static runtime Context-大赛人网

4.1.2 Wrap-style hooks
① wrap_model_call
本例通过 context 中记录的用户身份信息调整暴露给模型的工具集。
此处更改模型请求的方法是 transient request update ,见上文短期记忆 2-4-2

图片[6]-4、课后阅读:Static runtime Context-大赛人网
图片[7]-4、课后阅读:Static runtime Context-大赛人网
图片[8]-4、课后阅读:Static runtime Context-大赛人网
图片[9]-4、课后阅读:Static runtime Context-大赛人网
图片[10]-4、课后阅读:Static runtime Context-大赛人网

② wrap_tool_call
在上述案例的基础上,我们补充额度校验,和长期记忆更新。

图片[11]-4、课后阅读:Static runtime Context-大赛人网
图片[12]-4、课后阅读:Static runtime Context-大赛人网
图片[13]-4、课后阅读:Static runtime Context-大赛人网
图片[14]-4、课后阅读:Static runtime Context-大赛人网
图片[15]-4、课后阅读:Static runtime Context-大赛人网
图片[16]-4、课后阅读:Static runtime Context-大赛人网
图片[17]-4、课后阅读:Static runtime Context-大赛人网

4.1.3 特殊的便捷中间件dynamic_prompt
如前所述,@dynamic_prompt底层实现机制和通用钩子函数是统一的,对于动态提示词处理提供了更
加便捷的入口。
本例通过静态上下文中携带的用户信息,动态更改系统提示词。

图片[18]-4、课后阅读:Static runtime Context-大赛人网
图片[19]-4、课后阅读:Static runtime Context-大赛人网
图片[20]-4、课后阅读:Static runtime Context-大赛人网

dynamic_prompt 是动态更新本次调用前的系统提示词,并不会更改消息列表,所以根据模型输出,可以发现系统提示词生效,但消息列表看不到相关提示词。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容