Commit Graph
152 Commits
Author SHA1 Message Date
Nuno Campos 86bc774b3d Lint 2024-05-30 08:08:21 -07:00
Nuno Campos 6e74415ec8 Add test for node decorated with traceable decorator 2024-05-30 08:04:48 -07:00
Nuno Campos 24d130d407 Add support for requesting multiple stream modes in same stream/astream call 2024-05-22 12:25:28 -07:00
Nuno Campos 8b946af20f Add support and tests for using messagegraph checkpoints on a stategraph with 1 __root__ key other keys 2024-05-21 14:01:23 -07:00
Andrew NguonlyandGitHub 08b505e017 Merge configurable fields with previous checkpoint config before each run (#510)
* Merge configurable fields with previous checkpoint config.

* Update update_state() and aupdate_state() to merge configurable fields with previous checkpoint config.

* Update tests to verify that all checkpoint metadata contain the expected configurable field keys. This assertion is needed because a run can have an arbitrary number of steps based on the construction of the graph.
2024-05-21 11:03:25 -07:00
Nuno Campos de71709fdc Expose checkpoint timestamp in get/update/list state methods 2024-05-20 16:23:46 -07:00
Andrew Nguonly f5454715df Merge main branch. 2024-05-17 19:32:14 -07:00
Andrew Nguonly 09bae3022d Add checkpoint config to checkpoint metadata? 2024-05-17 19:25:02 -07:00
Andrew Nguonly 18addb52aa Add support for passing Callable metadata filter to FewShotExamples managed value. 2024-05-17 18:41:57 -07:00
Nuno Campos 695503a4d3 Update to langchain-core 0.2.0
- Use stream_events(version=v2) in tests
2024-05-17 14:38:51 -07:00
Nuno Campos a4e88e930f Disable retries by default 2024-05-16 15:59:45 -07:00
Nuno Campos 2414e0ab5e Add retry_policy for graphs
- default is to retry, fully configurable
- configuration options follow temporal https://docs.temporal.io/retry-policies#properties
2024-05-16 15:44:30 -07:00
Nuno Campos 6f888b6206 Add single arg overload for add_node, which takes function/runnable's name as the node name 2024-05-14 17:51:25 -07:00
Nuno Campos 52b2c755d7 Use uuid6 as the id for checkpoints
- this avoids conflicts if multiple processes creating checkpoints in same thread at same time
- uuid6 with a monotically increasing clock_seq is sortable by creation time at ms precision (plus clock_seq for ties, plus 48 bits of randomness for further ties)
2024-05-14 16:56:25 -07:00
Nuno CamposandGitHub a694aaa2bb Merge pull request #444 from langchain-ai/an/10may/few-shot-clone
Add `FewShotExamples` managed value (redo)
2024-05-14 15:35:48 -07:00
Nuno Campos 273a836fc4 debug: Include task index in task id 2024-05-14 13:35:56 -07:00
Andrew Nguonly 28e5d8f699 Update FewShotExamples class to support setting filter and limit params. 2024-05-14 12:41:55 -07:00
Nuno CamposandGitHub d8af81312a Merge pull request #447 from langchain-ai/nc/14may/small-fixes
Fix memory checkpointer list/alist
2024-05-14 11:24:04 -07:00
Nuno Campos 0c37a17172 Fix memory checkpointer list/alist
- add tests for memory checkpointer list and alist
- fix async step counting
2024-05-14 10:37:01 -07:00
William FHandGitHub f146668735 Rename "action" to "tools" in tools_condition w/in docs (#445) 2024-05-13 23:41:33 -07:00
Andrew Nguonly 065e0ff360 Remove unused imports. 2024-05-13 18:34:54 -07:00
Andrew Nguonly aae05407f4 Lint code. 2024-05-13 18:22:07 -07:00
445a110917 Add managed values and IsLastStep (#330)
* Add managed values and IsLastStep

- managed values are read-only state keys whose values are managed by langgraph
- this PR implements one: IsLastValue, a boolean which is True in the last iteration, eg to allow you to return a nice "ran out of iterations" message to user

* Fix

* Fix some issues

* py39

* Break ref

* Fix types

* Fix

* Fix

* Update state.py

* Don't mutate dictionary while using it in for loop.

---------

Co-authored-by: Andrew Nguonly <andrewnguonly@gmail.com>
2024-05-10 13:44:20 -07:00
Nuno Campos 227f409611 Add writes property in checkpoint metadata
- This adds a historic view of the actions taken by nodes inside a thread, supporting rendering a richer history of a thread (eg in debug ui)
2024-05-09 14:30:29 -07:00
Nuno Campos a6c6b8211f Add tests for calling update on an empty thread
- this would eg be what you'd do in an api like openai assistants api
2024-05-08 10:43:31 -07:00
Nuno Campos e892c95194 Export all exceptions from langgraph.errors 2024-05-07 08:07:26 -07:00
Nuno CamposandGitHub 5bee63c7d5 Merge pull request #387 from langchain-ai/nc/3may/checkpoint-metadata
Add metadata to checkpoints, checkpoint inputs before first step
2024-05-06 14:41:29 -07:00
Nuno Campos 48865daf02 Fix checkpoint lineage for updates/resumes 2024-05-06 11:53:20 -07:00
Nuno Campos 611ecdb1cd Checkpoint inputs before starting the first step for easier error recovery
- this enables easier retrying, for any error just do .invoke(None, config) no matter which step the error happened on
2024-05-06 11:53:20 -07:00
Nuno Campos f160f82912 Add checkpoint metadata fields
- source: input, update or loop
- step: int
- make step counter continue from previous last step
2024-05-06 11:52:49 -07:00
Nuno Campos 3ff3def62b Remove option to only checkpoint at end of run
- Now that checkpoint at end of each step adds no latency there is not point to keep this
- This will make it easier to add future features
2024-05-06 11:52:49 -07:00
Nuno Campos f304908102 Add metadata to checkpoints
- not yet used in this PR
2024-05-06 11:52:49 -07:00
Nuno Campos 04fe48f661 Add (failing) test for drawing cyclic edge
- fix waiting for new release of langchain-core
2024-05-03 15:17:20 -07:00
Nuno Campos 42d3215e34 Implement cursor pagination for get_state_history (time travel endpoint)
- interface in base checkpointer
- implement in sqlite, aiosqlite, memory
- implement in Pregel.get_state_history()
2024-05-03 10:34:11 -07:00
Nuno Campos 467f42d799 Optional 2nd arg to StateGraph with config schema 2024-05-03 10:05:14 -07:00
Nuno Campos 27efba27c0 Update tests 2024-05-02 09:31:22 -07:00
Nuno Campos 5e322a6550 Implement stream_mode=debug
- outputs 3 types of payloads
-- task: node about to be executed
-- task_result: result of node execution
-- checkpoint: state values at end of superstep
2024-04-30 16:15:38 -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 9a79eb54f9 Finish fixing tests 2024-04-30 09:23:41 -07:00
Nuno Campos 96870c0935 Pregel: Remove implicit creation of channels referenced by nodes
- channels must be declared in the constructor args
2024-04-30 09:04:19 -07:00
Nuno Campos 7554309abf Update tests 2024-04-29 17:46:42 -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 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 61d0f60b8e Update 2024-04-25 11:30:23 -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 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