LangGraphGo


English | ็ฎไฝไธญๆ
๐ Forked from paulnegz/langgraphgo - Enhanced with streaming, visualization, observability, and production-ready features.
This fork aims for feature parity with the Python LangGraph library, adding support for parallel execution, persistence, advanced state management, pre-built agents, and human-in-the-loop workflows.
๐ฆ Installation
go get github.com/smallnest/langgraphgo
๐ Features
๐ฏ Quick Start
package main
import (
"context"
"fmt"
"log"
"github.com/smallnest/langgraphgo/graph"
"github.com/tmc/langchaingo/llms"
"github.com/tmc/langchaingo/llms/openai"
)
func main() {
ctx := context.Background()
model, _ := openai.New()
// 1. Create Graph
g := graph.NewMessageGraph()
// 2. Add Nodes
g.AddNode("generate", func(ctx context.Context, state interface{}) (interface{}, error) {
messages := state.([]llms.MessageContent)
response, _ := model.GenerateContent(ctx, messages)
return append(messages, llms.TextParts("ai", response.Choices[0].Content)), nil
})
// 3. Define Edges
g.AddEdge("generate", graph.END)
g.SetEntryPoint("generate")
// 4. Compile
runnable, _ := g.Compile()
// 5. Invoke
initialState := []llms.MessageContent{
llms.TextParts("human", "Hello, LangGraphGo!"),
}
result, _ := runnable.Invoke(ctx, initialState)
fmt.Println(result)
}
๐ Examples
๐ง Key Concepts
Parallel Execution
LangGraphGo automatically executes nodes in parallel when they share the same starting node. Results are merged using the graph's state merger or schema.
g.AddEdge("start", "branch_a")
g.AddEdge("start", "branch_b")
// branch_a and branch_b run concurrently
Human-in-the-loop (HITL)
Pause execution to allow for human approval or input.
config := &graph.Config{
InterruptBefore: []string{"human_review"},
}
// Execution stops before "human_review" node
state, err := runnable.InvokeWithConfig(ctx, input, config)
// Resume execution
resumeConfig := &graph.Config{
ResumeFrom: []string{"human_review"},
}
runnable.InvokeWithConfig(ctx, state, resumeConfig)
Pre-built Agents
Quickly create complex agents using factory functions.
// Create a ReAct agent
agent, err := prebuilt.CreateReactAgent(model, tools)
// Create an agent with options
agent, err := prebuilt.CreateAgent(model, tools, prebuilt.WithSystemMessage("System prompt"))
// Create a Supervisor agent
supervisor, err := prebuilt.CreateSupervisor(model, agents)
๐จ Graph Visualization
exporter := runnable.GetGraph()
fmt.Println(exporter.DrawMermaid()) // Generates Mermaid flowchart
- Graph Operations: ~14-94ฮผs depending on format
- Tracing Overhead: ~4ฮผs per execution
- Event Processing: 1000+ events/second
- Streaming Latency: <100ms
๐งช Testing
go test ./... -v
๐ค Contributing
This project is open for contributions! Please create feature issues first, then submit PRs.
๐ License
MIT License - see original repository for details.