Nuno Campos
2cb81201b2
0.3.24
2025-04-02 15:45:06 -07:00
Nuno Campos
494cd4f6ad
checkpoint 2.0.24
2025-04-02 15:44:58 -07:00
Nuno Campos and GitHub
9226b42150
Add checkpoint migrations for state graph internal channels ( #4125 )
2025-04-02 15:42:28 -07:00
Eugene Yurtsev and GitHub
5e0a843423
sdk-py: release 0.1.61 ( #4148 )
2025-04-02 15:34:36 -07:00
6e54f74fa9
sdk-py: Add option to set description via client sdk ( #4147 )
...
Co-authored-by: William FH <13333726+hinthornw@users.noreply.github.com >
2025-04-02 21:26:14 +00:00
Nuno Campos
ffb8400b19
Disable tests in 3.9
2025-04-02 14:05:15 -07:00
Nuno Campos
b6b40149a9
Fix
2025-04-02 13:56:29 -07:00
Nuno Campos
5eecd2ac3a
Update
2025-04-02 13:31:36 -07:00
Nuno Campos
c38f7be89c
Migrate quadratic channels too
2025-04-02 13:24:20 -07:00
Nuno Campos
2d406f03a2
Lint
2025-04-02 12:56:09 -07:00
Nuno Campos
1c48ec0aba
Lint
2025-04-02 12:48:10 -07:00
Nuno Campos
4dda404da3
Implement checkpoint migration
...
- Migrate start:{node} channels to branch:to:{node}
- Migrate {node} channels to branch:to:{node}
2025-04-02 12:44:59 -07:00
Vadym Barda and GitHub
67e8f8fc11
prebuilt: add optional pre-model hook that runs before calling LLM in create_react_agent ( #4059 )
...
Example:
```python
from typing import Any
from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_core.messages import AnyMessage
from langchain_core.messages.utils import count_tokens_approximately
from langgraph.graph import MessagesState
from langgraph.prebuilt.chat_agent_executor import create_react_agent, AgentState
from langgraph.checkpoint.memory import InMemorySaver
from langmem.short_term import SummarizationNode, RunningSummary
class State(MessagesState):
context: dict[str, Any]
search = TavilySearchResults(max_results=3)
tools = [search]
model = ChatOpenAI(model="gpt-4o")
summarization_model = model.bind(max_tokens=256)
summarization_node = SummarizationNode(
token_counter=count_tokens_approximately,
model=summarization_model,
max_tokens=2048,
max_summary_tokens=256,
output_messages_key="messages"
# output_messages_key="llm_input_messages"
)
checkpointer = InMemorySaver()
class State(AgentState):
user_language: str
# summarization-related keys
context: dict[str, Any]
def prompt(state):
language = state["user_language"]
system_msg = f"Always respond in {language}"
return [{"role": "system", "content": system_msg}] + state["messages"]
graph = create_react_agent(
model,
tools,
prompt=prompt,
pre_model_hook=summarization_node,
state_schema=State,
checkpointer=checkpointer
)
```
2025-04-02 15:41:31 +00:00
Nuno Campos and Nuno Campos
6fe319ed1b
WIP: Add migrate_checkpoint
2025-04-02 07:24:55 -07:00
Vadym Barda and GitHub
55f922cf2f
langgraph: release 0.3.23 ( #4141 )
2025-04-02 09:50:18 -04:00
Nuno Campos
6efeefe424
Maintain checkpoint LATEST_VERSION constant in langgraph lib
...
- This should be controlled by the langgraph version, not the version of langgraph-checkpoint installed
2025-04-01 21:46:38 -07:00
William FH and GitHub
da8b8c606a
Release CLI ( #4124 )
...
Signed-off-by: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com >
2025-04-01 21:28:58 -07:00
William FH and GitHub
dcda8c24d6
Add checkpointer configuration support in langgraph.json ( #4122 )
...
Signed-off-by: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com >
2025-04-01 21:16:12 -07:00
Vadym Barda and GitHub
e3d697620b
langgraph: support removing all messages with RemoveMessage ( #4117 )
2025-04-01 17:51:54 -04:00
Nuno Campos
30883729f0
0.3.22
2025-04-01 07:54:24 -07:00
William Fu-Hinthorn
9bd78ed483
Allow blocking in dev
...
Signed-off-by: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com >
2025-04-01 05:45:47 -07:00
Nuno Campos
e85b7e6cd9
Lint
2025-03-31 18:46:51 -07:00
Nuno Campos
94fa46f9fa
Avoid creating checkpoint unless we're saving it
...
- When checkpointing is disabled don't call create_checkpoint in PregelLoop
- In local_read apply writes directly to copies of updated channels
- Add BaseChannel.copy() method to create channel copies with less overhead
2025-03-31 18:37:13 -07:00
Nuno Campos
fd64ada9de
Avoid raise-catch strategy in BaseChannel.checkpoint()
...
- This mirrors the work done earlier on BaseChannel.get()
- Comparing to a sentinel value is significantly faster than raising and catching an exception
2025-03-31 17:48:19 -07:00
Nuno Campos
5e9e7b79fe
Lint
2025-03-31 17:36:00 -07:00
Nuno Campos
c49a077789
Lint
2025-03-31 17:24:26 -07:00
Nuno Campos
881b07cf7f
Lint
2025-03-31 16:36:16 -07:00
Nuno Campos
0425d4e65d
Update
2025-03-31 16:29:07 -07:00
Nuno Campos
118016a21c
Add fast path to serialize None values
2025-03-31 16:15:56 -07:00
Nuno Campos
067b99c789
Lazily create atomic counters in pregel scratchpad
...
- many times these aren't actually used, so makes sense to delay creation until needed
2025-03-31 15:19:53 -07:00
Tat Dat Duong
aef463c633
fix(sdk-js): send accepts any input
2025-04-01 00:15:32 +02:00
Nuno Campos
e9e9a96a0d
Reduce perf impact of pregel scratchpad creation
...
- make scratchpad class frozen now that its members are never reassigned
- replace next(gen expr) with for-loop to avoid allocating generator objects
2025-03-31 14:50:10 -07:00
Tat Dat Duong
f629f68ec3
feat(cli): add support for gen ui config
2025-03-28 23:05:04 +01:00
Tat Dat Duong
2808a7859a
Bump to 0.0.62
2025-03-28 21:39:44 +01:00
Tat Dat Duong
fb3c61ea4f
feat(sdk-js): run optimistic values mutator before any network request
2025-03-28 21:39:35 +01:00
Tat Dat Duong
9abc1c8174
release(sdk-js): 0.0.61
2025-03-28 15:23:25 +01:00
Tat Dat Duong
b8b973fc0c
fix(sdk-js): do not await for client.runs.stream, as it is already async generator
2025-03-28 15:15:54 +01:00
David Duong and GitHub
5401d2ea81
feat(sdk-js): add option to manually provide implementation for shared modules ( #4042 )
2025-03-28 14:04:09 +01:00
Nuno Campos
49bb08a3f9
Update prebuilt test
2025-03-27 17:58:29 -07:00
Nuno Campos
4f2e9b838f
Reduce the number of channels created for each node by 50%
...
- Used to be 2 channels per node, it is now one per node, which is the minimum
- Now both hard edges, conditional edges, entrypoint and conditional entrypoint all use the same channel to trigger a node
2025-03-27 17:47:34 -07:00
William FH and GitHub
7f079adfee
Update auth user type ( #4062 )
2025-03-27 16:09:54 -07:00
William Fu-Hinthorn
4c74af606f
Update auth user type
2025-03-27 16:03:11 -07:00
Nuno Campos and GitHub
522caa643f
In Python 3.12 or above, use asyncio eager task factory ( #4055 )
...
- This is a performance improvement when calling async functions that do
not use await, as they are run immediately and never scheduled in the
loop
2025-03-27 13:36:04 -07:00
Nuno Campos
ef71656f05
Fix
2025-03-27 13:14:39 -07:00
Tat Dat Duong
3ba7c7fbed
Do not throw error if window is undefined due to Next
2025-03-27 21:03:54 +01:00
Tat Dat Duong
5cdab86d48
Fix object assignment
2025-03-27 20:58:39 +01:00
Nuno Campos and GitHub
f5fe7e5195
Remove internal frames from stack traces ( #4054 )
...
- For exceptions raised in user code (ie. nodes or edges) remove
internal frames from the stack trace
2025-03-27 12:41:54 -07:00
Nuno Campos
1c5a354a7d
In Python 3.12 or above, use asyncio eager task factory
...
- This is a performance improvement when calling async functions that do not use await, as they are run immediately and never scheduled in the loop
2025-03-27 11:00:37 -07:00
Nuno Campos
bfd271e00e
Remove internal frames from stack traces
...
- For exceptions raised in user code (ie. nodes or edges) remove internal frames from the stack trace
2025-03-27 10:58:13 -07:00
Vadym Barda and GitHub
9647b1e55f
langgraph: use correct type for node destination annotations ( #4053 )
...
Fixes https://github.com/langchain-ai/langgraph/issues/4051
2025-03-27 16:57:39 +00:00