Commit Graph
91 Commits
Author SHA1 Message Date
Nuno Campos 467f42d799 Optional 2nd arg to StateGraph with config schema 2024-05-03 10:05:14 -07:00
Nuno Campos afa6a91934 Implement interrupt_before=* and interrupt_after=*
- This interrupts execution before/after all nodes
2024-04-30 10:05:53 -07:00
Nuno Campos ca2c93e0a1 Lint 2024-04-29 17:41:36 -07:00
Nuno Campos a3c867d688 Remove add_condition_nodes 2024-04-29 11:13:16 -07:00
Nuno Campos 3a59fb2247 Pass add_condition_node 2024-04-29 11:04:15 -07:00
Nuno Campos 4a28f19922 Remove labels if redundant 2024-04-29 10:44:45 -07:00
Nuno Campos a83fd19b29 For cond edges support specifying list of possible destinations as a list or typing annotation 2024-04-29 10:38:06 -07:00
Nuno Campos fd9d30f144 Improve tracing output for function nodes
- remove double entry in tracing tree when using functions as nodes
2024-04-29 08:59:56 -07:00
Nuno Campos 42b13ef576 Improvements to get_graph(xray=)
- Support xray: int, to control depth, eg xray=1 only exposes one level deep
- In mermaid draw a containing box around subgraphs created from xray
2024-04-25 11:27:13 -07:00
Nuno Campos 3571a893f2 Fix bug where saving a runnable or function in state object would misbehave
- the function/runnable would be called when processing the state update
2024-04-24 15:35:02 -07:00
Nuno Campos 79bff13a47 Add then= arg for add_conditional_edge and set_conditional_entry_point
- This makes it easy to implement graphs where you want to decide among N possible nodes, and then visit another node after whichever one you chose
2024-04-24 14:06:07 -07:00
Nuno Campos 9ee5699f9a Fix 2024-04-24 11:22:53 -07:00
Nuno Campos 9f9c08bab9 Lint 2024-04-24 11:22:36 -07:00
Nuno Campos f2803372ec Improve graph validation
- Move all validation to compile() This allows adding edges before nodes
- Detect more cases of missing edges with shorthand branches
2024-04-24 11:19:40 -07:00
Nuno Campos 85bdc8bdfa Fix issue when drawing graphs w repeat conditions 2024-04-22 09:53:14 -07:00
Angel Igareta 7f826abaa2 Fix linting 2024-04-18 12:20:31 +02:00
Angel Igareta 6570fd0ccb Fix get_graph method to define conditional edges 2024-04-18 12:19:07 +02:00
Angel Igareta 4e8e51126d Fix formatting in graph 2024-04-17 18:03:22 +02:00
Ángel IgaretaandGitHub 35fe16b615 Merge branch 'main' into add_condition_nodes_as_optional 2024-04-17 17:53:51 +02:00
Nuno Campos 012bbb961f Lint 2024-04-16 15:07:51 -07:00
Nuno Campos bdf0def798 Resolve type annotation forward refs when parsing StateGraph schema type 2024-04-16 15:05:04 -07:00
William FHandGitHub 85f48da84e Docs Draft (#286) 2024-04-15 22:44:12 -07:00
Angel Igareta 0f667cd9eb Add add_condition_nodes parameter to offer possibility of not including conditional nodes 2024-04-15 10:56:19 +02:00
Nuno Campos f3ae555b91 Shorten conditional edge names 2024-04-12 09:29:27 -07:00
Nuno Campos 0015cb5f3a Fix non str values in cond edges 2024-04-11 11:52:20 -07:00
Nuno Campos 641def6fdb Fix null output for node with conditional edge returning END 2024-04-10 16:10:08 -07:00
Nuno Campos fd6f44a7e4 feat: Return multiple destinations from conditional edge 2024-04-08 17:05:16 -07:00
Nuno Campos db3219f77c Ensure node tracing output is exactly what was returned from node 2024-04-03 13:13:04 -07:00
Nuno Campos e3a9760bb2 Improve tracing output of state graph 2024-04-02 12:14:08 -07:00
Nuno Campos 2a299d070e Optimize tracing output of Graph/StateGraph/MessageGraph
- control selection of relevant runs (needs langsmith release)
- see output of conditional edge function
- fix issue with conditional entry point not getting full state values as input
2024-04-02 10:32:47 -07:00
Nuno Campos 8b8171724c Rename ChannelInvoke to PregelNode
- ChannelInvoke is a legacy name from when we had ChannelBatch
2024-04-01 19:34:13 -07:00
Nuno Campos a184600915 MessageGraph now accepts same shorthand message formats as langchain-core 2024-04-01 18:44:06 -07:00
Nuno Campos 961ddd49ed Add test and notebook for using pydantic base model as state object 2024-04-01 17:40:55 -07:00
Nuno Campos b6848c5fdf Optimize tracing run tree
- Do not run node if it's a passthrough
- Do not run writers that wouldn't affect any channels
- Combine consecutive writers when it doesn't change semantics
2024-04-01 13:43:23 -07:00
Nuno Campos 2bf66b8834 Add some more docstrings around multi edges
- prompted by some github issues
2024-04-01 12:29:00 -07:00
Nuno Campos 4e373b8af2 Remove noisy frames from stack traces
- The less frames in library code the less confused the user is
- This doesn't remove all library frames (not possible), but it's a start
2024-03-31 20:19:10 -07:00
Nuno Campos 03bef445c6 Lint 2024-03-31 20:16:50 -07:00
Nuno Campos 7bc95d311c Lint 2024-03-31 19:15:18 -07:00
Nuno Campos 0d2bbe85c6 Fix default condition name 2024-03-31 18:56:38 -07:00
Nuno Campos b668bf8eab Rewrite Graph/StateGraph.compile()
- Each iteration of the graph is one single iteration in Pregel (ie. no more "{node}:edges" nodes)
- .update_state() now acts exactly as one of the nodes in the graph (which can be chosen), which makes human-in-the-loop scenarios where you want to override the actions of a specific node a lot easier to build
- Graph/StateGraph.compile() now delegate adding nodes/edges/etc to dedicated methods that operate on the Pregel object, which is 90% of the way towards dynamic graphs where nodes and edges can be added during execution
2024-03-31 17:17:18 -07:00
Nuno Campos 03b7d6fe0d Remove __end__ node from state graph
No longer necessary with stream output modes
2024-03-30 22:04:27 -07:00
Nuno Campos 1ad017781d Add stream_mode=updates or values
- stream(stream_mode="values") yields thre current channel values whenever a channel is updated
- stream(stream_mode="updates") yields the update sent to each channel by each node
- this removes the __end__ value present at the end of each call to Graph/StateGraph/MessageGraph.stream(). To access the __end__ value either call .invoke() or stream(stream_mode="values")
2024-03-30 21:24:39 -07:00
Nuno Campos 5aa036639b Update 2024-03-26 15:42:16 -07:00
jacoblee93 e79453633d Simplify 2024-03-26 12:59:26 -07:00
jacoblee93 a6a9def91a Adds async conditional edge support 2024-03-26 12:46:15 -07:00
Nuno Campos 62dfa48ce5 Lint 2024-03-21 17:58:23 -07:00
Nuno Campos db2ec5b2de Rename to add_edge(string[], string) 2024-03-21 17:56:35 -07:00
Nuno Campos e11153cf09 Fix graph repr 2024-03-21 16:53:59 -07:00
Nuno Campos 01c32c2464 Finish 2024-03-21 15:54:03 -07:00
Nuno Campos 158f84c826 WIP Waiting edge 2024-03-21 14:29:40 -07:00