Generate graph code from DSL for LangGraph framework
Project description
langgraph-codegen
Quick Start
To generate a graph from text:
# View available example graphs
lgcodegen --list
# View contents of a graph file
lgcodegen simple.graph
# Generate different components
lgcodegen --graph simple.graph # Generate graph code
lgcodegen --nodes simple.graph # Generate node code
lgcodegen --conditions simple.graph # Generate condition code
lgcodegen --state simple.graph # Generate state code
How to use gen_graph function
Generates python code for parts of langgraph
from langgraph_codegen import gen_graph
graph_spec = """
# required: start with StateClass and first_node
START(StateClass) => first_node
first_node
should_go_to_second => second_node
=> third_node
second_node => third_node
third_node => END
"""
graph_code = gen_graph("my_graph", graph_spec)
print(graph_code)
Output is:
# GENERATED code, creates compiled graph: my_graph
my_graph = StateGraph(StateClass)
my_graph.add_node('first_node', first_node)
my_graph.add_node('should_go_to_second', should_go_to_second)
my_graph.add_node('second_node', second_node)
my_graph.add_node('third_node', third_node)
my_graph.add_edge(START, 'first_node')
my_graph.add_edge('should_go_to_second', 'second_node')
my_graph.add_edge('should_go_to_second', 'third_node')
my_graph.add_edge('second_node', 'third_node')
my_graph.add_edge('third_node', END)
my_graph = my_graph.compile()
Syntax
START(StateClass) => first_node
required
# anything after pound sign is ignored
node_1 => node_2
unconditional edge
node_X
condition_A => node_Y
condition_B => node_Z
=> END # unconditional if all above conditions fail
node_1 => node_2, node_3
ok to transition to multiple nodes.
Why This DSL Was Made
The main thing I want to do is condense larger patterns into the DSL, to make it easier to experiment with and evaluate graph architectures.
The thing I like about the code with the DSL is that both Nodes and Conditional Edges are represented by functions that take the Graph State as a parameter. The second thing I like about it is that Nodes have a single name, it's in the text graph, and there's a function with that name.
The langgraph graph GraphBuilder is way more flexible, but in many cases an equivalent DSL version is easier to understand and easier to modify, and easier to experiment with different graph architectures.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file langgraph_codegen-0.1.15.tar.gz
.
File metadata
- Download URL: langgraph_codegen-0.1.15.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c4ee5d2e79be4fc8956f018185de1952b7eadc71c4c24b16c15bc28c6035918 |
|
MD5 | 3b558c6b64dabcfcf6b5a8a3ff6e003c |
|
BLAKE2b-256 | a4256f373c436a9319f1eaba2fcc37851ecef1e8c9573e398d6ff76218d7cc23 |
File details
Details for the file langgraph_codegen-0.1.15-py3-none-any.whl
.
File metadata
- Download URL: langgraph_codegen-0.1.15-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41f9bc354ca69b3555e9b454d44f56ef82d4bdeffa2bdd16051e663d3715ea3a |
|
MD5 | 059a8b537eb716c97aba12ef25dcb72f |
|
BLAKE2b-256 | 09912f8cda89a3e9dbed76493745ec79a88c2090808f45ea468dfae1e2575fc3 |