首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >eino v0.5.9 发布:修复 Graph 回调中状态访问问题

eino v0.5.9 发布:修复 Graph 回调中状态访问问题

作者头像
福大大架构师每日一题
发布2025-12-19 08:16:28
发布2025-12-19 08:16:28
760
举报

2025 年 10 月 23 日,eino 发布了 v0.5.9 版本,本次更新主要针对 Graph 回调中访问状态(State)失败的问题进行了修复,同时增加了完善的单元测试,避免未来类似问题的再次出现。

问题背景

在 v0.5.4 版本中,引入了 Graph Cancel Interrupt 功能,但在实现过程中调整了 Graph Callback 的执行时机,导致在回调函数中通过 ProcessState 获取状态时出现异常。

问题表现如下: .

代码语言:javascript
复制
err := ProcessState[*State](ctx, func(_ context.Context, state *testStruct) error {
    // your code here
    return nil
})
if err != nil {
    // error: "get state from context fail: have not set state"
}

出现该错误的原因是,在回调执行时,状态尚未正确设置到 context 中,导致 ProcessState 无法获取到内容。

修复内容

v0.5.9 中调整了 Graph 的启动流程,确保状态完成初始化后再执行 onGraphStart,从而保证了回调中可以正确访问状态。

主要改动包括:

  • 在状态初始化完成后再触发 onGraphStart
  • 增加标志位 haveOnStart 来延迟 onGraphStart 的触发,防止提前执行导致状态不可用
  • 在恢复检查点(checkpoint)逻辑中补充状态初始化后的回调触发
  • 完善单元测试,验证在 Graph 回调中访问状态的可行性

部分核心代码变更示例: .

代码语言:javascript
复制
ctx, input = onGraphStart(ctx, input, isStream)
haveOnStart = true

该逻辑保证 onGraphStart 的执行时机正确,使回调中可以通过 ProcessState 获取到初始化后的状态内容。

单元测试新增

本次更新中,在 compose/graph_test.go 新增了 TestGetStateInGraphCallback 测试用例,验证在 OnStart 回调中读取并修改状态的正确性: .

代码语言:javascript
复制
func (t *testGraphStateCallbackHandler) OnStart(ctx context.Context, info *callbacks.RunInfo, input callbacks.CallbackInput) context.Context {
    assert.NoError(t.t, ProcessState[*state](ctx, func(ctx context.Context, s *state) error {
        s.A = "test"
        return nil
    }))
    return ctx
}

该测试确保:

  1. 1. 回调中可以正常获取到初始化的状态对象
  2. 2. 可以对状态进行修改而不会触发错误

总结

代码地址:github.com/cloudwego/eino

eino v0.5.9 版本主要解决了 Graph 回调中访问状态失败 的问题,通过调整回调执行时机并补充测试用例,保证了 ProcessState 在回调环境下的稳定性。本次更新对使用 Graph + State 的场景尤为重要,建议相关用户尽快升级到该版本,以避免状态读取异常的问题。

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题背景
  • 修复内容
  • 单元测试新增
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档