ling-baseling-base

Graph

LangGraph 风格状态图与检查点

在线 Playground

在浏览器中直接体验本页相关 API,无需本地安装 Go 环境。

Graph

agentkit/graph 提供 LangGraph 风格的有状态图执行:节点、边、条件路由、并行分支与检查点恢复。

核心类型

type StateGraph[S any] struct { ... }

type Graph interface {
    Invoke(ctx context.Context, input S) (S, error)
    Stream(ctx context.Context, input S) (<-chan StreamEvent, error)
}

type CheckpointSaver interface {
    Get(ctx context.Context, checkpointID string) (*Checkpoint, error)
    Put(ctx context.Context, checkpoint *Checkpoint) error
}

构建状态图

import "github.com/LingByte/ling-base/agentkit/graph"

type AgentState struct {
    Messages []compat.Message
    Step     int
}

sg := graph.NewStateGraph[AgentState]()

sg.AddNode("llm", llmNodeFunc)
sg.AddNode("tools", toolNodeFunc)
sg.AddEdge("llm", "tools")
sg.AddConditionalEdge("tools", shouldContinue, map[string]string{
    "continue": "llm",
    "end":      graph.END,
})

g, _ := sg.Compile()
final, err := g.Invoke(ctx, AgentState{Messages: initialMsgs})

检查点后端

说明
graph/checkpoint/inmemory内存(开发)
graph/checkpoint/sqliteSQLite 持久化
graph/checkpoint/redisRedis 分布式
import "github.com/LingByte/ling-base/agentkit/graph/checkpoint/sqlite"

saver, _ := sqlite.NewSaver("checkpoints.db")
g, _ := sg.Compile(graph.WithCheckpointSaver(saver))

Graph Agent 包装

import "github.com/LingByte/ling-base/agentkit/agent/graphagent"

ga, _ := graphagent.New("workflow", graphagent.WithGraph(g))
r := runner.NewRunner("app", ga)

与 FlowCraft 的区别

graphflowcraft
定义方式Go 代码YAML 声明式
适用嵌入式工作流多模型部署、插件沙箱
检查点graph/checkpointflowcraft/backends/checkpoint

可恢复执行

RecoverableExecutionError 允许节点失败后从最近检查点重试,适合长流程 Human-in-the-loop 场景。

On this page