Vadym Barda and GitHub
098d5ec403
langgraph: update RunnableLike to support injected kwargs ( #3288 )
...
Fixes #3257
2025-02-03 11:25:20 -05:00
Vadym Barda and GitHub
c0db7f4d09
docs: revamp streaming how-to guides + update redirects ( #3274 )
2025-01-31 18:04:51 -05:00
Vadym Barda and GitHub
15af8a9e6c
Revert "docs: revamp streaming how-to guides ( #3239 )" ( #3270 )
...
This reverts commit d5b0ad2cf6 .
2025-01-31 15:52:58 -05:00
Vadym Barda and GitHub
d5b0ad2cf6
docs: revamp streaming how-to guides ( #3239 )
2025-01-31 15:14:26 -05:00
ccurme and GitHub
8d8e514924
langgraph[patch]: rename parameter ( #3268 )
...
Rename `tool_call_parallelism` (has not been released yet).
2025-01-31 19:36:55 +00:00
a37c4d6f49
langgraph[patch]: allow ToolNode to accept ToolCalls ( #3126 )
...
Alternative to https://github.com/langchain-ai/langgraph/pull/3124
Currently if a tool interrupts, the entire tool node executes again
after resuming. So tools can get executed twice if parallel tool calls
are generated. Here we allow ToolNode to accept tool calls, so we can
use the `Send` API to distribute the tool calls to multiple instances of
the tool node.
```python
from langchain_anthropic import ChatAnthropic
from langchain_core.tools import tool
from langgraph.checkpoint.memory import MemorySaver
from langgraph.prebuilt import create_react_agent
from langgraph.types import Command, Send, interrupt
@tool
def human_assistance(query: str) -> str:
"""Request assistance from a human."""
human_response = interrupt({"query": query})
return human_response["data"]
@tool
def get_weather(location: str) -> str:
"""Use this tool to get the weather."""
return "It's sunny!"
tools = [get_weather, human_assistance]
llm = ChatAnthropic(model="claude-3-5-sonnet-20240620")
agent = create_react_agent(
llm,
tools,
checkpointer=MemorySaver(),
tool_call_parallelism="parallel_tool_nodes",
)
user_input = (
"Could you please (1) request assistance for building an AI agent "
"from a human, and (2) search for the weather in Boston, MA? "
"Generate two tool calls at once."
)
config = {"configurable": {"thread_id": "1"}}
for event in agent.stream(
{"messages": [{"role": "user", "content": user_input}]},
config,
stream_mode="values",
):
event["messages"][-1].pretty_print()
```
```
...
```
```python
human_response = "You should check out LangGraph to build your agent."
human_command = Command(resume={"data": human_response})
for event in agent.stream(human_command, config, stream_mode="values"):
event["messages"][-1].pretty_print()
```
---------
Co-authored-by: Vadym Barda <vadym@langchain.dev >
2025-01-31 17:20:59 +00:00
Vadym Barda and GitHub
4b3e07b67a
langgraph: release 0.2.69 ( #3256 )
2025-01-30 19:56:20 -05:00
Nuno Campos
5a79210904
Lint
2025-01-30 16:28:03 -08:00
Nuno Campos
4a60eaf32f
Guard and cache calls to find_subgraph_pregel
...
- The result of these doesnt change once a node is created, and it's fairly expensive to run, so great thing to cache
- There's a variety of errors that can come from inspecting the source code of a function (part of what this does) so adding a catch-all try-except block as this should be best-effort, not crash your graph
2025-01-30 16:26:23 -08:00
Vadym Barda and GitHub
cf7c3e7fd1
docs: update README to include built w/ langgraph ( #3254 )
2025-01-30 22:13:06 +00:00
37e8e00f1f
When using Command.PARENT also pass existing subgraph state to parent graph ( #3134 )
...
Co-authored-by: Vadym Barda <vadym@langchain.dev >
2025-01-30 15:54:44 -05:00
Vadym Barda and GitHub
a0ec9017f2
langgraph: add get_stream_writer() ( #3251 )
...
Alternative to #3250
2025-01-30 20:45:44 +00:00
Vadym Barda and GitHub
46cba763be
docs: small README update ( #3244 )
2025-01-29 17:46:32 -05:00
Vadym Barda and GitHub
830e5f4550
docs: update README ( #3242 )
2025-01-29 22:33:32 +00:00
Vadym Barda and GitHub
39e65a1a62
langgraph: expose tags in the metadata for streamed message chunks ( #3238 )
2025-01-29 20:24:32 +00:00
Vadym Barda and GitHub
82148e9bf2
docs: update streaming docstring for Pregel and expose in api ref ( #3229 )
2025-01-29 12:07:07 -05:00
William FH and GitHub
7e267897c9
Update auth file paths in build/up ( #3231 )
2025-01-29 05:09:10 -08:00
0cf3a64d66
Do not inject args in RunnableCallable if arg already exists ( #3185 )
...
Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com >
2025-01-28 12:48:33 -05:00
Vadym Barda and GitHub
0d8fea847a
langgraph: release 0.2.68 ( #3224 )
2025-01-27 21:08:06 -05:00
Eugene Yurtsev and GitHub
b4dc3a851f
functional api: remove generator support ( #3220 )
...
Remove generator support in entrypoint.
2025-01-27 19:42:35 -05:00
Vadym Barda and GitHub
7568862013
langgraph: more unittests for functional API ( #3221 )
2025-01-28 00:41:15 +00:00
Vadym Barda and GitHub
a910a1a341
langgraph: actually fix flaky test ( #3219 )
2025-01-27 16:06:31 -05:00
Vadym Barda and GitHub
554e763994
langgraph: use 'prompt' param for model input preprocessing in create_react_agent ( #3173 )
2025-01-27 19:03:01 +00:00
Vadym Barda and GitHub
adff1df813
langgraph: fix flaky test ( #3218 )
2025-01-27 13:11:17 -05:00
Vadym Barda and GitHub
64b828def6
langgraph: handle task naming for reused class methods ( #3216 )
2025-01-27 17:05:39 +00:00
Jacob Lee and GitHub
9196cc2da8
docs: Fix broken links in README ( #3211 )
2025-01-27 09:15:17 -05:00
David Duong and GitHub
e13a8bc320
fix: missing pgvector in CLI ( #3165 )
...
Fixes https://github.com/langchain-ai/langgraph/issues/3164
2025-01-25 04:27:42 +01:00
Tat Dat Duong
4b5b309152
Bump to 0.1.69
2025-01-25 04:18:18 +01:00
Tat Dat Duong
9d5166a0d3
Fix tests
2025-01-25 04:16:52 +01:00
Nuno Campos and GitHub
5b11683f4e
Fix type hints for entrypoint decorator ( #3198 )
2025-01-24 15:07:21 -08:00
Vadym Barda and GitHub
3fae8d47c3
langgraph: handle more callable types in tasks ( #3203 )
2025-01-24 22:50:42 +00:00
Nuno Campos
be9cb03dfa
Lint
2025-01-24 13:51:16 -08:00
Vadym Barda and GitHub
6926c4bcc0
langgraph: add names for tasks ( #3202 )
2025-01-24 21:42:54 +00:00
Nuno Campos
c04802a344
Fix type hints for entrypoint decorator
2025-01-24 09:31:27 -08:00
Nuno Campos and GitHub
cf7f6691cf
Improve typings for task, it now returns a mixed sync/async future protocol ( #3186 )
...
- note this type is never instantiated, it is only used for typing (we
cannot make it a protocol as it inherits from concurrent.futures.Future)
2025-01-24 09:19:51 -08:00
Eugene Yurtsev and GitHub
ae8afb7677
reference: document entrypoint more ( #3189 )
...
add more documentation to the entrypoint primitive
2025-01-23 22:17:20 -05:00
Nuno Campos
996b120613
Undo
2025-01-23 16:59:27 -08:00
Nuno Campos
1093dd55c8
Improve typings for task, it now returns a mixed sync/async future protocol
...
- note this type is never instantiated, it is only used for typing (we cannot make it a protocol as it inherits from concurrent.futures.Future)
2025-01-23 16:57:34 -08:00
Nuno Campos
6948cf5eb8
Undo change to test watch mode
2025-01-23 16:18:53 -08:00
Nuno Campos
f014d96d1c
Remove implementation of get_graph for @entrypoint
2025-01-23 15:39:36 -08:00
Vadym Barda and GitHub
1e61ddfdbe
langgraph: release 0.2.67 ( #3182 )
2025-01-23 18:01:43 -05:00
Vadym Barda and GitHub
06823e327f
langgraph: update docstrings/api ref for functional api ( #3176 )
2025-01-23 16:48:55 -05:00
Vadym Barda and GitHub
1059ef55d1
langgraph: handle node return annotations with unions ( #3170 )
2025-01-23 14:41:22 -05:00
39552255c8
langgraph: add support for BaseModel updates to Command ( #2747 )
...
Simple update that adds support for the `update` attribute of the
`Command` class to support Pydantic `BaseModel` type.
LangGraph already supports [Pydantic models for graph
states](https://langchain-ai.github.io/langgraph/how-tos/state-model/ ).
Extending support to the `update` attribute allows users to pass custom
BaseModel instances. Additionally, updates defined as `BaseModel` types
are type-validated when created.
https://github.com/langchain-ai/langgraph/issues/2804
---------
Co-authored-by: vbarda <vadym@langchain.dev >
2025-01-23 14:31:44 -05:00
Vadym Barda and GitHub
38bbe67469
langgraph: remove print ( #3167 )
2025-01-23 11:24:18 -05:00
Nuno Campos and GitHub
6335963674
Make scratchpad counters thread-safe ( #3158 )
...
- Same solution as used in python stdlib to name threads and asyncio
tasks
2025-01-23 07:37:04 -08:00
Nuno Campos
8a4c452317
Make test less flaky
2025-01-23 07:27:34 -08:00
Eugene Yurtsev and GitHub
5dc5853161
Add entrypoint.final to decouple return value from save value ( #3135 )
...
* Introduce `entrypoint.final` that allows decoupling what's returned
from the state update.
* moving decorator to class object w/ call to support defining `final`
as a property on it -- this should play nicely w/ IDE tooling / type
checking.
```python
previous_ = None
@entrypoint(checkpointer=MemorySaver())
def foo(msg: str, *, previous: Any) -> entrypoint.final[int, list[str]]:
nonlocal previous_
previous_ = previous
previous = previous or []
return entrypoint.final(value=len(previous), save=previous + [msg])
assert foo.get_output_schema().model_json_schema() == {
"title": "LangGraphOutput",
"type": "integer",
}
config = {"configurable": {"thread_id": "1"}}
assert foo.invoke("hello", config) == 0
assert previous_ is None
assert foo.invoke("goodbye", config) == 1
assert previous_ == ["hello"]
assert foo.invoke("definitely", config) == 2
assert previous_ == ["hello", "goodbye"]
```
2025-01-23 10:18:23 -05:00
Vadym Barda and GitHub
9e066554ba
langgraph: allow async state modifier in create_react_agent ( #3161 )
...
Fixes https://github.com/langchain-ai/langgraph/issues/2875
2025-01-23 09:29:25 -05:00
Tat Dat Duong
6ce9354ee4
fix: missing pgvector in CLI
...
Fixes https://github.com/langchain-ai/langgraph/issues/3164
2025-01-23 15:27:39 +01:00