From 1774dbb860e3eefe65faca7f0c7ec4032e2561fa Mon Sep 17 00:00:00 2001 From: Isaac Francisco <78627776+isahers1@users.noreply.github.com> Date: Wed, 4 Sep 2024 15:13:19 -0700 Subject: [PATCH] [docs]: adding js/curl tabs (#1558) * jsifying * x * z * x * fix background run output * reformatting * z * z * z * z * z * add tabs to stream debug * default urls --- docs/docs/cloud/concepts/api.md | 6 +- docs/docs/cloud/deployment/test_locally.md | 8 +- docs/docs/cloud/how-tos/background_run.md | 443 ++++++++++++++++++ .../docs/cloud/how-tos/check_thread_status.md | 12 +- .../docs/cloud/how-tos/configuration_cloud.md | 264 +++++++++++ docs/docs/cloud/how-tos/copy_threads.md | 24 +- docs/docs/cloud/how-tos/cron_jobs.md | 184 ++++++++ docs/docs/cloud/how-tos/enqueue_concurrent.md | 108 ++++- .../how-tos/human_in_the_loop_breakpoint.md | 9 +- .../how-tos/human_in_the_loop_edit_state.md | 16 +- .../human_in_the_loop_review_tool_calls.md | 412 ++++++++++++++-- .../how-tos/human_in_the_loop_time_travel.md | 13 +- .../how-tos/human_in_the_loop_user_input.md | 46 +- docs/docs/cloud/how-tos/index.md | 12 +- .../cloud/how-tos/interrupt_concurrent.md | 108 ++++- docs/docs/cloud/how-tos/reject_concurrent.md | 102 +++- .../docs/cloud/how-tos/rollback_concurrent.md | 100 +++- docs/docs/cloud/how-tos/same-thread.md | 310 ++++++++++++ docs/docs/cloud/how-tos/stateless_runs.md | 180 +++++++ docs/docs/cloud/how-tos/stream_debug.md | 88 +++- docs/docs/cloud/how-tos/stream_events.md | 50 +- docs/docs/cloud/how-tos/stream_messages.md | 40 +- docs/docs/cloud/how-tos/stream_multiple.md | 40 +- docs/docs/cloud/how-tos/stream_updates.md | 34 +- docs/docs/cloud/how-tos/stream_values.md | 25 +- docs/docs/cloud/how-tos/webhooks.md | 125 +++++ docs/mkdocs.yml | 12 +- examples/cloud_examples/background_run.ipynb | 388 --------------- .../cloud_examples/configuration_cloud.ipynb | 198 -------- examples/cloud_examples/cron_jobs.ipynb | 132 ------ .../cloud_examples/img/webhook_results.png | Bin 442633 -> 0 bytes examples/cloud_examples/same-thread.ipynb | 192 -------- examples/cloud_examples/stateless_runs.ipynb | 152 ------ examples/cloud_examples/webhooks.ipynb | 72 --- 34 files changed, 2489 insertions(+), 1416 deletions(-) create mode 100644 docs/docs/cloud/how-tos/background_run.md create mode 100644 docs/docs/cloud/how-tos/configuration_cloud.md create mode 100644 docs/docs/cloud/how-tos/cron_jobs.md create mode 100644 docs/docs/cloud/how-tos/same-thread.md create mode 100644 docs/docs/cloud/how-tos/stateless_runs.md create mode 100644 docs/docs/cloud/how-tos/webhooks.md delete mode 100644 examples/cloud_examples/background_run.ipynb delete mode 100644 examples/cloud_examples/configuration_cloud.ipynb delete mode 100644 examples/cloud_examples/cron_jobs.ipynb delete mode 100644 examples/cloud_examples/img/webhook_results.png delete mode 100644 examples/cloud_examples/same-thread.ipynb delete mode 100644 examples/cloud_examples/stateless_runs.ipynb delete mode 100644 examples/cloud_examples/webhooks.ipynb diff --git a/docs/docs/cloud/concepts/api.md b/docs/docs/cloud/concepts/api.md index e81c672f3..99bd6c9ab 100644 --- a/docs/docs/cloud/concepts/api.md +++ b/docs/docs/cloud/concepts/api.md @@ -39,7 +39,7 @@ It's often useful to run graphs on some schedule. LangGraph Cloud supports cron - Create a new thread with the specified assistant - Send the specified input to that thread -Note that this sends the same input to the thread every time. See the [how-to guide](../how-tos/cloud_examples/cron_jobs.ipynb) for creating cron jobs. +Note that this sends the same input to the thread every time. See the [how-to guide](../how-tos/cron_jobs.md) for creating cron jobs. The LangGraph Cloud API provides several endpoints for creating and managing cron jobs. See the [API reference](../reference/api/api_ref.html#tag/runscreate/POST/threads/{thread_id}/runs/crons) for more details. @@ -182,13 +182,13 @@ The only difference is in stateless background runs, if the task worker dies hal - whereas a stateful background run would retry from the last successful checkpoint - a stateless background run would retry from the beginning -See the [how-to guide](../how-tos/cloud_examples/stateless_runs.ipynb) for creating stateless runs. +See the [how-to guide](../how-tos/stateless_runs.md) for creating stateless runs. ### Webhooks For all types of runs, langgraph cloud supports completion webhooks. When you create the run you can pass a webhook URL to be called when the completes (successfully or not). This is especially useful for background runs and cron jobs, as the webhook can give you an indication the run has completed and you can perform further actions for your appilcation. -See this [how-to guide](../how-tos/cloud_examples/webhooks.ipynb) to learn about how to use webhooks with LangGraph Cloud. +See this [how-to guide](../how-tos/webhooks.md) to learn about how to use webhooks with LangGraph Cloud. ## Deployment diff --git a/docs/docs/cloud/deployment/test_locally.md b/docs/docs/cloud/deployment/test_locally.md index a5a06624a..2822b4052 100644 --- a/docs/docs/cloud/deployment/test_locally.md +++ b/docs/docs/cloud/deployment/test_locally.md @@ -49,6 +49,7 @@ You can either initialize by passing authentication or by setting an environment # only pass the url argument to get_client() if you changed the default port when calling langgraph up client = get_client(url=,api_key=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -60,7 +61,8 @@ You can either initialize by passing authentication or by setting an environment // only set the apiUrl if you changed the default port when calling langgraph up const client = new Client({ apiUrl: , apiKey: }); - const assistantId = "agent" + // Using the graph deployed with the name "agent" + const assistantId = "agent"; const thread = await client.threads.create(); ``` @@ -85,6 +87,7 @@ If you have a `LANGCHAIN_API_KEY` set in your environment, you do not need to ex # only pass the url argument to get_client() if you changed the default port when calling langgraph up client = get_client() + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -96,7 +99,8 @@ If you have a `LANGCHAIN_API_KEY` set in your environment, you do not need to ex // only set the apiUrl if you changed the default port when calling langgraph up const client = new Client(); - const assistantId = "agent" + // Using the graph deployed with the name "agent" + const assistantId = "agent"; const thread = await client.threads.create(); ``` diff --git a/docs/docs/cloud/how-tos/background_run.md b/docs/docs/cloud/how-tos/background_run.md new file mode 100644 index 000000000..d648e25b0 --- /dev/null +++ b/docs/docs/cloud/how-tos/background_run.md @@ -0,0 +1,443 @@ +# How to kick off background runs + +This guide covers how to kick off background runs for your agent. +This can be useful for long running jobs. + +First let's set up our client and thread: + +=== "Python" + + ```python + from langgraph_sdk import get_client + + client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" + # create thread + thread = await client.threads.create() + print(thread) + ``` + +=== "Javascript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + + const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantID = "agent"; + // create thread + const thread = await client.threads.create(); + console.log(thread); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' + ``` + +Output: + + { + 'thread_id': '5cb1e8a1-34b3-4a61-a34e-71a9799bd00d', + 'created_at': '2024-08-30T20:35:52.062934+00:00', + 'updated_at': '2024-08-30T20:35:52.062934+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } + +If we list the current runs on this thread, we will see that it's empty: + +=== "Python" + + ```python + runs = await client.runs.list(thread["thread_id"]) + print(runs) + ``` + +=== "Javascript" + + ```js + let runs = await client.runs.list(thread['thread_id']); + console.log(runs); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /threads//runs + ``` + +Output: + + [] + +Now let's kick off a run: + +=== "Python" + + ```python + input = {"messages": [{"role": "human", "content": "what's the weather in sf"}]} + run = await client.runs.create(thread["thread_id"], assistant_id, input=input) + ``` + +=== "Javascript" + + ```js + let input = {"messages": [{"role": "human", "content": "what's the weather in sf"}]}; + let run = await client.runs.create(thread["thread_id"], assistantID, { input }); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": + }' + ``` + +The first time we poll it, we can see `status=pending`: + +=== "Python" + + ```python + print(await client.runs.get(thread["thread_id"], run["run_id"])) + ``` + +=== "Javascript" + + ```js + console.log(await client.runs.get(thread["thread_id"], run["run_id"])); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /threads//runs/ + ``` + +Output: + + { + "run_id": "1ef6a5f8-bd86-6763-bbd6-bff042db7b1b", + "thread_id": "7885f0cf-94ad-4040-91d7-73f7ba007c8a", + "assistant_id": "fe096781-5601-53d2-b2f6-0d3403f7e9ca", + "created_at": "2024-09-04T01:46:47.244887+00:00", + "updated_at": "2024-09-04T01:46:47.244887+00:00", + "metadata": {}, + "status": "pending", + "kwargs": { + "input": { + "messages": [ + { + "role": "human", + "content": "what's the weather in sf" + } + ] + }, + "config": { + "metadata": { + "created_by": "system" + }, + "configurable": { + "run_id": "1ef6a5f8-bd86-6763-bbd6-bff042db7b1b", + "user_id": "", + "graph_id": "agent", + "thread_id": "7885f0cf-94ad-4040-91d7-73f7ba007c8a", + "assistant_id": "fe096781-5601-53d2-b2f6-0d3403f7e9ca", + "checkpoint_id": null + } + }, + "webhook": null, + "temporary": false, + "stream_mode": [ + "values" + ], + "feedback_keys": null, + "interrupt_after": null, + "interrupt_before": null + }, + "multitask_strategy": "reject" + } + + + +Now we can join the run, wait for it to finish and check that status again: + +=== "Python" + + ```python + await client.runs.join(thread["thread_id"], run["run_id"]) + print(await client.runs.get(thread["thread_id"], run["run_id"])) + ``` + +=== "Javascript" + + ```js + await client.runs.join(thread["thread_id"], run["run_id"]); + console.log(await client.runs.get(thread["thread_id"], run["run_id"])); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /threads//runs//join && + curl --request GET \ + --url /threads//runs/ + ``` + +Output: + + { + "run_id": "1ef6a5f8-bd86-6763-bbd6-bff042db7b1b", + "thread_id": "7885f0cf-94ad-4040-91d7-73f7ba007c8a", + "assistant_id": "fe096781-5601-53d2-b2f6-0d3403f7e9ca", + "created_at": "2024-09-04T01:46:47.244887+00:00", + "updated_at": "2024-09-04T01:46:47.244887+00:00", + "metadata": {}, + "status": "success", + "kwargs": { + "input": { + "messages": [ + { + "role": "human", + "content": "what's the weather in sf" + } + ] + }, + "config": { + "metadata": { + "created_by": "system" + }, + "configurable": { + "run_id": "1ef6a5f8-bd86-6763-bbd6-bff042db7b1b", + "user_id": "", + "graph_id": "agent", + "thread_id": "7885f0cf-94ad-4040-91d7-73f7ba007c8a", + "assistant_id": "fe096781-5601-53d2-b2f6-0d3403f7e9ca", + "checkpoint_id": null + } + }, + "webhook": null, + "temporary": false, + "stream_mode": [ + "values" + ], + "feedback_keys": null, + "interrupt_after": null, + "interrupt_before": null + }, + "multitask_strategy": "reject" + } + + +Perfect! The run succeeded as we would expect. We can double check that the run worked as expected by printing out the final state: + +=== "Python" + + ```python + final_result = await client.threads.get_state(thread["thread_id"]) + print(final_result) + ``` + +=== "Javascript" + + ```js + let finalResult = await client.threads.getState(thread["thread_id"]); + console.log(finalResult); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /threads//state + ``` + +Output: + + { + "values": { + "messages": [ + { + "content": "what's the weather in sf", + "additional_kwargs": {}, + "response_metadata": {}, + "type": "human", + "name": null, + "id": "beba31bf-320d-4125-9c37-cadf526ac47a", + "example": false + }, + { + "content": [ + { + "id": "toolu_01AaNPSPzqia21v7aAKwbKYm", + "input": {}, + "name": "tavily_search_results_json", + "type": "tool_use", + "index": 0, + "partial_json": "{\"query\": \"weather in san francisco\"}" + } + ], + "additional_kwargs": {}, + "response_metadata": { + "stop_reason": "tool_use", + "stop_sequence": null + }, + "type": "ai", + "name": null, + "id": "run-f220faf8-1d27-4f73-ad91-6bb3f47e8639", + "example": false, + "tool_calls": [ + { + "name": "tavily_search_results_json", + "args": { + "query": "weather in san francisco" + }, + "id": "toolu_01AaNPSPzqia21v7aAKwbKYm", + "type": "tool_call" + } + ], + "invalid_tool_calls": [], + "usage_metadata": { + "input_tokens": 273, + "output_tokens": 61, + "total_tokens": 334 + } + }, + { + "content": "[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.78, 'lon': -122.42, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1725052131, 'localtime': '2024-08-30 14:08'}, 'current': {'last_updated_epoch': 1725051600, 'last_updated': '2024-08-30 14:00', 'temp_c': 21.1, 'temp_f': 70.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 11.9, 'wind_kph': 19.1, 'wind_degree': 290, 'wind_dir': 'WNW', 'pressure_mb': 1018.0, 'pressure_in': 30.07, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 59, 'cloud': 25, 'feelslike_c': 21.1, 'feelslike_f': 70.0, 'windchill_c': 18.6, 'windchill_f': 65.5, 'heatindex_c': 18.6, 'heatindex_f': 65.5, 'dewpoint_c': 12.2, 'dewpoint_f': 54.0, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 5.0, 'gust_mph': 15.0, 'gust_kph': 24.2}}\"}]", + "additional_kwargs": {}, + "response_metadata": {}, + "type": "tool", + "name": "tavily_search_results_json", + "id": "686b2487-f332-4e58-9508-89b3a814cd81", + "tool_call_id": "toolu_01AaNPSPzqia21v7aAKwbKYm", + "artifact": { + "query": "weather in san francisco", + "follow_up_questions": null, + "answer": null, + "images": [], + "results": [ + { + "title": "Weather in San Francisco", + "url": "https://www.weatherapi.com/", + "content": "{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.78, 'lon': -122.42, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1725052131, 'localtime': '2024-08-30 14:08'}, 'current': {'last_updated_epoch': 1725051600, 'last_updated': '2024-08-30 14:00', 'temp_c': 21.1, 'temp_f': 70.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 11.9, 'wind_kph': 19.1, 'wind_degree': 290, 'wind_dir': 'WNW', 'pressure_mb': 1018.0, 'pressure_in': 30.07, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 59, 'cloud': 25, 'feelslike_c': 21.1, 'feelslike_f': 70.0, 'windchill_c': 18.6, 'windchill_f': 65.5, 'heatindex_c': 18.6, 'heatindex_f': 65.5, 'dewpoint_c': 12.2, 'dewpoint_f': 54.0, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 5.0, 'gust_mph': 15.0, 'gust_kph': 24.2}}", + "score": 0.976148, + "raw_content": null + } + ], + "response_time": 3.07 + }, + "status": "success" + }, + { + "content": [ + { + "text": "\n\nThe search results provide the current weather conditions in San Francisco. According to the data, as of 2:00 PM on August 30, 2024, the temperature in San Francisco is 70\u00b0F (21.1\u00b0C) with partly cloudy skies. The wind is blowing from the west-northwest at around 12 mph (19 km/h). The humidity is 59% and visibility is 9 miles (16 km). Overall, it looks like a nice late summer day in San Francisco with comfortable temperatures and partly sunny conditions.", + "type": "text", + "index": 0 + } + ], + "additional_kwargs": {}, + "response_metadata": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "type": "ai", + "name": null, + "id": "run-8fecc61d-3d9f-4e16-8e8a-92f702be498a", + "example": false, + "tool_calls": [], + "invalid_tool_calls": [], + "usage_metadata": { + "input_tokens": 837, + "output_tokens": 124, + "total_tokens": 961 + } + } + ] + }, + "next": [], + "tasks": [], + "metadata": { + "step": 3, + "run_id": "1ef67140-eb23-684b-8253-91d4c90bb05e", + "source": "loop", + "writes": { + "agent": { + "messages": [ + { + "id": "run-8fecc61d-3d9f-4e16-8e8a-92f702be498a", + "name": null, + "type": "ai", + "content": [ + { + "text": "\n\nThe search results provide the current weather conditions in San Francisco. According to the data, as of 2:00 PM on August 30, 2024, the temperature in San Francisco is 70\u00b0F (21.1\u00b0C) with partly cloudy skies. The wind is blowing from the west-northwest at around 12 mph (19 km/h). The humidity is 59% and visibility is 9 miles (16 km). Overall, it looks like a nice late summer day in San Francisco with comfortable temperatures and partly sunny conditions.", + "type": "text", + "index": 0 + } + ], + "example": false, + "tool_calls": [], + "usage_metadata": { + "input_tokens": 837, + "total_tokens": 961, + "output_tokens": 124 + }, + "additional_kwargs": {}, + "response_metadata": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "invalid_tool_calls": [] + } + ] + } + }, + "user_id": "", + "graph_id": "agent", + "thread_id": "5cb1e8a1-34b3-4a61-a34e-71a9799bd00d", + "created_by": "system", + "assistant_id": "fe096781-5601-53d2-b2f6-0d3403f7e9ca" + }, + "created_at": "2024-08-30T21:09:00.079909+00:00", + "checkpoint_id": "1ef67141-3ca2-6fae-8003-fe96832e57d6", + "parent_checkpoint_id": "1ef67141-2129-6b37-8002-61fc3bf69cb5" + } + +We can also just print the content of the last AIMessage: + +=== "Python" + + ```python + print(final_result['values']['messages'][-1]['content'][0]['text']) + ``` + +=== "Javascript" + + ```js + console.log(finalResult['values']['messages'][finalResult['values']['messages'].length-1]['content'][0]['text']); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /threads//state | jq -r '.values.messages[-1].content.[0].text' + ``` + +Output: + + The search results provide the current weather conditions in San Francisco. According to the data, as of 2:00 PM on August 30, 2024, the temperature in San Francisco is 70°F (21.1°C) with partly cloudy skies. The wind is blowing from the west-northwest at around 12 mph (19 km/h). The humidity is 59% and visibility is 9 miles (16 km). Overall, it looks like a nice late summer day in San Francisco with comfortable temperatures and partly sunny conditions. \ No newline at end of file diff --git a/docs/docs/cloud/how-tos/check_thread_status.md b/docs/docs/cloud/how-tos/check_thread_status.md index 655b918c1..5fb26c403 100644 --- a/docs/docs/cloud/how-tos/check_thread_status.md +++ b/docs/docs/cloud/how-tos/check_thread_status.md @@ -13,6 +13,7 @@ First, we need to setup our client so that we can communicate with our hosted gr ```python from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -23,7 +24,8 @@ First, we need to setup our client so that we can communicate with our hosted gr import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); - const assistantId = agent; + // Using the graph deployed with the name "agent" + const assistantId = "agent"; const thread = await client.threads.create(); ``` @@ -48,7 +50,7 @@ We can use the following commands to find threads that are idle, which means tha === "Javascript" ```js - console.log(await client.threads.search({status: "idle",limit:1})); + console.log(await client.threads.search({ status: "idle", limit: 1 })); ``` === "CURL" @@ -83,7 +85,7 @@ We can use the following commands to find threads that have been interrupted in === "Javascript" ```js - console.log(await client.threads.search({status: "interrupted",limit:1})); + console.log(await client.threads.search({ status: "interrupted", limit: 1 })); ``` === "CURL" @@ -117,7 +119,7 @@ We can use the following commands to find threads that are busy, meaning they ar === "Javascript" ```js - console.log(await client.threads.search({status: "busy",limit: 1})); + console.log(await client.threads.search({ status: "busy", limit: 1 })); ``` === "CURL" @@ -183,7 +185,7 @@ The search endpoint for threads also allows you to filter on metadata, which can === "Javascript" ```js - console.log((await client.threads.search({metadata: {"foo":"bar"},limit: 1}))[0].status); + console.log((await client.threads.search({ metadata: { "foo": "bar" }, limit: 1 }))[0].status); ``` === "CURL" diff --git a/docs/docs/cloud/how-tos/configuration_cloud.md b/docs/docs/cloud/how-tos/configuration_cloud.md new file mode 100644 index 000000000..becdf802d --- /dev/null +++ b/docs/docs/cloud/how-tos/configuration_cloud.md @@ -0,0 +1,264 @@ +# How to create agents with configuration + +One of the benefits of LangGraph API is that it lets you create agents with different configurations. +This is useful when you want to: + +- Define a cognitive architecture once as a LangGraph +- Let that LangGraph be configurable across some attributes (for example, system message or LLM to use) +- Let users create agents with arbitrary configurations, save them, and then use them in the future + +In this guide we will show how to do that for the default agent we have built in. + +If you look at the agent we defined, you can see that inside the `call_model` node we have created the model based on some configuration. That node looks like: + +=== "Python" + + ```python + def call_model(state, config): + messages = state["messages"] + model_name = config.get('configurable', {}).get("model_name", "anthropic") + model = _get_model(model_name) + response = model.invoke(messages) + # We return a list, because this will get added to the existing list + return {"messages": [response]} + ``` + +=== "Javascript" + + ```js + function callModel(state: State, config: RunnableConfig) { + const messages = state.messages; + const modelName = config.configurable?.model_name ?? "anthropic"; + const model = _getModel(modelName); + const response = model.invoke(messages); + // We return a list, because this will get added to the existing list + return { messages: [response] }; + } + ``` + +We are looking inside the config for a `model_name` parameter (which defaults to `anthropic` if none is found). That means that by default we are using Anthropic as our model provider. In this example we will see an example of how to create an example agent that is configured to use OpenAI. + +First let's set up our client and thread: + +=== "Python" + + ```python + from langgraph_sdk import get_client + + client = get_client(url=) + # Select an assistant that is not configured + assistants = await client.assistants.search() + assistant = [a for a in assistants if not a["config"]][0] + ``` + +=== "Javascript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + + const client = new Client({ apiUrl: }); + // Select an assistant that is not configured + const assistants = await client.assistants.search(); + const assistant = assistants.find(a => !a.config); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /assistants/search \ + --header 'Content-Type: application/json' \ + --data '{ + "limit": 10, + "offset": 0 + }' | jq -c 'map(select(.config == null or .config == {})) | .[0]' + ``` + +We can now call `.get_schemas` to get schemas associated with this graph: + +=== "Python" + + ```python + schemas = await client.assistants.get_schemas( + assistant_id=assistant["assistant_id"] + ) + # There are multiple types of schemas + # We can get the `config_schema` to look at the the configurable parameters + print(schemas["config_schema"]) + ``` + +=== "Javascript" + + ```js + const schemas = await client.assistants.getSchemas( + assistant["assistant_id"] + ); + // There are multiple types of schemas + // We can get the `config_schema` to look at the the configurable parameters + console.log(schemas.config_schema); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /assistants//schemas | jq -r '.config_schema' + ``` + +Output: + + { + 'model_name': + { + 'title': 'Model Name', + 'enum': ['anthropic', 'openai'], + 'type': 'string' + } + } + +Now we can initialize an assistant with config: + +=== "Python" + + ```python + openai_assistant = await client.assistants.create( + # "agent" is the name of a graph we deployed + "agent", config={"configurable": {"model_name": "openai"}} + ) + + print(openai_assistant) + ``` + +=== "Javascript" + + ```js + let openAIAssistant = await client.assistants.create( + // "agent" is the name of a graph we deployed + "agent", { "configurable": { "model_name": "openai" } } + ); + + console.log(openAIAssistant); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /assistants \ + --header 'Content-Type: application/json' \ + --data '{"graph_id":"agent","config":{"configurable":{"model_name":"open_ai"}}}' + ``` + +Output: + + { + "assistant_id": "62e209ca-9154-432a-b9e9-2d75c7a9219b", + "graph_id": "agent", + "created_at": "2024-08-31T03:09:10.230718+00:00", + "updated_at": "2024-08-31T03:09:10.230718+00:00", + "config": { + "configurable": { + "model_name": "open_ai" + } + }, + "metadata": {} + } + +We can verify the config is indeed taking effect: + +=== "Python" + + ```python + thread = await client.threads.create() + input = {"messages": [{"role": "user", "content": "who made you?"}]} + async for event in client.runs.stream( + thread["thread_id"], + openai_assistant["assistant_id"], + input=input, + stream_mode="updates", + ): + print(f"Receiving event of type: {event.event}") + print(event.data) + print("\n\n") + ``` + +=== "Javascript" + + ```js + const thread = await client.threads.create(); + let input = { "messages": [{ "role": "user", "content": "who made you?" }] }; + + const streamResponse = client.runs.stream( + thread["thread_id"], + openAIAssistant["assistant_id"], + { + input, + streamMode: "updates" + } + ); + + for await (const event of streamResponse) { + console.log(`Receiving event of type: ${event.event}`); + console.log(event.data); + console.log("\n\n"); + } + ``` + +=== "CURL" + + ```bash + thread_id=$(curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' | jq -r '.thread_id') && \ + curl --request POST \ + --url "/threads/${thread_id}/runs/stream" \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": , + "input": { + "messages": [ + { + "role": "human", + "content": "who made you?" + } + ] + }, + "stream_mode": [ + "updates" + ] + }' | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "") { + print data_content "\n" + } + sub(/^event: /, "Receiving event of type: ", $0) + printf "%s...\n", $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "") { + print data_content "\n\n" + } + } + ' + ``` + +Output: + + Receiving event of type: metadata + {'run_id': '1ef6746e-5893-67b1-978a-0f1cd4060e16'} + + + + Receiving event of type: updates + {'agent': {'messages': [{'content': 'I was created by OpenAI, a research organization focused on developing and advancing artificial intelligence technology.', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_157b3831f5'}, 'type': 'ai', 'name': None, 'id': 'run-e1a6b25c-8416-41f2-9981-f9cfe043f414', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}} + + + diff --git a/docs/docs/cloud/how-tos/copy_threads.md b/docs/docs/cloud/how-tos/copy_threads.md index 9a27282b2..22586ed4d 100644 --- a/docs/docs/cloud/how-tos/copy_threads.md +++ b/docs/docs/cloud/how-tos/copy_threads.md @@ -24,8 +24,8 @@ First, we need to setup our client so that we can communicate with our hosted gr ```js import { Client } from "@langchain/langgraph-sdk"; - const client = new Client({ apiUrl:"" }); - const assistantId = agent; + const client = new Client({ apiUrl: "" }); + const assistantId = "agent"; const thread = await client.threads.create(); ``` @@ -92,21 +92,21 @@ We can verify that the history from the prior thread did indeed copy over correc ```js function removeThreadId(d) { - if (d.metadata && d.metadata.thread_id) { - delete d.metadata.thread_id; - } - return d; + if (d.metadata && d.metadata.thread_id) { + delete d.metadata.thread_id; + } + return d; } // Assuming `client.threads.getHistory(threadId)` is an async function that returns a list of dicts async function compareThreadHistories(threadId, copiedThreadId) { - const originalThreadHistory = (await client.threads.getHistory(threadId)).map(removeThreadId); - const copiedThreadHistory = (await client.threads.getHistory(copiedThreadId)).map(removeThreadId); + const originalThreadHistory = (await client.threads.getHistory(threadId)).map(removeThreadId); + const copiedThreadHistory = (await client.threads.getHistory(copiedThreadId)).map(removeThreadId); - // Compare the two histories - console.assert(JSON.stringify(originalThreadHistory) === JSON.stringify(copiedThreadHistory)) - // if we made it here the assertion passed! - console.log("The histories are the same."); + // Compare the two histories + console.assert(JSON.stringify(originalThreadHistory) === JSON.stringify(copiedThreadHistory)); + // if we made it here the assertion passed! + console.log("The histories are the same."); } // Example usage diff --git a/docs/docs/cloud/how-tos/cron_jobs.md b/docs/docs/cloud/how-tos/cron_jobs.md new file mode 100644 index 000000000..f787c8b9c --- /dev/null +++ b/docs/docs/cloud/how-tos/cron_jobs.md @@ -0,0 +1,184 @@ +# Cron Jobs + +Sometimes you don't want to run your graph based on user interaction, but rather you would like to schedule your graph to run on a schedule - for example if you wish for your graph to compose and send out a weekly email of to-dos for your team. LangGraph Cloud allows you to do this without having to write your own script by using the `Crons` client. To schedule a graph job, you need to pass a [cron expression](https://crontab.cronhub.io/) to inform the client when you want to run the graph. `Cron` jobs are run in the background and do not interfere with normal invocations of the graph. + +## Setup + +First, let's setup our SDK client, assistant, and thread: + +=== "Python" + + ```python + from langgraph_sdk import get_client + + client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" + # create thread + thread = await client.threads.create() + print(thread) + ``` + +=== "Javascript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + + const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantId = "agent"; + // create thread + const thread = await client.threads.create(); + console.log(thread); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /assistants/search \ + --header 'Content-Type: application/json' \ + --data '{ + "limit": 10, + "offset": 0 + }' | jq -c 'map(select(.config == null or .config == {})) | .[0].graph_id' && \ + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' + ``` + +Output: + + { + 'thread_id': '9dde5490-2b67-47c8-aa14-4bfec88af217', + 'created_at': '2024-08-30T23:07:38.242730+00:00', + 'updated_at': '2024-08-30T23:07:38.242730+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } + +## Cron job on a thread + +To create a cron job associated with a specific thread, you can write: + + +=== "Python" + + ```python + # This schedules a job to run at 15:27 (3:27PM) every day + cron_job = await client.crons.create_for_thread( + thread["thread_id"], + assistant_id, + schedule="27 15 * * *", + input={"messages": [{"role": "user", "content": "What time is it?"}]}, + ) + ``` + +=== "Javascript" + + ```js + // This schedules a job to run at 15:27 (3:27PM) every day + const cronJob = await client.crons.create_for_thread( + thread["thread_id"], + assistantId, + { + schedule: "27 15 * * *", + input: { messages: [{ role: "user", content: "What time is it?" }] } + } + ); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/crons \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": , + }' + ``` + +Note that it is **very** important to delete `Cron` jobs that are no longer useful. Otherwise you could rack up unwanted API charges to the LLM! You can delete a `Cron` job using the following code: + +=== "Python" + + ```python + await client.crons.delete(cron_job["cron_id"]) + ``` + +=== "Javascript" + + ```js + await client.crons.delete(cronJob["cron_id"]); + ``` + +=== "CURL" + + ```bash + curl --request DELETE \ + --url /runs/crons/ + ``` + +## Cron job stateless + +You can also create stateless cron jobs by using the following code: + +=== "Python" + + ```python + # This schedules a job to run at 15:27 (3:27PM) every day + cron_job_stateless = await client.crons.create( + assistant_id, + schedule="27 15 * * *", + input={"messages": [{"role": "user", "content": "What time is it?"}]}, + ) + ``` + +=== "Javascript" + + ```js + // This schedules a job to run at 15:27 (3:27PM) every day + const cronJobStateless = await client.crons.create( + assistantId, + { + schedule: "27 15 * * *", + input: { messages: [{ role: "user", content: "What time is it?" }] } + } + ); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /runs/crons \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": , + }' + ``` + +Again, remember to delete your job once you are done with it! + +=== "Python" + + ```python + await client.crons.delete(cron_job_stateless["cron_id"]) + ``` + +=== "Javascript" + + ```js + await client.crons.delete(cronJobStateless["cron_id"]); + ``` + +=== "CURL" + + ```bash + curl --request DELETE \ + --url /runs/crons/ + ``` diff --git a/docs/docs/cloud/how-tos/enqueue_concurrent.md b/docs/docs/cloud/how-tos/enqueue_concurrent.md index 17c4ea0f5..5172b8ac6 100644 --- a/docs/docs/cloud/how-tos/enqueue_concurrent.md +++ b/docs/docs/cloud/how-tos/enqueue_concurrent.md @@ -5,20 +5,44 @@ This guide assumes knowledge of what double-texting is, which you can learn abou The guide covers the `enqueue` option for double texting, which adds the interruptions to a queue and executes them in the order they are received by the client. Below is a quick example of using the `enqueue` option. -First, we will define a quick helper function for printing out JS model outputs (you can skip this if using Python): +First, we will define a quick helper function for printing out JS and CURL model outputs (you can skip this if using Python): -```js -function prettyPrint(m) { - const padded = " " + m['type'] + " "; - const sepLen = Math.floor((80 - padded.length) / 2); - const sep = "=".repeat(sepLen); - const secondSep = sep + (padded.length % 2 ? "=" : ""); - - console.log(`${sep}${padded}${secondSep}`); - console.log("\n\n"); - console.log(m.content); -} -``` +=== "Javascript" + + ```js + function prettyPrint(m) { + const padded = " " + m['type'] + " "; + const sepLen = Math.floor((80 - padded.length) / 2); + const sep = "=".repeat(sepLen); + const secondSep = sep + (padded.length % 2 ? "=" : ""); + + console.log(`${sep}${padded}${secondSep}`); + console.log("\n\n"); + console.log(m.content); + } + ``` + +=== "CURL" + + ```bash + # PLACE THIS IN A FILE CALLED pretty_print.sh + pretty_print() { + local type="$1" + local content="$2" + local padded=" $type " + local total_width=80 + local sep_len=$(( (total_width - ${#padded}) / 2 )) + local sep=$(printf '=%.0s' $(eval "echo {1.."${sep_len}"}")) + local second_sep=$sep + if (( (total_width - ${#padded}) % 2 )); then + second_sep="${second_sep}=" + fi + + echo "${sep}${padded}${second_sep}" + echo + echo "$content" + } + ``` Then, let's import our required packages and instantiate our client, assistant, and thread. @@ -32,6 +56,7 @@ Then, let's import our required packages and instantiate our client, assistant, from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -43,9 +68,18 @@ Then, let's import our required packages and instantiate our client, assistant, const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" const assistantId = "agent"; const thread = await client.threads.create(); ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' + ``` Now let's start two runs, with the second interrupting the first one with a multitask strategy of "enqueue": @@ -82,6 +116,25 @@ Now let's start two runs, with the second interrupting the first one with a mult ) ``` +=== "CURL" + + ```bash + curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in sf?\"}]}, + }" && curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in nyc?\"}]}, + \"multitask_strategy\": \"enqueue\" + }" + ``` + Verify that the thread has data from both runs: === "Python" @@ -108,12 +161,25 @@ Verify that the thread has data from both runs: } ``` +=== "CURL" + + ```bash + source pretty_print.sh && curl --request GET \ + --url /threads//runs//join && \ + curl --request GET --url /threads//state | \ + jq -c '.values.messages[]' | while read -r element; do + type=$(echo "$element" | jq -r '.type') + content=$(echo "$element" | jq -r '.content | if type == "array" then tostring else . end') + pretty_print "$type" "$content" + done + ``` + Output: - ================================ Human Message ================================= + ================================ Human Message ================================= what's the weather in sf? - ================================== Ai Message ================================== + ================================== Ai Message ================================== [{'id': 'toolu_01Dez1sJre4oA2Y7NsKJV6VT', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] Tool Calls: @@ -121,11 +187,11 @@ Output: Call ID: toolu_01Dez1sJre4oA2Y7NsKJV6VT Args: query: weather in san francisco - ================================= Tool Message ================================= + ================================= Tool Message ================================= Name: tavily_search_results_json [{"url": "https://www.accuweather.com/en/us/san-francisco/94103/weather-forecast/347629", "content": "Get the current and future weather conditions for San Francisco, CA, including temperature, precipitation, wind, air quality and more. See the hourly and 10-day outlook, radar maps, alerts and allergy information."}] - ================================== Ai Message ================================== + ================================== Ai Message ================================== According to AccuWeather, the current weather conditions in San Francisco are: @@ -145,10 +211,10 @@ Output: Sunday: Partly sunny, high of 61°F (16°C) So in summary, expect seasonable spring weather in San Francisco over the next several days, with a mix of sun and clouds and temperatures ranging from the upper 40s at night to the low 60s during the days. Typical dry conditions with no rain in the forecast. - ================================ Human Message ================================= + ================================ Human Message ================================= what's the weather in nyc? - ================================== Ai Message ================================== + ================================== Ai Message ================================== [{'text': 'Here are the current weather conditions and forecast for New York City:', 'type': 'text'}, {'id': 'toolu_01FFft5Sx9oS6AdVJuRWWcGp', 'input': {'query': 'weather in new york city'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] Tool Calls: @@ -156,11 +222,11 @@ Output: Call ID: toolu_01FFft5Sx9oS6AdVJuRWWcGp Args: query: weather in new york city - ================================= Tool Message ================================= + ================================= Tool Message ================================= Name: tavily_search_results_json [{"url": "https://www.weatherapi.com/", "content": "{'location': {'name': 'New York', 'region': 'New York', 'country': 'United States of America', 'lat': 40.71, 'lon': -74.01, 'tz_id': 'America/New_York', 'localtime_epoch': 1718734479, 'localtime': '2024-06-18 14:14'}, 'current': {'last_updated_epoch': 1718733600, 'last_updated': '2024-06-18 14:00', 'temp_c': 29.4, 'temp_f': 84.9, 'is_day': 1, 'condition': {'text': 'Sunny', 'icon': '//cdn.weatherapi.com/weather/64x64/day/113.png', 'code': 1000}, 'wind_mph': 2.2, 'wind_kph': 3.6, 'wind_degree': 158, 'wind_dir': 'SSE', 'pressure_mb': 1025.0, 'pressure_in': 30.26, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 63, 'cloud': 0, 'feelslike_c': 31.3, 'feelslike_f': 88.3, 'windchill_c': 28.3, 'windchill_f': 82.9, 'heatindex_c': 29.6, 'heatindex_f': 85.3, 'dewpoint_c': 18.4, 'dewpoint_f': 65.2, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 7.0, 'gust_mph': 16.5, 'gust_kph': 26.5}}"}] - ================================== Ai Message ================================== + ================================== Ai Message ================================== According to the weather data from WeatherAPI: diff --git a/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md b/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md index 56c1931e2..08eaa0f3d 100644 --- a/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md +++ b/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md @@ -22,6 +22,7 @@ In this how-to we use a simple ReAct style hosted graph (you can see the full co ```python from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -32,7 +33,8 @@ In this how-to we use a simple ReAct style hosted graph (you can see the full co import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); - const assistantId = "agent" + // Using the graph deployed with the name "agent" + const assistantId = "agent"; const thread = await client.threads.create(); ``` @@ -73,7 +75,7 @@ And, now let's compile it with a breakpoint before the tool node: === "Javascript" ```js - const input = { "messages": [{ "role": "human", "content": "what's the weather in sf"}] } + const input = { messages: [{ role: "human", content: "what's the weather in sf" }] }; const streamResponse = client.runs.stream( thread["thread_id"], @@ -81,9 +83,10 @@ And, now let's compile it with a breakpoint before the tool node: { input: input, streamMode: "updates", - interruptBefore: ["action"], + interruptBefore: ["action"] } ); + for await (const chunk of streamResponse) { console.log(`Receiving new event of type: ${chunk.event}...`); console.log(chunk.data); diff --git a/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md b/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md index 668d826a8..927df7164 100644 --- a/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md +++ b/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md @@ -18,6 +18,7 @@ First, we need to setup our client so that we can communicate with our hosted gr ```python from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -28,6 +29,7 @@ First, we need to setup our client so that we can communicate with our hosted gr import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" const assistantId = "agent"; const thread = await client.threads.create(); ``` @@ -65,7 +67,7 @@ Now let's invoke our graph, making sure to interrupt before the `action` node. === "Javascript" ```js - const input = {"messages": [{ "role": "human", "content": "search for weather in SF"}] } + const input = { messages: [{ role: "human", content: "search for weather in SF" }] }; const streamResponse = client.runs.stream( thread["thread_id"], @@ -76,6 +78,7 @@ Now let's invoke our graph, making sure to interrupt before the `action` node. interruptBefore: ["action"], } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -154,15 +157,15 @@ Now, let's assume we actually meant to search for the weather in Sidi Frej (anot === "Javascript" ```js - // First, lets get the current state - const currentState = await client.threads.getState(thread['thread_id']); + // First, let's get the current state + const currentState = await client.threads.getState(thread["thread_id"]); // Let's now get the last message in the state // This is the one with the tool calls that we want to update - let lastMessage = currentState['values']['messages'][-1]; + let lastMessage = currentState.values.messages.slice(-1)[0]; // Let's now update the args for that tool call - lastMessage['tool_calls'][0]['args'] = {'query': 'current weather in Sidi Frej'}; + lastMessage.tool_calls[0].args = { query: "current weather in Sidi Frej" }; // Let's now call `update_state` to pass in this message in the `messages` key // This will get treated as any other update to the state @@ -170,7 +173,7 @@ Now, let's assume we actually meant to search for the weather in Sidi Frej (anot // That reducer function will use the ID of the message to update it // It's important that it has the right ID! Otherwise it would get appended // as a new message - await client.threads.updateState(thread['thread_id'], {values:{"messages": lastMessage}}); + await client.threads.updateState(thread["thread_id"], { values: { messages: lastMessage } }); ``` === "CURL" @@ -220,6 +223,7 @@ Now we can resume our graph run but with the updated state: streamMode: "updates", } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); diff --git a/docs/docs/cloud/how-tos/human_in_the_loop_review_tool_calls.md b/docs/docs/cloud/how-tos/human_in_the_loop_review_tool_calls.md index e9a698181..69f247807 100644 --- a/docs/docs/cloud/how-tos/human_in_the_loop_review_tool_calls.md +++ b/docs/docs/cloud/how-tos/human_in_the_loop_review_tool_calls.md @@ -29,6 +29,7 @@ First, we need to setup our client so that we can communicate with our hosted gr ```python from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -39,10 +40,19 @@ First, we need to setup our client so that we can communicate with our hosted gr import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" const assistantId = "agent"; const thread = await client.threads.create(); ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' + ``` + ## Example with no review Let's look at an example when no review is required (because no tools are called) @@ -66,7 +76,7 @@ Let's look at an example when no review is required (because no tools are called === "Javascript" ```js - const input = {"messages": [{ "role": "human", "content": "hi!"}] } + const input = { "messages": [{ "role": "human", "content": "hi!" }] }; const streamResponse = client.runs.stream( thread["thread_id"], @@ -77,6 +87,7 @@ Let's look at an example when no review is required (because no tools are called interruptBefore: ["action"], } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -84,6 +95,42 @@ Let's look at an example when no review is required (because no tools are called } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"hi!\"}]}, + \"stream_mode\": [ + \"updates\" + ], + \"interrupt_before\": [\"action\"] + }" | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' + ``` + Output: {'messages': [{'content': 'hi!', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '39c51f14-2d5c-4690-883a-d940854b1845', 'example': False}]} @@ -108,6 +155,13 @@ If we check the state, we can see that it is finished console.log(state.next); ``` +=== "CURL" + + ```bash + curl --request GET \ + --url /threads//state | jq -c '.next' + ``` + Output: [] @@ -125,7 +179,6 @@ Let's now look at what it looks like to approve a tool call. Note that we don't thread["thread_id"], "agent", input=input, - stream_mode="values", ): if chunk.data and chunk.event != "metadata": print(chunk.data) @@ -134,16 +187,16 @@ Let's now look at what it looks like to approve a tool call. Note that we don't === "Javascript" ```js - const input = {"messages": [{"role": "user", "content": "what's the weather in sf?"}]} + const input = { "messages": [{ "role": "user", "content": "what's the weather in sf?" }] }; const streamResponse = client.runs.stream( thread["thread_id"], assistantId, { input: input, - streamMode: "values", } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -151,6 +204,38 @@ Let's now look at what it looks like to approve a tool call. Note that we don't } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in sf?\"}]} + }" | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' + ``` + Output: {'messages': [{'content': "what's the weather in sf?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '54e19d6e-89fa-44fb-b92c-12e7dd4ddf08', 'example': False}]} @@ -175,6 +260,13 @@ If we now check, we can see that it is waiting on human review: console.log(state.next); ``` +=== "CURL" + + ```bash + curl --request GET \ + --url /threads//state | jq -c '.next' + ``` + Output: ['human_review_node'] @@ -201,10 +293,11 @@ To approve the tool call, we can just continue the thread with no edits. To do t thread["thread_id"], assistantId, { - input: undefined, + input: null, streamMode: "values", } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -212,6 +305,37 @@ To approve the tool call, we can just continue the thread with no edits. To do t } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\" + }" | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' + ``` + Output: {'messages': [{'content': "what's the weather in sf?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '54e19d6e-89fa-44fb-b92c-12e7dd4ddf08', 'example': False}, {'content': [{'text': "Certainly! I can help you check the weather in San Francisco. To get this information, I'll use the weather search function. Let me do that for you right away.", 'type': 'text', 'index': 0}, {'id': 'toolu_015yrR3GMDXe6X8m2p9CsEDN', 'input': {}, 'name': 'weather_search', 'type': 'tool_use', 'index': 1, 'partial_json': '{"city": "San Francisco"}'}], 'additional_kwargs': {}, 'response_metadata': {'stop_reason': 'tool_use', 'stop_sequence': None}, 'type': 'ai', 'name': None, 'id': 'run-45a6b6c3-ac69-42a4-8957-d982203d6392', 'example': False, 'tool_calls': [{'name': 'weather_search', 'args': {'city': 'San Francisco'}, 'id': 'toolu_015yrR3GMDXe6X8m2p9CsEDN', 'type': 'tool_call'}], 'invalid_tool_calls': [], 'usage_metadata': {'input_tokens': 360, 'output_tokens': 90, 'total_tokens': 450}}, {'content': 'Sunny!', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'weather_search', 'id': '826cd0f2-9cc6-46f0-b7df-daa6a05d13d2', 'tool_call_id': 'toolu_015yrR3GMDXe6X8m2p9CsEDN', 'artifact': None, 'status': 'success'}]} @@ -239,7 +363,7 @@ Let's now say we want to edit the tool call. E.g. change some of the parameters === "Javascript" ```js - const input = {"messages": [{"role": "user", "content": "what's the weather in sf?"}]} + const input = { "messages": [{ "role": "user", "content": "what's the weather in sf?" }] }; const streamResponse = client.runs.stream( thread["thread_id"], @@ -249,6 +373,7 @@ Let's now say we want to edit the tool call. E.g. change some of the parameters streamMode: "values", } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -256,6 +381,38 @@ Let's now say we want to edit the tool call. E.g. change some of the parameters } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in sf?\"}]} + }" | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' + ``` + Output: {'messages': [{'content': "what's the weather in sf?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'cec11391-84da-464b-bd2a-bd4f0d93b9ee', 'example': False}]} @@ -310,7 +467,6 @@ To do this, we first need to update the state. We can do this by passing a messa thread["thread_id"], "agent", input=None, - stream_mode="values", ): if chunk.data and chunk.event != "metadata": print(chunk.data) @@ -332,43 +488,93 @@ To do this, we first need to update the state. We can do this by passing a messa // Construct a replacement tool call const newMessage = { - role: "assistant", - content: currentContent, - tool_calls: [ - { - id: toolCallId, - name: "weather_search", - args: { city: "San Francisco, USA" } - } - ], - // Ensure the ID is the same as the message you're replacing - id: currentId + role: "assistant", + content: currentContent, + tool_calls: [ + { + id: toolCallId, + name: "weather_search", + args: { city: "San Francisco, USA" } + } + ], + // Ensure the ID is the same as the message you're replacing + id: currentId }; await client.threads.updateState( - thread.thread_id, // Thread ID - { + thread.thread_id, // Thread ID + { values: { "messages": [newMessage] }, // Updated message asNode: "human_review_node" - } // Acting as human_review_node + } // Acting as human_review_node ); console.log("\nResuming Execution"); // Continue executing from here const streamResponseResumed = client.runs.stream( - thread["thread_id"], - assistantId, - { - input: undefined, - streamMode: "values", - interruptBefore: ["action"], - } + thread["thread_id"], + assistantId, + { + input: null, + } ); + for await (const chunk of streamResponseResumed) { - if (chunk.data && chunk.event !== "metadata") { + if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); + } } + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//state \ + --header 'Content-Type: application/json' \ + --data "{ + \"values\": { \"messages\": [$(curl --request GET \ + --url /threads//state | + jq -c '{ + role: "assistant", + content: .values.messages[-1].content, + tool_calls: [ + { + id: .values.messages[-1].tool_calls[0].id, + name: "weather_search", + args: { city: "San Francisco, USA" } + } + ], + id: .values.messages[-1].id + }') + ]}, + \"as_node\": \"human_review_node\" + }" && echo "Resuming Execution" && curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": "agent" + }' | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' ``` Output: @@ -404,7 +610,6 @@ For this example we will just add a single tool call representing the feedback. thread["thread_id"], "agent", input=input, - stream_mode="values", ): if chunk.data and chunk.event != "metadata": print(chunk.data) @@ -413,16 +618,16 @@ For this example we will just add a single tool call representing the feedback. === "Javascript" ```js - const input = {"messages": [{"role": "user", "content": "what's the weather in sf?"}]} + const input = { "messages": [{ "role": "user", "content": "what's the weather in sf?" }] }; const streamResponse = client.runs.stream( thread["thread_id"], assistantId, { input: input, - streamMode: "values", } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -430,6 +635,38 @@ For this example we will just add a single tool call representing the feedback. } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in sf?\"}]} + }" | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' + ``` + Output: {'messages': [{'content': "what's the weather in sf?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c80f13d0-674d-4233-b6a0-3940509d3cf3', 'example': False}]} @@ -493,38 +730,85 @@ To do this, we first need to update the state. We can do this by passing a messa // Construct a replacement tool call const newMessage = { - role: "tool", - content: "User requested changes: pass in the country as well", - name: "weather_search", - tool_call_id: toolCallId, + role: "tool", + content: "User requested changes: pass in the country as well", + name: "weather_search", + tool_call_id: toolCallId, }; await client.threads.updateState( - thread.thread_id, // Thread ID - { + thread.thread_id, // Thread ID + { values: { "messages": [newMessage] }, // Updated message asNode: "human_review_node" - } // Acting as human_review_node + } // Acting as human_review_node ); console.log("\nResuming Execution"); // Continue executing from here const streamResponseEdited = client.runs.stream( - thread["thread_id"], - assistantId, - { - input: undefined, + thread["thread_id"], + assistantId, + { + input: null, streamMode: "values", interruptBefore: ["action"], - } + } ); + for await (const chunk of streamResponseEdited) { - if (chunk.data && chunk.event !== "metadata") { + if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); - } + } } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//state \ + --header 'Content-Type: application/json' \ + --data "{ + \"values\": { \"messages\": [$(curl --request GET \ + --url /threads//state | + jq -c '{ + role: "tool", + content: "User requested changes: pass in the country as well", + name: "get_weather", + tool_call_id: .values.messages[-1].id.tool_calls[0].id + }') + ]}, + \"as_node\": \"human_review_node\" + }" && echo "Resuming Execution" && curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": "agent" + }' | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' + ``` + + Output: Current State: @@ -545,7 +829,6 @@ We can see that we now get to another breakpoint - because it went back to the m thread["thread_id"], "agent", input=None, - stream_mode="values", ): if chunk.data and chunk.event != "metadata": print(chunk.data) @@ -558,10 +841,10 @@ We can see that we now get to another breakpoint - because it went back to the m thread["thread_id"], assistantId, { - input: undefined, - streamMode: "values", + input: null, } ); + for await (const chunk of streamResponseResumed) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -569,6 +852,37 @@ We can see that we now get to another breakpoint - because it went back to the m } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\" + }" | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + sub(/^event: /, "", $0) + event_type = $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "" && event_type != "metadata") { + print data_content "\n" + } + } + ' + ``` + Output: {'messages': [{'content': "what's the weather in sf?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '3b2bbc38-d11b-49eb-80c0-c24a40dab5a8', 'example': False}, {'content': [{'text': 'To get the weather information for San Francisco, I can use the weather_search function. Let me do that for you.', 'type': 'text', 'index': 0}, {'id': 'toolu_01NNw18j57GEGPZvsa9f1wvX', 'input': {}, 'name': 'weather_search', 'type': 'tool_use', 'index': 1, 'partial_json': '{"city": "San Francisco"}'}], 'additional_kwargs': {}, 'response_metadata': {'stop_reason': 'tool_use', 'stop_sequence': None}, 'type': 'ai', 'name': None, 'id': 'run-c5a50900-abf5-4885-9cdb-da2bf0d892ac', 'example': False, 'tool_calls': [{'name': 'weather_search', 'args': {'city': 'San Francisco'}, 'id': 'toolu_01NNw18j57GEGPZvsa9f1wvX', 'type': 'tool_call'}], 'invalid_tool_calls': [], 'usage_metadata': {'input_tokens': 360, 'output_tokens': 80, 'total_tokens': 440}}, {'content': 'User requested changes: pass in the country as well', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'weather_search', 'id': '787288be-213c-4fd3-8503-4a009bdb1b00', 'tool_call_id': 'toolu_01NNw18j57GEGPZvsa9f1wvX', 'artifact': None, 'status': 'success'}, {'content': [{'text': '\n\nI apologize for the oversight. It seems the function requires additional information. Let me try again with a more specific request.', 'type': 'text', 'index': 0}, {'id': 'toolu_01YAbLBoKozJyRQnB8LUMpXC', 'input': {}, 'name': 'weather_search', 'type': 'tool_use', 'index': 1, 'partial_json': '{"city": "San Francisco, USA"}'}], 'additional_kwargs': {}, 'response_metadata': {'stop_reason': 'tool_use', 'stop_sequence': None}, 'type': 'ai', 'name': None, 'id': 'run-5c355a56-cfe3-4046-b49f-f5b09fc397ef', 'example': False, 'tool_calls': [{'name': 'weather_search', 'args': {'city': 'San Francisco, USA'}, 'id': 'toolu_01YAbLBoKozJyRQnB8LUMpXC', 'type': 'tool_call'}], 'invalid_tool_calls': [], 'usage_metadata': {'input_tokens': 461, 'output_tokens': 83, 'total_tokens': 544}}, {'content': 'Sunny!', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'weather_search', 'id': '3b857482-bca2-4a73-a9ab-1f35a3e43e5f', 'tool_call_id': 'toolu_01YAbLBoKozJyRQnB8LUMpXC', 'artifact': None, 'status': 'success'}]} diff --git a/docs/docs/cloud/how-tos/human_in_the_loop_time_travel.md b/docs/docs/cloud/how-tos/human_in_the_loop_time_travel.md index 046bb95a8..69b418784 100644 --- a/docs/docs/cloud/how-tos/human_in_the_loop_time_travel.md +++ b/docs/docs/cloud/how-tos/human_in_the_loop_time_travel.md @@ -15,6 +15,7 @@ First, we need to setup our client so that we can communicate with our hosted gr ```python from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -25,7 +26,8 @@ First, we need to setup our client so that we can communicate with our hosted gr import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); - const assistantId = agent; + // Using the graph deployed with the name "agent" + const assistantId = "agent"; const thread = await client.threads.create(); ``` @@ -34,8 +36,7 @@ First, we need to setup our client so that we can communicate with our hosted gr ```bash curl --request POST \ --url /threads \ - --header 'Content-Type: application/json' \ - --data {} + --header 'Content-Type: application/json' ``` ## Replay a state @@ -51,7 +52,7 @@ Before replaying a state - we need to create states to replay from! In order to async for chunk in client.runs.stream( thread["thread_id"], - assistant_id, # graph_id + assistant_id, input=input, stream_mode="updates", ): @@ -308,7 +309,7 @@ Now we can rerun our graph with this new config, starting from the `new_state`, ```python async for chunk in client.runs.stream( thread["thread_id"], - assistant["assistant_id"], # graph_id + assistant_id, input=None, stream_mode="updates", checkpoint_id=config['checkpoint_id'] @@ -322,7 +323,7 @@ Now we can rerun our graph with this new config, starting from the `new_state`, ```js const streamResponse = client.runs.stream( thread["thread_id"], - assistant["assistant_id"], + assistantId, { input: null, streamMode: "updates", diff --git a/docs/docs/cloud/how-tos/human_in_the_loop_user_input.md b/docs/docs/cloud/how-tos/human_in_the_loop_user_input.md index 9b9d1392e..435b49158 100644 --- a/docs/docs/cloud/how-tos/human_in_the_loop_user_input.md +++ b/docs/docs/cloud/how-tos/human_in_the_loop_user_input.md @@ -25,6 +25,7 @@ First, we need to setup our client so that we can communicate with our hosted gr ```python from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -35,6 +36,7 @@ First, we need to setup our client so that we can communicate with our hosted gr import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" const assistantId = "agent"; const thread = await client.threads.create(); ``` @@ -56,7 +58,14 @@ Now, let's invoke our graph by interrupting before `ask_human` node: === "Python" ```python - input = { 'messages':[{ "role":"user", "content":"Use the search tool to ask the user where they are, then look up the weather there" }] } + input = { + "messages": [ + { + "role": "human", + "content": "Use the search tool to ask the user where they are, then look up the weather there", + } + ] + } async for chunk in client.runs.stream( thread["thread_id"], @@ -71,7 +80,14 @@ Now, let's invoke our graph by interrupting before `ask_human` node: === "Javascript" ```js - const input = { "messages":[{ "role":"human", "content": "Use the search tool to ask the user where they are, then look up the weather there"}] } + const input = { + messages: [ + { + role: "human", + content: "Use the search tool to ask the user where they are, then look up the weather there" + } + ] + }; const streamResponse = client.runs.stream( thread["thread_id"], @@ -79,9 +95,10 @@ Now, let's invoke our graph by interrupting before `ask_human` node: { input: input, streamMode: "updates", - interruptBefore: ["ask_human"], + interruptBefore: ["ask_human"] } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); @@ -152,13 +169,23 @@ Because we are treating this as a tool call, we will need to update the state as === "Javascript" ```js - const state = await client.threads.getState(thread['thread_id']); - const toolCallId = state['values']['messages'][-1]['tool_calls'][0]['id']; + const state = await client.threads.getState(thread["thread_id"]); + const toolCallId = state.values.messages[state.values.messages.length - 1].tool_calls[0].id; - # We now create the tool call with the id and the response we want - const toolMessage = [{"tool_call_id": toolCallId, "type": "tool", "content": "san francisco"}]; + // We now create the tool call with the id and the response we want + const toolMessage = [ + { + tool_call_id: toolCallId, + type: "tool", + content: "san francisco" + } + ]; - await client.threads.updateState(thread['thread_id'], {values: {"messages": toolMessage}, asNode:"ask_human"}) + await client.threads.updateState( + thread["thread_id"], + { values: { messages: toolMessage } }, + { asNode: "ask_human" } + ); ``` === "CURL" @@ -212,9 +239,10 @@ We can now tell the agent to continue. We can just pass in None as the input to assistantId, { input: null, - streamMode: "updates", + streamMode: "updates" } ); + for await (const chunk of streamResponse) { if (chunk.data && chunk.event !== "metadata") { console.log(chunk.data); diff --git a/docs/docs/cloud/how-tos/index.md b/docs/docs/cloud/how-tos/index.md index 90b13c35e..25954dd3b 100644 --- a/docs/docs/cloud/how-tos/index.md +++ b/docs/docs/cloud/how-tos/index.md @@ -62,17 +62,17 @@ LangGraph Studio is a built-in UI for visualizing, testing, and debugging your a LangGraph Cloud supports multiple types of runs besides streaming runs. -- [How to run an agent in the background](cloud_examples/background_run.ipynb) -- [How to run multiple agents in the same thread](cloud_examples/same-thread.ipynb) -- [How to create cron jobs](cloud_examples/cron_jobs.ipynb) -- [How to create stateless runs](cloud_examples/stateless_runs.ipynb) +- [How to run an agent in the background](./background_run.md) +- [How to run multiple agents in the same thread](./same-thread.md) +- [How to create cron jobs](./cron_jobs.md) +- [How to create stateless runs](./stateless_runs.md) ## Other Other guides that may prove helpful! -- [How to configure agents](cloud_examples/configuration_cloud.ipynb) +- [How to configure agents](./configuration_cloud.md) - [How to convert LangGraph calls to LangGraph cloud calls](cloud_examples/langgraph_to_langgraph_cloud.ipynb) -- [How to integrate webhooks](cloud_examples/webhooks.ipynb) +- [How to integrate webhooks](./webhooks.md) - [How to copy threads](./copy_threads.md) - [How to check status of your threads](./check_thread_status.md) diff --git a/docs/docs/cloud/how-tos/interrupt_concurrent.md b/docs/docs/cloud/how-tos/interrupt_concurrent.md index b09f908ef..5ac9934b5 100644 --- a/docs/docs/cloud/how-tos/interrupt_concurrent.md +++ b/docs/docs/cloud/how-tos/interrupt_concurrent.md @@ -4,20 +4,44 @@ This guide assumes knowledge of what double-texting is, which you can learn abou The guide covers the `interrupt` option for double texting, which interrupts the prior run of the graph and starts a new one with the double-text. This option does not delete the first run, but rather keeps it in the database but sets its status to `interrupted`. Below is a quick example of using the `interrupt` option. -First, we will define a quick helper function for printing out JS model outputs (you can skip this if using Python): +First, we will define a quick helper function for printing out JS and CURL model outputs (you can skip this if using Python): -```js -function prettyPrint(m) { - const padded = " " + m['type'] + " "; - const sepLen = Math.floor((80 - padded.length) / 2); - const sep = "=".repeat(sepLen); - const secondSep = sep + (padded.length % 2 ? "=" : ""); - - console.log(`${sep}${padded}${secondSep}`); - console.log("\n\n"); - console.log(m.content); -} -``` +=== "Javascript" + + ```js + function prettyPrint(m) { + const padded = " " + m['type'] + " "; + const sepLen = Math.floor((80 - padded.length) / 2); + const sep = "=".repeat(sepLen); + const secondSep = sep + (padded.length % 2 ? "=" : ""); + + console.log(`${sep}${padded}${secondSep}`); + console.log("\n\n"); + console.log(m.content); + } + ``` + +=== "CURL" + + ```bash + # PLACE THIS IN A FILE CALLED pretty_print.sh + pretty_print() { + local type="$1" + local content="$2" + local padded=" $type " + local total_width=80 + local sep_len=$(( (total_width - ${#padded}) / 2 )) + local sep=$(printf '=%.0s' $(eval "echo {1.."${sep_len}"}")) + local second_sep=$sep + if (( (total_width - ${#padded}) % 2 )); then + second_sep="${second_sep}=" + fi + + echo "${sep}${padded}${second_sep}" + echo + echo "$content" + } + ``` Now, let's import our required packages and instantiate our client, assistant, and thread. @@ -30,6 +54,7 @@ Now, let's import our required packages and instantiate our client, assistant, a from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -40,11 +65,20 @@ Now, let's import our required packages and instantiate our client, assistant, a import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" const assistantId = "agent"; const thread = await client.threads.create(); ``` -Now we can start our two runs and join the second one until it has completed: +=== "CURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' + ``` + +Now we can start our two runs and join the second on euntil it has completed: === "Python" @@ -90,6 +124,26 @@ Now we can start our two runs and join the second one until it has completed: await client.runs.join(thread["thread_id"], run["run_id"]); ``` +=== "CURL" + + ```bash + curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in sf?\"}]}, + }" && sleep 2 && curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in nyc?\"}]}, + \"multitask_strategy\": \"interrupt\" + }" && curl --request GET \ + --url /threads//runs//join + ``` + We can see that the thread has partial data from the first run + data from the second run @@ -112,12 +166,24 @@ We can see that the thread has partial data from the first run + data from the s } ``` +=== "CURL" + + ```bash + source pretty_print.sh && curl --request GET \ + --url /threads//state | \ + jq -c '.values.messages[]' | while read -r element; do + type=$(echo "$element" | jq -r '.type') + content=$(echo "$element" | jq -r '.content | if type == "array" then tostring else . end') + pretty_print "$type" "$content" + done + ``` + Output: - ================================ Human Message ================================= + ================================ Human Message ================================= what's the weather in sf? - ================================== Ai Message ================================== + ================================== Ai Message ================================== [{'id': 'toolu_01MjNtVJwEcpujRGrf3x6Pih', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] Tool Calls: @@ -125,14 +191,14 @@ Output: Call ID: toolu_01MjNtVJwEcpujRGrf3x6Pih Args: query: weather in san francisco - ================================= Tool Message ================================= + ================================= Tool Message ================================= Name: tavily_search_results_json [{"url": "https://www.wunderground.com/hourly/us/ca/san-francisco/KCASANFR2002/date/2024-6-18", "content": "High 64F. Winds W at 10 to 20 mph. A few clouds from time to time. Low 49F. Winds W at 10 to 20 mph. Temp. San Francisco Weather Forecasts. Weather Underground provides local & long-range weather ..."}] - ================================ Human Message ================================= + ================================ Human Message ================================= what's the weather in nyc? - ================================== Ai Message ================================== + ================================== Ai Message ================================== [{'id': 'toolu_01KtE1m1ifPLQAx4fQLyZL9Q', 'input': {'query': 'weather in new york city'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] Tool Calls: @@ -140,11 +206,11 @@ Output: Call ID: toolu_01KtE1m1ifPLQAx4fQLyZL9Q Args: query: weather in new york city - ================================= Tool Message ================================= + ================================= Tool Message ================================= Name: tavily_search_results_json [{"url": "https://www.accuweather.com/en/us/new-york/10021/june-weather/349727", "content": "Get the monthly weather forecast for New York, NY, including daily high/low, historical averages, to help you plan ahead."}] - ================================== Ai Message ================================== + ================================== Ai Message ================================== The search results provide weather forecasts and information for New York City. Based on the top result from AccuWeather, here are some key details about the weather in NYC: diff --git a/docs/docs/cloud/how-tos/reject_concurrent.md b/docs/docs/cloud/how-tos/reject_concurrent.md index 22d0ae30c..d94bb27a6 100644 --- a/docs/docs/cloud/how-tos/reject_concurrent.md +++ b/docs/docs/cloud/how-tos/reject_concurrent.md @@ -4,20 +4,44 @@ This guide assumes knowledge of what double-texting is, which you can learn abou The guide covers the `reject` option for double texting, which rejects the new run of the graph by throwing an error and continues with the original run until completion. Below is a quick example of using the `reject` option. -First, we will define a quick helper function for printing out JS model outputs (you can skip this if using Python): +First, we will define a quick helper function for printing out JS and CURL model outputs (you can skip this if using Python): -```js -function prettyPrint(m) { - const padded = " " + m['type'] + " "; - const sepLen = Math.floor((80 - padded.length) / 2); - const sep = "=".repeat(sepLen); - const secondSep = sep + (padded.length % 2 ? "=" : ""); - - console.log(`${sep}${padded}${secondSep}`); - console.log("\n\n"); - console.log(m.content); -} -``` +=== "Javascript" + + ```js + function prettyPrint(m) { + const padded = " " + m['type'] + " "; + const sepLen = Math.floor((80 - padded.length) / 2); + const sep = "=".repeat(sepLen); + const secondSep = sep + (padded.length % 2 ? "=" : ""); + + console.log(`${sep}${padded}${secondSep}`); + console.log("\n\n"); + console.log(m.content); + } + ``` + +=== "CURL" + + ```bash + # PLACE THIS IN A FILE CALLED pretty_print.sh + pretty_print() { + local type="$1" + local content="$2" + local padded=" $type " + local total_width=80 + local sep_len=$(( (total_width - ${#padded}) / 2 )) + local sep=$(printf '=%.0s' $(eval "echo {1.."${sep_len}"}")) + local second_sep=$sep + if (( (total_width - ${#padded}) % 2 )); then + second_sep="${second_sep}=" + fi + + echo "${sep}${padded}${second_sep}" + echo + echo "$content" + } + ``` Now, let's import our required packages and instantiate our client, assistant, and thread. @@ -29,6 +53,7 @@ Now, let's import our required packages and instantiate our client, assistant, a from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -39,10 +64,19 @@ Now, let's import our required packages and instantiate our client, assistant, a import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" const assistantId = "agent"; const thread = await client.threads.create(); ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' + ``` + Now we can run a thread and try to run a second one with the "reject" option, which should fail since we have already started a run: @@ -90,6 +124,27 @@ Now we can run a thread and try to run a second one with the "reject" option, wh } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in sf?\"}]}, + }" && curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in nyc?\"}]}, + \"multitask_strategy\": \"reject\" + }" || { echo "Failed to start concurrent run"; echo "Error: $?" >&2; } + ``` + +Output: + Failed to start concurrent run Client error '409 Conflict' for url 'http://localhost:8123/threads/f9e7088b-8028-4e5c-88d2-9cc9a2870e50/runs' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 @@ -120,12 +175,25 @@ We can verify that the original thread finished executing: } ``` +=== "CURL" + + ```bash + source pretty_print.sh && curl --request GET \ + --url /threads//runs//join && \ + curl --request GET --url /threads//state | \ + jq -c '.values.messages[]' | while read -r element; do + type=$(echo "$element" | jq -r '.type') + content=$(echo "$element" | jq -r '.content | if type == "array" then tostring else . end') + pretty_print "$type" "$content" + done + ``` + Output: - ================================ Human Message ================================= + ================================ Human Message ================================= what's the weather in sf? - ================================== Ai Message ================================== + ================================== Ai Message ================================== [{'id': 'toolu_01CyewEifV2Kmi7EFKHbMDr1', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] Tool Calls: @@ -133,11 +201,11 @@ Output: Call ID: toolu_01CyewEifV2Kmi7EFKHbMDr1 Args: query: weather in san francisco - ================================= Tool Message ================================= + ================================= Tool Message ================================= Name: tavily_search_results_json [{"url": "https://www.accuweather.com/en/us/san-francisco/94103/june-weather/347629", "content": "Get the monthly weather forecast for San Francisco, CA, including daily high/low, historical averages, to help you plan ahead."}] - ================================== Ai Message ================================== + ================================== Ai Message ================================== According to the search results from Tavily, the current weather in San Francisco is: diff --git a/docs/docs/cloud/how-tos/rollback_concurrent.md b/docs/docs/cloud/how-tos/rollback_concurrent.md index 6fa34eb95..cabc584c0 100644 --- a/docs/docs/cloud/how-tos/rollback_concurrent.md +++ b/docs/docs/cloud/how-tos/rollback_concurrent.md @@ -4,20 +4,44 @@ This guide assumes knowledge of what double-texting is, which you can learn abou The guide covers the `rollback` option for double texting, which interrupts the prior run of the graph and starts a new one with the double-text. This option is very similar to the `interrupt` option, but in this case the first run is completely deleted from the database and cannot be restarted. Below is a quick example of using the `rollback` option. -First, we will define a quick helper function for printing out JS model outputs (you can skip this if using Python): +First, we will define a quick helper function for printing out JS and CURL model outputs (you can skip this if using Python): -```js -function prettyPrint(m) { - const padded = " " + m['type'] + " "; - const sepLen = Math.floor((80 - padded.length) / 2); - const sep = "=".repeat(sepLen); - const secondSep = sep + (padded.length % 2 ? "=" : ""); - - console.log(`${sep}${padded}${secondSep}`); - console.log("\n\n"); - console.log(m.content); -} -``` +=== "Javascript" + + ```js + function prettyPrint(m) { + const padded = " " + m['type'] + " "; + const sepLen = Math.floor((80 - padded.length) / 2); + const sep = "=".repeat(sepLen); + const secondSep = sep + (padded.length % 2 ? "=" : ""); + + console.log(`${sep}${padded}${secondSep}`); + console.log("\n\n"); + console.log(m.content); + } + ``` + +=== "CURL" + + ```bash + # PLACE THIS IN A FILE CALLED pretty_print.sh + pretty_print() { + local type="$1" + local content="$2" + local padded=" $type " + local total_width=80 + local sep_len=$(( (total_width - ${#padded}) / 2 )) + local sep=$(printf '=%.0s' $(eval "echo {1.."${sep_len}"}")) + local second_sep=$sep + if (( (total_width - ${#padded}) % 2 )); then + second_sep="${second_sep}=" + fi + + echo "${sep}${padded}${second_sep}" + echo + echo "$content" + } + ``` Now, let's import our required packages and instantiate our client, assistant, and thread. @@ -31,6 +55,7 @@ Now, let's import our required packages and instantiate our client, assistant, a from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" assistant_id = "agent" thread = await client.threads.create() ``` @@ -41,10 +66,19 @@ Now, let's import our required packages and instantiate our client, assistant, a import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" const assistantId = "agent"; const thread = await client.threads.create(); ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' + ``` + Now let's run a thread with the multitask parameter set to "rollback": === "Python" @@ -91,6 +125,26 @@ Now let's run a thread with the multitask parameter set to "rollback": await client.runs.join(thread["thread_id"], run["run_id"]); ``` +=== "CURL" + + ```bash + curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in sf?\"}]}, + }" && sleep 2 && curl --request POST \ + --url >/threads//runs \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what\'s the weather in nyc?\"}]}, + \"multitask_strategy\": \"rollback\" + }" && curl --request GET \ + --url /threads//runs//join + ``` + We can see that the thread has data only from the second run === "Python" @@ -112,12 +166,24 @@ We can see that the thread has data only from the second run } ``` +=== "CURL" + + ```bash + source pretty_print.sh && curl --request GET \ + --url /threads//state | \ + jq -c '.values.messages[]' | while read -r element; do + type=$(echo "$element" | jq -r '.type') + content=$(echo "$element" | jq -r '.content | if type == "array" then tostring else . end') + pretty_print "$type" "$content" + done + ``` + Output: - ================================ Human Message ================================= + ================================ Human Message ================================= what's the weather in nyc? - ================================== Ai Message ================================== + ================================== Ai Message ================================== [{'id': 'toolu_01JzPqefao1gxwajHQ3Yh3JD', 'input': {'query': 'weather in nyc'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] Tool Calls: @@ -125,11 +191,11 @@ Output: Call ID: toolu_01JzPqefao1gxwajHQ3Yh3JD Args: query: weather in nyc - ================================= Tool Message ================================= + ================================= Tool Message ================================= Name: tavily_search_results_json [{"url": "https://www.weatherapi.com/", "content": "{'location': {'name': 'New York', 'region': 'New York', 'country': 'United States of America', 'lat': 40.71, 'lon': -74.01, 'tz_id': 'America/New_York', 'localtime_epoch': 1718734479, 'localtime': '2024-06-18 14:14'}, 'current': {'last_updated_epoch': 1718733600, 'last_updated': '2024-06-18 14:00', 'temp_c': 29.4, 'temp_f': 84.9, 'is_day': 1, 'condition': {'text': 'Sunny', 'icon': '//cdn.weatherapi.com/weather/64x64/day/113.png', 'code': 1000}, 'wind_mph': 2.2, 'wind_kph': 3.6, 'wind_degree': 158, 'wind_dir': 'SSE', 'pressure_mb': 1025.0, 'pressure_in': 30.26, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 63, 'cloud': 0, 'feelslike_c': 31.3, 'feelslike_f': 88.3, 'windchill_c': 28.3, 'windchill_f': 82.9, 'heatindex_c': 29.6, 'heatindex_f': 85.3, 'dewpoint_c': 18.4, 'dewpoint_f': 65.2, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 7.0, 'gust_mph': 16.5, 'gust_kph': 26.5}}"}] - ================================== Ai Message ================================== + ================================== Ai Message ================================== The weather API results show that the current weather in New York City is sunny with a temperature of around 85°F (29°C). The wind is light at around 2-3 mph from the south-southeast. Overall it looks like a nice sunny summer day in NYC. diff --git a/docs/docs/cloud/how-tos/same-thread.md b/docs/docs/cloud/how-tos/same-thread.md new file mode 100644 index 000000000..f48e72b6f --- /dev/null +++ b/docs/docs/cloud/how-tos/same-thread.md @@ -0,0 +1,310 @@ +# How to run multiple agents on the same thread + +In LangGraph Cloud, a thread is not explicitly associated with a particular agent. +This means that you can run multiple agents on the same thread, which allows a different agent to continue from an initial agent's progress. + +In this example, we will create two agents and then call them both on the same thread. +You'll see that the second agent will respond using information from the [checkpoint](https://langchain-ai.github.io/langgraph/concepts/low_level/#checkpointer-state) generated in the thread by the first agent as context. + +=== "Python" + + ```python + from langgraph_sdk import get_client + + client = get_client(url=) + + openai_assistant = await client.assistants.create( + graph_id="agent", config={"configurable": {"model_name": "openai"}} + ) + + # There should always be a default assistant with no configuration + assistants = await client.assistants.search() + default_assistant = [a for a in assistants if not a["config"]][0] + ``` + +=== "Javascript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + + const client = new Client({ apiUrl: }); + + const openAIAssistant = await client.assistants.create( + { graphId: "agent", config: {"configurable": {"model_name": "openai"}}} + ); + + const assistants = await client.assistants.search(); + const defaultAssistant = assistants.find(a => !a.config); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /assistants \ + --header 'Content-Type: application/json' \ + --data '{ + "graph_id": "agent", + "config": { "configurable": { "model_name": "openai" } } + }' && \ + curl --request POST \ + --url /assistants/search \ + --header 'Content-Type: application/json' \ + --data '{ + "limit": 10, + "offset": 0 + }' | jq -c 'map(select(.config == null or .config == {})) | .[0]' + ``` + +We can see that these agents are different: + +=== "Python" + + ```python + print(openai_assistant) + ``` + +=== "Javascript" + + ```js + console.log(openAIAssistant); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /assistants/ + ``` + +Output: + + { + "assistant_id": "db87f39d-b2b1-4da8-ac65-cf81beb3c766", + "graph_id": "agent", + "created_at": "2024-08-30T21:18:51.850581+00:00", + "updated_at": "2024-08-30T21:18:51.850581+00:00", + "config": { + "configurable": { + "model_name": "openai" + } + }, + "metadata": {} + } + +=== "Python" + + ```python + print(default_assistant) + ``` + +=== "Javascript" + + ```js + console.log(defaultAssistant); + ``` + +=== "CURL" + + ```bash + curl --request GET \ + --url /assistants/ + ``` + +Output: + + { + "assistant_id": "fe096781-5601-53d2-b2f6-0d3403f7e9ca", + "graph_id": "agent", + "created_at": "2024-08-08T22:45:24.562906+00:00", + "updated_at": "2024-08-08T22:45:24.562906+00:00", + "config": {}, + "metadata": { + "created_by": "system" + } + } + +We can now run the OpenAI assistant on the thread first. + +=== "Python" + + ```python + thread = await client.threads.create() + input = {"messages": [{"role": "user", "content": "who made you?"}]} + async for event in client.runs.stream( + thread["thread_id"], + openai_assistant["assistant_id"], + input=input, + stream_mode="updates", + ): + print(f"Receiving event of type: {event.event}") + print(event.data) + print("\n\n") + ``` + +=== "Javascript" + + ```js + const thread = await client.threads.create(); + let input = {"messages": [{"role": "user", "content": "who made you?"}]} + + const streamResponse = client.runs.stream( + thread["thread_id"], + openAIAssistant["assistant_id"], + { + input, + streamMode: "updates" + } + ); + for await (const event of streamResponse) { + console.log(`Receiving event of type: ${event.event}`); + console.log(event.data); + console.log("\n\n"); + } + ``` + +=== "CURL" + + ```bash + thread_id=$(curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' | jq -r '.thread_id') && \ + curl --request POST \ + --url "/threads/${thread_id}/runs/stream" \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": , + "input": { + "messages": [ + { + "role": "human", + "content": "who made you?" + } + ] + }, + "stream_mode": [ + "updates" + ] + }' | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "") { + print data_content "\n" + } + sub(/^event: /, "Receiving event of type: ", $0) + printf "%s...\n", $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "") { + print data_content "\n\n" + } + } + ' + ``` + +Output: + + Receiving event of type: metadata + {'run_id': '1ef671c5-fb83-6e70-b698-44dba2d9213e'} + + + Receiving event of type: updates + {'agent': {'messages': [{'content': 'I was created by OpenAI, a research organization focused on developing and advancing artificial intelligence technology.', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_157b3831f5'}, 'type': 'ai', 'name': None, 'id': 'run-f5735b86-b80d-4c71-8dc3-4782b5a9c7c8', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}} + +Now, we can run it on the default assistant and see that this second assistant is aware of the initial question, and can answer the question, "and you?": + +=== "Python" + + ```python + input = {"messages": [{"role": "user", "content": "and you?"}]} + async for event in client.runs.stream( + thread["thread_id"], + default_assistant["assistant_id"], + input=input, + stream_mode="updates", + ): + print(f"Receiving event of type: {event.event}") + print(event.data) + print("\n\n") + ``` + +=== "Javascript" + + ```js + let input = {"messages": [{"role": "user", "content": "and you?"}]} + + const streamResponse = client.runs.stream( + thread["thread_id"], + defaultAssistant["assistant_id"], + { + input, + streamMode: "updates" + } + ); + for await (const event of streamResponse) { + console.log(`Receiving event of type: ${event.event}`); + console.log(event.data); + console.log("\n\n"); + } + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": , + "input": { + "messages": [ + { + "role": "human", + "content": "and you?" + } + ] + }, + "stream_mode": [ + "updates" + ] + }' | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "") { + print data_content "\n" + } + sub(/^event: /, "Receiving event of type: ", $0) + printf "%s...\n", $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "") { + print data_content "\n\n" + } + } + ' + ``` + +Output: + + Receiving event of type: metadata + {'run_id': '1ef6722d-80b3-6fbb-9324-253796b1cd13'} + + + Receiving event of type: updates + {'agent': {'messages': [{'content': [{'text': 'I am an artificial intelligence created by Anthropic, not by OpenAI. I should not have stated that OpenAI created me, as that is incorrect. Anthropic is the company that developed and trained me using advanced language models and AI technology. I will be more careful about providing accurate information regarding my origins in the future.', 'type': 'text', 'index': 0}], 'additional_kwargs': {}, 'response_metadata': {'stop_reason': 'end_turn', 'stop_sequence': None}, 'type': 'ai', 'name': None, 'id': 'run-ebaacf62-9dd9-4165-9535-db432e4793ec', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': {'input_tokens': 302, 'output_tokens': 72, 'total_tokens': 374}}]}} + + + diff --git a/docs/docs/cloud/how-tos/stateless_runs.md b/docs/docs/cloud/how-tos/stateless_runs.md new file mode 100644 index 000000000..e28363963 --- /dev/null +++ b/docs/docs/cloud/how-tos/stateless_runs.md @@ -0,0 +1,180 @@ +# Stateless Runs + +Most of the time, you provide a `thread_id` to your client when you run your graph in order to keep track of prior runs through the persistent state implemented in LangGraph Cloud. However, if you don't need to persist the runs you don't need to use the built in persistent state and can create stateless runs. + +## Setup + +First, let's setup our client: + +=== "Python" + + ```python + from langgraph_sdk import get_client + + client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" + # create thread + thread = await client.threads.create() + ``` + +=== "Javascript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + + const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantId = "agent"; + // create thread + const thread = await client.threads.create(); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /assistants/search \ + --header 'Content-Type: application/json' \ + --data '{ + "limit": 10, + "offset": 0 + }' | jq -c 'map(select(.config == null or .config == {})) | .[0].graph_id' && \ + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' + ``` + +## Stateless streaming + +We can stream the results of a stateless run in an almost identical fashion to how we stream from a run with the state attribute, but instead of passing a value to the `thread_id` parameter, we pass `None`: + +=== "Python" + + ```python + input = { + "messages": [ + {"role": "user", "content": "Hello! My name is Bagatur and I am 26 years old."} + ] + } + + async for chunk in client.runs.stream( + # Don't pass in a thread_id and the stream will be stateless + None, + assistant_id, + input=input, + stream_mode="updates", + ): + if chunk.data and "run_id" not in chunk.data: + print(chunk.data) + ``` + +=== "Javascript" + + ```js + let input = { + messages: [ + { role: "user", content: "Hello! My name is Bagatur and I am 26 years old." } + ] + }; + + const streamResponse = client.runs.stream( + // Don't pass in a thread_id and the stream will be stateless + null, + assistantId, + { + input, + streamMode: "updates" + } + ); + for await (const chunk of streamResponse) { + if (chunk.data && !("run_id" in chunk.data)) { + console.log(chunk.data); + } + } + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"Hello! My name is Bagatur and I am 26 years old.\"}]}, + \"stream_mode\": [ + \"updates\" + ] + }" | jq -c 'select(.data and (.data | has("run_id") | not)) | .data' + ``` + +Output: + + {'agent': {'messages': [{'content': "Hello Bagatur! It's nice to meet you. Thank you for introducing yourself and sharing your age. Is there anything specific you'd like to know or discuss? I'm here to help with any questions or topics you're interested in.", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-489ec573-1645-4ce2-a3b8-91b391d50a71', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}} + +## Waiting for stateless results + +In addition to streaming, you can also wait for a stateless result by using the `.wait` function like follows: + +=== "Python" + + ```python + stateless_run_result = await client.runs.wait( + None, + assistant_id, + input=input, + ) + print(stateless_run_result) + ``` + +=== "Javascript" + + ```js + let statelessRunResult = await client.runs.wait( + null, + assistantId, + { input: input } + ); + console.log(statelessRunResult); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /runs/runs/wait \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": , + }' + ``` + +Output: + + { + 'messages': [ + { + 'content': 'Hello! My name is Bagatur and I am 26 years old.', + 'additional_kwargs': {}, + 'response_metadata': {}, + 'type': 'human', + 'name': None, + 'id': '5e088543-62c2-43de-9d95-6086ad7f8b48', + 'example': False} + , + { + 'content': "Hello Bagatur! It's nice to meet you. Thank you for introducing yourself and sharing your age. Is there anything specific you'd like to know or discuss? I'm here to help with any questions or topics you'd like to explore.", + 'additional_kwargs': {}, + 'response_metadata': {}, + 'type': 'ai', + 'name': None, + 'id': 'run-d6361e8d-4d4c-45bd-ba47-39520257f773', + 'example': False, + 'tool_calls': [], + 'invalid_tool_calls': [], + 'usage_metadata': None + } + ] + } \ No newline at end of file diff --git a/docs/docs/cloud/how-tos/stream_debug.md b/docs/docs/cloud/how-tos/stream_debug.md index fe3245947..2dac3d7d7 100644 --- a/docs/docs/cloud/how-tos/stream_debug.md +++ b/docs/docs/cloud/how-tos/stream_debug.md @@ -14,6 +14,8 @@ First let's set up our client and thread: from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" # create thread thread = await client.threads.create() print(thread) @@ -25,18 +27,33 @@ First let's set up our client and thread: import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantID = "agent"; // create thread const thread = await client.threads.create(); - console.log(thread) + console.log(thread); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' ``` Output: - {'thread_id': 'd0cbe9ad-f11c-443a-9f6f-dca0ae5a0dd3', - 'created_at': '2024-06-21T22:10:27.696862+00:00', - 'updated_at': '2024-06-21T22:10:27.696862+00:00', - 'metadata': {}} + { + 'thread_id': 'd0cbe9ad-f11c-443a-9f6f-dca0ae5a0dd3', + 'created_at': '2024-06-21T22:10:27.696862+00:00', + 'updated_at': '2024-06-21T22:10:27.696862+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } @@ -56,7 +73,7 @@ Output: # stream debug async for chunk in client.runs.stream( thread_id=thread["thread_id"], - assistant_id="agent", + assistant_id=assistant_id, input=input, stream_mode="debug", ): @@ -70,30 +87,67 @@ Output: ```js // create input const input = { - "messages": [ - { - "role": "human", - "content": "What's the weather in SF?", - } - ] - } + messages: [ + { + role: "human", + content: "What's the weather in SF?", + } + ] + }; // stream debug const streamResponse = client.runs.stream( thread["thread_id"], - "agent", + assistantID, { input, streamMode: "debug" } ); + for await (const chunk of streamResponse) { - console.log(f"Receiving new event of type: {chunk.event}...") - console.log(chunk.data) - console.log("\n\n") + console.log(`Receiving new event of type: ${chunk.event}...`); + console.log(chunk.data); + console.log("\n\n"); } ``` +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"What's the weather in SF?\"}]}, + \"stream_mode\": [ + \"debug\" + ] + }" | \ + sed 's/\r$//' | \ + awk ' + /^event:/ { + if (data_content != "") { + print data_content "\n" + } + sub(/^event: /, "Receiving event of type: ", $0) + printf "%s...\n", $0 + data_content = "" + } + /^data:/ { + sub(/^data: /, "", $0) + data_content = $0 + } + END { + if (data_content != "") { + print data_content "\n" + } + } + ' + ``` + + Output: Receiving new event of type: metadata... diff --git a/docs/docs/cloud/how-tos/stream_events.md b/docs/docs/cloud/how-tos/stream_events.md index bbaaaf7be..fcac1dedc 100644 --- a/docs/docs/cloud/how-tos/stream_events.md +++ b/docs/docs/cloud/how-tos/stream_events.md @@ -8,6 +8,8 @@ This guide covers how to stream events from your graph (`stream_mode="events"`). from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" # create thread thread = await client.threads.create() print(thread) @@ -19,9 +21,11 @@ This guide covers how to stream events from your graph (`stream_mode="events"`). import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantID = "agent"; // create thread const thread = await client.threads.create(); - console.log(thread) + console.log(thread); ``` === "CURL" @@ -35,12 +39,15 @@ This guide covers how to stream events from your graph (`stream_mode="events"`). Output: - {'thread_id': '3f4c64e0-f792-4a5e-aa07-a4404e06e0bd', - 'created_at': '2024-06-24T22:16:29.301522+00:00', - 'updated_at': '2024-06-24T22:16:29.301522+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}} + { + 'thread_id': '3f4c64e0-f792-4a5e-aa07-a4404e06e0bd', + 'created_at': '2024-06-24T22:16:29.301522+00:00', + 'updated_at': '2024-06-24T22:16:29.301522+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } @@ -63,7 +70,7 @@ Streaming events produces responses containing an `event` key (in addition to ot # stream events async for chunk in client.runs.stream( thread_id=thread["thread_id"], - assistant_id="agent", + assistant_id=assistant_id, input=input, stream_mode="events", ): @@ -77,27 +84,27 @@ Streaming events produces responses containing an `event` key (in addition to ot ```js // create input const input = { - "messages": [ - { - "role": "human", - "content": "What's the weather in SF?", - } - ] + "messages": [ + { + "role": "human", + "content": "What's the weather in SF?", + } + ] } // stream events const streamResponse = client.runs.stream( thread["thread_id"], - "agent", + assistantID, { input, streamMode: "events" } ); for await (const chunk of streamResponse) { - console.log(f"Receiving new event of type: {chunk.event}...") - console.log(chunk.data) - console.log("\n\n") + console.log(`Receiving new event of type: ${chunk.event}...`); + console.log(chunk.data); + console.log("\n\n"); } ``` @@ -280,9 +287,6 @@ Output: Receiving new event of type: end... None - - - ## Token-by-Token Streaming @@ -297,7 +301,7 @@ Token-by-token streaming can be implemented with the `events` streaming mode. Th # stream token-by-token async for chunk in client.runs.stream( thread_id=thread["thread_id"], - assistant_id="agent", + assistant_id=assistant_id, input=input, stream_mode="events", ): @@ -318,7 +322,7 @@ Token-by-token streaming can be implemented with the `events` streaming mode. Th // stream events const streamResponse = client.runs.stream( thread["thread_id"], - "agent", + assistantID, { input, streamMode: "events" diff --git a/docs/docs/cloud/how-tos/stream_messages.md b/docs/docs/cloud/how-tos/stream_messages.md index c305a7d85..d52e69ebd 100644 --- a/docs/docs/cloud/how-tos/stream_messages.md +++ b/docs/docs/cloud/how-tos/stream_messages.md @@ -22,10 +22,10 @@ E.g., the state should look something like: import { Annotation, messagesStateReducer } from "@langchain/langgraph"; export const StateAnnotation = Annotation.Root({ - messages: Annotation({ + messages: Annotation({ reducer: messagesStateReducer, default: () => [], - }), + }), }); ``` @@ -46,6 +46,8 @@ First let's set up our client and thread: from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" # create thread thread = await client.threads.create() print(thread) @@ -57,9 +59,11 @@ First let's set up our client and thread: import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantID = "agent"; // create thread const thread = await client.threads.create(); - console.log(thread) + console.log(thread); ``` === "CURL" @@ -72,12 +76,15 @@ First let's set up our client and thread: Output: - {'thread_id': 'e1431c95-e241-4d1d-a252-27eceb1e5c86', - 'created_at': '2024-06-21T15:48:59.808924+00:00', - 'updated_at': '2024-06-21T15:48:59.808924+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}} + { + 'thread_id': 'e1431c95-e241-4d1d-a252-27eceb1e5c86', + 'created_at': '2024-06-21T15:48:59.808924+00:00', + 'updated_at': '2024-06-21T15:48:59.808924+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } Let's also define a helper function for better formatting of the tool calls in messages (for CURL we will define a helper script called `process_stream.sh`) @@ -182,7 +189,7 @@ Now we can stream by messages, which will return complete messages (at the end o async for event in client.runs.stream( thread["thread_id"], - assistant_id="agent", + assistant_id=assistant_id, input=input, config=config, stream_mode="messages", @@ -221,24 +228,25 @@ Now we can stream by messages, which will return complete messages (at the end o ```js const input = { - "messages": [ + messages: [ { - "role": "human", - "content": "What's the weather in sf", + role: "human", + content: "What's the weather in sf", } ] - } - const config = {"configurable": {"model_name": "openai"}} + }; + const config = { configurable: { model_name: "openai" } }; const streamResponse = client.runs.stream( thread["thread_id"], - "agent", + assistantID, { input, config, streamMode: "messages" } ); + for await (const event of streamResponse) { if (event.event === "metadata") { console.log(`Metadata: Run ID - ${event.data.run_id}`); diff --git a/docs/docs/cloud/how-tos/stream_multiple.md b/docs/docs/cloud/how-tos/stream_multiple.md index 2f03fb550..39c87aa7e 100644 --- a/docs/docs/cloud/how-tos/stream_multiple.md +++ b/docs/docs/cloud/how-tos/stream_multiple.md @@ -10,6 +10,8 @@ First let's set up our client and thread: from langgraph_sdk import get_client client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" # create thread thread = await client.threads.create() print(thread) @@ -21,9 +23,11 @@ First let's set up our client and thread: import { Client } from "@langchain/langgraph-sdk"; const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantID = "agent"; // create thread const thread = await client.threads.create(); - console.log(thread) + console.log(thread); ``` === "CURL" @@ -36,12 +40,15 @@ First let's set up our client and thread: Output: - {'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', - 'created_at': '2024-06-24T21:30:07.980789+00:00', - 'updated_at': '2024-06-24T21:30:07.980789+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}} + { + 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', + 'created_at': '2024-06-24T21:30:07.980789+00:00', + 'updated_at': '2024-06-24T21:30:07.980789+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } When configuring multiple streaming modes for a run, responses for each respective mode will be produced. In the following example, note that a `list` of modes (`messages`, `events`, `debug`) is passed to the `stream_mode` parameter and the response contains `events`, `debug`, `messages/complete`, `messages/metadata`, and `messages/partial` event types. @@ -61,7 +68,7 @@ When configuring multiple streaming modes for a run, responses for each respecti # stream events with multiple streaming modes async for chunk in client.runs.stream( thread_id=thread["thread_id"], - assistant_id="agent", + assistant_id=assistant_id, input=input, stream_mode=["messages", "events", "debug"], ): @@ -75,27 +82,27 @@ When configuring multiple streaming modes for a run, responses for each respecti ```js // create input const input = { - "messages": [ + messages: [ { - "role": "human", - "content": "What's the weather in SF?", + role: "human", + content: "What's the weather in SF?", } ] - } + }; // stream events with multiple streaming modes const streamResponse = client.runs.stream( thread["thread_id"], - "agent", + assistantID, { input, streamMode: ["messages", "events", "debug"] } ); for await (const chunk of streamResponse) { - console.log(f"Receiving new event of type: {chunk.event}...") - console.log(chunk.data) - console.log("\n\n") + console.log(`Receiving new event of type: ${chunk.event}...`); + console.log(chunk.data); + console.log("\n\n"); } ``` @@ -482,5 +489,4 @@ Output: None - diff --git a/docs/docs/cloud/how-tos/stream_updates.md b/docs/docs/cloud/how-tos/stream_updates.md index 52234e5f1..ef101b268 100644 --- a/docs/docs/cloud/how-tos/stream_updates.md +++ b/docs/docs/cloud/how-tos/stream_updates.md @@ -1,6 +1,6 @@ # How to stream state updates of your graph -This guide covers how to use `stream_mode="updates"` for your graph, which will stream the updates to the graph state that are made after each node is executed. This differs from using `stream_mode="values"`: instead of streaming the entire value of the state at each superstep, it only streams the updates from each of the nodes that made an update to the state at that superstep. Read [this conceptual guide](https://langchain-ai.github.io/langgraph/concepts/low_level/#stream-and-astream) to learn more.``` +This guide covers how to use `stream_mode="updates"` for your graph, which will stream the updates to the graph state that are made after each node is executed. This differs from using `stream_mode="values"`: instead of streaming the entire value of the state at each superstep, it only streams the updates from each of the nodes that made an update to the state at that superstep. Read [this conceptual guide](https://langchain-ai.github.io/langgraph/concepts/low_level/#stream-and-astream) to learn more. First let's set up our client and thread: @@ -23,7 +23,7 @@ First let's set up our client and thread: const client = new Client({ apiUrl: }); // create thread const thread = await client.threads.create(); - console.log(thread) + console.log(thread); ``` === "CURL" @@ -36,12 +36,15 @@ First let's set up our client and thread: Output: - {'thread_id': '979e3c89-a702-4882-87c2-7a59a250ce16', - 'created_at': '2024-06-21T15:22:07.453100+00:00', - 'updated_at': '2024-06-21T15:22:07.453100+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}} + { + 'thread_id': '979e3c89-a702-4882-87c2-7a59a250ce16', + 'created_at': '2024-06-21T15:22:07.453100+00:00', + 'updated_at': '2024-06-21T15:22:07.453100+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } Now we can stream by updates, which outputs updates made to the state by each node after it has executed: @@ -72,13 +75,13 @@ Now we can stream by updates, which outputs updates made to the state by each no ```js const input = { - "messages": [ + messages: [ { - "role": "human", - "content": "What's the weather in la", + role: "human", + content: "What's the weather in la" } ] - } + }; const streamResponse = client.runs.stream( thread["thread_id"], @@ -88,10 +91,11 @@ Now we can stream by updates, which outputs updates made to the state by each no streamMode: "updates" } ); + for await (const chunk of streamResponse) { - console.log(f"Receiving new event of type: {chunk.event}...") - console.log(chunk.data) - console.log("\n\n") + console.log(`Receiving new event of type: ${chunk.event}...`); + console.log(chunk.data); + console.log("\n\n"); } ``` diff --git a/docs/docs/cloud/how-tos/stream_values.md b/docs/docs/cloud/how-tos/stream_values.md index b5c25d11d..d43bc6cea 100644 --- a/docs/docs/cloud/how-tos/stream_values.md +++ b/docs/docs/cloud/how-tos/stream_values.md @@ -1,6 +1,6 @@ # How to stream full state of your graph -This guide covers how to use `stream_mode="values"`, which streams the value of the state at each superstep. This differs from using `stream_mode="updates"`: instead of streaming just the updates to the state from each node, it streams the entire graph state at that superstep. Read [this conceptual guide](https://langchain-ai.github.io/langgraph/concepts/low_level/#stream-and-astream) to learn more.``` +This guide covers how to use `stream_mode="values"`, which streams the value of the state at each superstep. This differs from using `stream_mode="updates"`: instead of streaming just the updates to the state from each node, it streams the entire graph state at that superstep. Read [this conceptual guide](https://langchain-ai.github.io/langgraph/concepts/low_level/#stream-and-astream) to learn more. First let's set up our client and thread: @@ -23,7 +23,7 @@ First let's set up our client and thread: const client = new Client({ apiUrl: }); // create thread const thread = await client.threads.create(); - console.log(thread) + console.log(thread); ``` === "CURL" @@ -36,12 +36,15 @@ First let's set up our client and thread: Output: - {'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', - 'created_at': '2024-06-24T21:30:07.980789+00:00', - 'updated_at': '2024-06-24T21:30:07.980789+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}} + { + 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', + 'created_at': '2024-06-24T21:30:07.980789+00:00', + 'updated_at': '2024-06-24T21:30:07.980789+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } Now we can stream by values, which streams the full state of the graph after each node has finished executing: @@ -76,9 +79,9 @@ Now we can stream by values, which streams the full state of the graph after eac } ); for await (const chunk of streamResponse) { - console.log(f"Receiving new event of type: {chunk.event}...") - console.log(chunk.data) - console.log("\n\n") + console.log(`Receiving new event of type: ${chunk.event}...`); + console.log(chunk.data); + console.log("\n\n"); } ``` diff --git a/docs/docs/cloud/how-tos/webhooks.md b/docs/docs/cloud/how-tos/webhooks.md new file mode 100644 index 000000000..a7148add4 --- /dev/null +++ b/docs/docs/cloud/how-tos/webhooks.md @@ -0,0 +1,125 @@ +# Use Webhooks + +You may wish to use webhooks in your client, especially when using async streams in case you want to update something in your service once the API call to LangGraph Cloud has finished running. To do so, you will need to expose an endpoint that can accept POST requests, and then pass it to your API request in the "webhook" parameter. + +Currently, the SDK has not exposed this endpoint but you can access it through curl commands as follows. + +The following endpoints accept `webhook` as a parameter: + +- Create Run -> POST /thread/{thread_id}/runs +- Create Thread Cron -> POST /thread/{thread_id}/runs/crons +- Stream Run -> POST /thread/{thread_id}/runs/stream +- Wait Run -> POST /thread/{thread_id}/runs/wait +- Create Cron -> POST /runs/crons +- Stream Run Stateless -> POST /runs/stream +- Wait Run Stateless -> POST /runs/wait + +In this example, we will show calling a webhook after streaming a run. First, let's setup our assistant and thread: + +=== "Python" + + ```python + from langgraph_sdk import get_client + + client = get_client(url=) + # Using the graph deployed with the name "agent" + assistant_id = "agent" + # create thread + thread = await client.threads.create() + print(thread) + ``` + +=== "Javascript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + + const client = new Client({ apiUrl: }); + // Using the graph deployed with the name "agent" + const assistantID = "agent"; + // create thread + const thread = await client.threads.create(); + console.log(thread); + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /assistants/search \ + --header 'Content-Type: application/json' \ + --data '{ + "limit": 10, + "offset": 0 + }' | jq -c 'map(select(.config == null or .config == {})) | .[0]' && \ + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' + ``` + +Output: + + { + 'thread_id': '9dde5490-2b67-47c8-aa14-4bfec88af217', + 'created_at': '2024-08-30T23:07:38.242730+00:00', + 'updated_at': '2024-08-30T23:07:38.242730+00:00', + 'metadata': {}, + 'status': 'idle', + 'config': {}, + 'values': None + } + +Now we can invoke a run with a webhook: + +=== "Python" + + ```python + # create input + input = { "messages": [{ "role": "human", "content": "Hello!" }] } + + async for chunk in client.runs.stream( + thread_id=thread["thread_id"], + assistant_id=assistant_id, + input=input, + stream_mode="events", + webhook="your-webhook" + ): + # Do something with the stream output + pass + ``` + +=== "Javascript" + + ```js + // create input + const input = { messages: [{ role: "human", content: "Hello!" }] }; + + // stream events + const streamResponse = client.runs.stream( + thread["thread_id"], + assistantID, + { + input: input, + webhook: "your-webhook" + } + ); + for await (const chunk of streamResponse) { + // Do something with the stream output + } + ``` + +=== "CURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data '{ + "assistant_id": , + "input" : {"messages":[{"role": "user", "content": "Hello!"}]}, + "webhook": + }' + ``` + +And that's it! Now you can trigger your custom webhooks whenever you want in your LangGraph applications! \ No newline at end of file diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index f9c8138a8..2efeafb7a 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -229,14 +229,14 @@ nav: - Invoke graph in LangGraph Studio: "cloud/how-tos/invoke_studio.md" - Interact with threads in LangGraph Studio: "cloud/how-tos/threads_studio.md" - Different Types of Runs: - - Run an Agent in the Background: "cloud/how-tos/cloud_examples/background_run.ipynb" - - Run Multiple Agents in Same Thread: "cloud/how-tos/cloud_examples/same-thread.ipynb" - - Create Cron Jobs: "cloud/how-tos/cloud_examples/cron_jobs.ipynb" - - Create Stateless Runs: "cloud/how-tos/cloud_examples/stateless_runs.ipynb" + - Run an Agent in the Background: "cloud/how-tos/background_run.md" + - Run Multiple Agents in Same Thread: "cloud/how-tos/same-thread.md" + - Create Cron Jobs: "cloud/how-tos/cron_jobs.md" + - Create Stateless Runs: "cloud/how-tos/stateless_runs.md" - Other: - - Configure Agents: "cloud/how-tos/cloud_examples/configuration_cloud.ipynb" + - Configure Agents: "cloud/how-tos/configuration_cloud.md" - Convert LangGraph calls to LangGraph Cloud calls: "cloud/how-tos/cloud_examples/langgraph_to_langgraph_cloud.ipynb" - - Integrate Webhooks: 'cloud/how-tos/cloud_examples/webhooks.ipynb' + - Integrate Webhooks: 'cloud/how-tos/webhooks.md' - Copy Threads: 'cloud/how-tos/copy_threads.md' - Check Status of Threads: "cloud/how-tos/check_thread_status.md" - Conceptual Guides: diff --git a/examples/cloud_examples/background_run.ipynb b/examples/cloud_examples/background_run.ipynb deleted file mode 100644 index 6279402fc..000000000 --- a/examples/cloud_examples/background_run.ipynb +++ /dev/null @@ -1,388 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to kick off background runs\n", - "\n", - "This guide covers how to kick off background runs for your agent.\n", - "This can be useful for long running jobs." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "b8e6408a-b37e-428f-9567-077fa55d58e8", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialize the client\n", - "from langgraph_sdk import get_client\n", - "\n", - "client = get_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "4947e9bc-111f-4991-8c41-1041da9bf0ba", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'assistant_id': 'e90fee30-be91-43aa-a33c-d54bd219072e',\n", - " 'graph_id': 'agent',\n", - " 'created_at': '2024-06-18T18:06:55.102231+00:00',\n", - " 'updated_at': '2024-06-18T18:06:55.102231+00:00',\n", - " 'config': {'configurable': {'model_name': 'anthropic'}},\n", - " 'metadata': {}}" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# List available assistants\n", - "assistants = await client.assistants.search()\n", - "assistants[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "230c0464-a6e5-420f-9e38-ca514e5634ce", - "metadata": {}, - "outputs": [], - "source": [ - "# NOTE: we can use `assistant_id` UUID from the above response, or just pass graph ID instead when creating runs. we'll use graph ID here\n", - "assistant_id = \"agent\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "56aa5159-5583-4134-9210-709b969bda6f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'created_at': '2024-06-21T14:58:02.079462+00:00',\n", - " 'updated_at': '2024-06-21T14:58:02.079462+00:00',\n", - " 'metadata': {}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Create a new thread\n", - "thread = await client.threads.create()\n", - "thread" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "147c3f98-f889-4f05-a090-6b31f2a0b291", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# If we list runs on this thread, we can see it is empty\n", - "runs = await client.runs.list(thread[\"thread_id\"])\n", - "runs" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "8c7b44ef-4816-496d-88a1-2f7327cf576d", - "metadata": {}, - "outputs": [], - "source": [ - "# Let's kick off a run\n", - "input = {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in sf\"}]}\n", - "run = await client.runs.create(thread[\"thread_id\"], assistant_id, input=input)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d84b4d80-b0aa-4d9f-a05d-0744b2fe8f72", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'run_id': '1ef2fdea-814c-6165-8b2a-a40e2a028198',\n", - " 'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca',\n", - " 'created_at': '2024-06-21T14:58:02.095911+00:00',\n", - " 'updated_at': '2024-06-21T14:58:02.095911+00:00',\n", - " 'metadata': {},\n", - " 'status': 'pending',\n", - " 'kwargs': {'input': {'messages': [{'role': 'human',\n", - " 'content': 'what's the weather in sf'}]},\n", - " 'config': {'metadata': {'created_by': 'system'},\n", - " 'configurable': {'run_id': '1ef2fdea-814c-6165-8b2a-a40e2a028198',\n", - " 'user_id': '',\n", - " 'graph_id': 'agent',\n", - " 'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'thread_ts': None,\n", - " 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}},\n", - " 'webhook': None,\n", - " 'temporary': False,\n", - " 'stream_mode': ['events'],\n", - " 'feedback_keys': None,\n", - " 'interrupt_after': None,\n", - " 'interrupt_before': None},\n", - " 'multitask_strategy': 'reject'}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# The first time we poll it, we can see `status=pending`\n", - "await client.runs.get(thread[\"thread_id\"], run[\"run_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3639da3c-bfe5-454c-ab1e-8ed7af394dfe", - "metadata": {}, - "outputs": [], - "source": [ - "# Wait until the run finishes\n", - "await client.runs.join(thread[\"thread_id\"], run[\"run_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "8fa206ed-515e-4607-9a80-bebafe76cc24", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'run_id': '1ef2fdea-814c-6165-8b2a-a40e2a028198',\n", - " 'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca',\n", - " 'created_at': '2024-06-21T14:58:02.095911+00:00',\n", - " 'updated_at': '2024-06-21T14:58:02.095911+00:00',\n", - " 'metadata': {},\n", - " 'status': 'success',\n", - " 'kwargs': {'input': {'messages': [{'role': 'human',\n", - " 'content': 'what's the weather in sf'}]},\n", - " 'config': {'metadata': {'created_by': 'system'},\n", - " 'configurable': {'run_id': '1ef2fdea-814c-6165-8b2a-a40e2a028198',\n", - " 'user_id': '',\n", - " 'graph_id': 'agent',\n", - " 'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'thread_ts': None,\n", - " 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}},\n", - " 'webhook': None,\n", - " 'temporary': False,\n", - " 'stream_mode': ['events'],\n", - " 'feedback_keys': None,\n", - " 'interrupt_after': None,\n", - " 'interrupt_before': None},\n", - " 'multitask_strategy': 'reject'}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Eventually, it should finish and we should see `status=success`\n", - "await client.runs.get(thread[\"thread_id\"], run[\"run_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "8de4495f-7873-487c-b1a8-ad2a78a1ff35", - "metadata": {}, - "outputs": [], - "source": [ - "# We can get the final results\n", - "final_result = await client.threads.get_state(thread[\"thread_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "9da76fce-66e4-4f1b-8c24-09759889e50e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'values': {'messages': [{'content': 'what's the weather in sf',\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'human',\n", - " 'name': None,\n", - " 'id': 'bfe07fff-cb40-40be-84d5-a061d2c40006',\n", - " 'example': False},\n", - " {'content': [{'id': 'toolu_01QUzhhfDQkpbPSediUrXvQb',\n", - " 'input': {'query': 'weather in san francisco'},\n", - " 'name': 'tavily_search_results_json',\n", - " 'type': 'tool_use'}],\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'ai',\n", - " 'name': None,\n", - " 'id': 'run-6d8665ca-a77d-4b44-9a7b-4e975b155fb1',\n", - " 'example': False,\n", - " 'tool_calls': [{'name': 'tavily_search_results_json',\n", - " 'args': {'query': 'weather in san francisco'},\n", - " 'id': 'toolu_01QUzhhfDQkpbPSediUrXvQb'}],\n", - " 'invalid_tool_calls': [],\n", - " 'usage_metadata': None},\n", - " {'content': '[{\"url\": \"https://www.timeanddate.com/weather/usa/san-francisco/historic\", \"content\": \"San Francisco Weather History for the Previous 24 Hours Show weather for: Previous 24 hours June 17, 2024 June 16, 2024 June 15, 2024 June 14, 2024 June 13, 2024 June 12, 2024 June 11, 2024 June 10, 2024 June 9, 2024 June 8, 2024 June 7, 2024 June 6, 2024 June 5, 2024 June 4, 2024 June 3, 2024 June 2, 2024\"}]',\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'tool',\n", - " 'name': 'tavily_search_results_json',\n", - " 'id': '257a1f29-2f66-4f9e-b35d-c8818dbbaa3f',\n", - " 'tool_call_id': 'toolu_01QUzhhfDQkpbPSediUrXvQb'},\n", - " {'content': [{'text': 'The search results provide historic weather data for San Francisco, but do not give the current weather conditions. To get the current weather forecast for San Francisco, I would need to refine my search query. Here is an updated search:',\n", - " 'type': 'text'},\n", - " {'id': 'toolu_01RLJEcWYRvRoBhiHdrhoRZx',\n", - " 'input': {'query': 'san francisco weather forecast today'},\n", - " 'name': 'tavily_search_results_json',\n", - " 'type': 'tool_use'}],\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'ai',\n", - " 'name': None,\n", - " 'id': 'run-ca41dbf8-7e89-4ff2-a245-87098d7928ba',\n", - " 'example': False,\n", - " 'tool_calls': [{'name': 'tavily_search_results_json',\n", - " 'args': {'query': 'san francisco weather forecast today'},\n", - " 'id': 'toolu_01RLJEcWYRvRoBhiHdrhoRZx'}],\n", - " 'invalid_tool_calls': [],\n", - " 'usage_metadata': None},\n", - " {'content': '[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'San Francisco\\', \\'region\\': \\'California\\', \\'country\\': \\'United States of America\\', \\'lat\\': 37.78, \\'lon\\': -122.42, \\'tz_id\\': \\'America/Los_Angeles\\', \\'localtime_epoch\\': 1718981382, \\'localtime\\': \\'2024-06-21 7:49\\'}, \\'current\\': {\\'last_updated_epoch\\': 1718981100, \\'last_updated\\': \\'2024-06-21 07:45\\', \\'temp_c\\': 12.8, \\'temp_f\\': 55.0, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Overcast\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/122.png\\', \\'code\\': 1009}, \\'wind_mph\\': 6.9, \\'wind_kph\\': 11.2, \\'wind_degree\\': 200, \\'wind_dir\\': \\'SSW\\', \\'pressure_mb\\': 1011.0, \\'pressure_in\\': 29.84, \\'precip_mm\\': 0.01, \\'precip_in\\': 0.0, \\'humidity\\': 86, \\'cloud\\': 100, \\'feelslike_c\\': 12.2, \\'feelslike_f\\': 53.9, \\'windchill_c\\': 11.2, \\'windchill_f\\': 52.1, \\'heatindex_c\\': 12.0, \\'heatindex_f\\': 53.5, \\'dewpoint_c\\': 9.4, \\'dewpoint_f\\': 48.8, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 3.0, \\'gust_mph\\': 7.6, \\'gust_kph\\': 12.2}}\"}]',\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'tool',\n", - " 'name': 'tavily_search_results_json',\n", - " 'id': 'c80a3720-6a9f-4ff0-9ce2-6112e66a6f81',\n", - " 'tool_call_id': 'toolu_01RLJEcWYRvRoBhiHdrhoRZx'},\n", - " {'content': 'The updated search provides the current weather forecast for San Francisco. According to the results, as of 7:49am on June 21, 2024 in San Francisco, the temperature is 55°F (12.8°C), it is overcast with 100% cloud cover, and there are light winds from the south-southwest around 7 mph (11 km/h). The forecast also shows low precipitation of 0.01 mm, high humidity of 86%, and visibility of 9 miles (16 km).\\n\\nIn summary, the current weather in San Francisco is cool, overcast, and breezy based on this weather forecast data. Let me know if you need any other details!',\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'ai',\n", - " 'name': None,\n", - " 'id': 'run-4f23b53d-a8ec-4038-b3ed-08b2560bf81c',\n", - " 'example': False,\n", - " 'tool_calls': [],\n", - " 'invalid_tool_calls': [],\n", - " 'usage_metadata': None}]},\n", - " 'next': [],\n", - " 'config': {'configurable': {'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'thread_ts': '1ef2fdea-f879-65a5-8005-443b6a4039aa'}},\n", - " 'metadata': {'step': 5,\n", - " 'run_id': '1ef2fdea-814c-6165-8b2a-a40e2a028198',\n", - " 'source': 'loop',\n", - " 'writes': {'agent': {'messages': [{'id': 'run-4f23b53d-a8ec-4038-b3ed-08b2560bf81c',\n", - " 'name': None,\n", - " 'type': 'ai',\n", - " 'content': 'The updated search provides the current weather forecast for San Francisco. According to the results, as of 7:49am on June 21, 2024 in San Francisco, the temperature is 55°F (12.8°C), it is overcast with 100% cloud cover, and there are light winds from the south-southwest around 7 mph (11 km/h). The forecast also shows low precipitation of 0.01 mm, high humidity of 86%, and visibility of 9 miles (16 km).\\n\\nIn summary, the current weather in San Francisco is cool, overcast, and breezy based on this weather forecast data. Let me know if you need any other details!',\n", - " 'example': False,\n", - " 'tool_calls': [],\n", - " 'usage_metadata': None,\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'invalid_tool_calls': []}]}},\n", - " 'user_id': '',\n", - " 'graph_id': 'agent',\n", - " 'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'created_by': 'system',\n", - " 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'},\n", - " 'created_at': '2024-06-21T14:58:14.591805+00:00',\n", - " 'parent_config': {'configurable': {'thread_id': '5fc20631-47b7-48cd-8aa2-9f2eace9778d',\n", - " 'thread_ts': '1ef2fdea-d44c-6fc4-8004-d2713436777d'}}}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_result" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "ddd6e698-4609-4389-b84a-bb8939fff08b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'The updated search provides the current weather forecast for San Francisco. According to the results, as of 7:49am on June 21, 2024 in San Francisco, the temperature is 55°F (12.8°C), it is overcast with 100% cloud cover, and there are light winds from the south-southwest around 7 mph (11 km/h). The forecast also shows low precipitation of 0.01 mm, high humidity of 86%, and visibility of 9 miles (16 km).\\n\\nIn summary, the current weather in San Francisco is cool, overcast, and breezy based on this weather forecast data. Let me know if you need any other details!'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We can get the content of the final message\n", - "final_result[\"values\"][\"messages\"][-1][\"content\"]" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "langgraph-example-dev", - "language": "python", - "name": "langgraph-example-dev" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/cloud_examples/configuration_cloud.ipynb b/examples/cloud_examples/configuration_cloud.ipynb deleted file mode 100644 index e6d29170b..000000000 --- a/examples/cloud_examples/configuration_cloud.ipynb +++ /dev/null @@ -1,198 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "68c0837d-c40a-4209-9f88-5d08c00c31b0", - "metadata": {}, - "source": [ - "# How to create agents with configuration\n", - "\n", - "One of the benefits of LangGraph API is that it lets you create agents with different configurations.\n", - "This is useful when you want to:\n", - "\n", - "- Define a cognitive architecture once as a LangGraph\n", - "- Let that LangGraph be configurable across some attributes (for example, system message or LLM to use)\n", - "- Let users create agents with arbitrary configurations, save them, and then use them in the future\n", - "\n", - "In this guide we will show how to do that for the default agent we have built in.\n", - "\n", - "If you look at the agent we defined, you can see that inside the `call_model` node we have created the model based on some configuration. That node looks like:\n", - "\n", - "```python\n", - "def call_model(state, config):\n", - " messages = state[\"messages\"]\n", - " model_name = config.get('configurable', {}).get(\"model_name\", \"anthropic\")\n", - " model = _get_model(model_name)\n", - " response = model.invoke(messages)\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": [response]}\n", - "```\n", - "\n", - "We are looking inside the config for a `model_name` parameter (which defaults to `anthropic` if none is found).\n", - "That means that by default we are using Anthropic as our model provider.\n", - "In this example we will see an example of how to create an example agent that is configured to use OpenAI.\n", - "\n", - "We've also communicated to the graph that it should expect configuration with this key. \n", - "We've done this by passing `config_schema` when constructing the graph, eg:\n", - "\n", - "```python\n", - "class GraphConfig(TypedDict):\n", - " model_name: Literal[\"anthropic\", \"openai\"]\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(AgentState, config_schema=GraphConfig)\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "f69c9a4f-2ef9-4998-827b-fe86d12bfd76", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client\n", - "\n", - "client = get_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "9a37bfb5-7331-4004-8054-508838e54f18", - "metadata": {}, - "outputs": [], - "source": [ - "# First, let's check what valid configuration can be\n", - "# We can do this by getting the default assistant\n", - "# There should always be a default assistant with no configuration\n", - "assistants = await client.assistants.search()\n", - "assistants = [a for a in assistants if not a[\"config\"]]\n", - "base_assistant = assistants[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "70193a08-127c-44b3-a102-10db260d7e3b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'model_name': {'title': 'Model Name',\n", - " 'enum': ['anthropic', 'openai'],\n", - " 'type': 'string'}}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We can now call `.get_schemas` to get schemas associated with this graph\n", - "schemas = await client.assistants.get_schemas(\n", - " assistant_id=base_assistant[\"assistant_id\"]\n", - ")\n", - "# There are multiple types of schemas\n", - "# We can get the `config_schema` to look at the the configurable parameters\n", - "schemas[\"config_schema\"][\"definitions\"][\"Configurable\"][\"properties\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "99be5aee-9a6b-4515-b72f-ba135a893c65", - "metadata": {}, - "outputs": [], - "source": [ - "assistant = await client.assistants.create(\n", - " graph_id=\"agent\", config={\"configurable\": {\"model_name\": \"openai\"}}\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "4f10d346-69e6-44f4-8ff0-ef539ba938df", - "metadata": {}, - "source": [ - "We can see that this assistant has saved the config" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "3898ca35-eb2c-4b12-97ea-e0cc6a7c6a2e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'assistant_id': '40a3a2bf-5319-4fae-a2ac-05e075615cdc',\n", - " 'graph_id': 'agent',\n", - " 'config': {'configurable': {'model_name': 'openai'}},\n", - " 'created_at': '2024-06-05T23:12:30.519458+00:00',\n", - " 'updated_at': '2024-06-05T23:12:30.519458+00:00',\n", - " 'metadata': {}}" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "assistant" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "68ed7a1b-74be-4560-8c55-c76d49d3d348", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "StreamPart(event='metadata', data={'run_id': '1ef23911-c23b-6d8c-b1dc-94bb982ca7b1'})\n", - "StreamPart(event='values', data={'messages': [{'role': 'user', 'content': 'who made you?'}]})\n", - "StreamPart(event='values', data={'messages': [{'content': 'who made you?', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'ed93c1c9-80d6-4f2b-a048-ef859ea533f9', 'example': False}, {'content': 'I was created by OpenAI, a research organization focused on developing and advancing artificial intelligence technology.', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop'}, 'type': 'ai', 'name': None, 'id': 'run-6560cd65-5c9c-434b-8835-0baadc684760', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]})\n", - "StreamPart(event='end', data=None)\n" - ] - } - ], - "source": [ - "thread = await client.threads.create()\n", - "input = {\"messages\": [{\"role\": \"user\", \"content\": \"who made you?\"}]}\n", - "async for event in client.runs.stream(\n", - " thread[\"thread_id\"], assistant[\"assistant_id\"], input=input\n", - "):\n", - " print(event)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/cloud_examples/cron_jobs.ipynb b/examples/cloud_examples/cron_jobs.ipynb deleted file mode 100644 index 98b6a1b73..000000000 --- a/examples/cloud_examples/cron_jobs.ipynb +++ /dev/null @@ -1,132 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Cron Jobs\n", - "\n", - "Sometimes you don't want to run your graph based on user interaction, but rather you would like to schedule your graph to run on a schedule - for example if you wish for your graph to compose and send out a weekly email of to-dos for your team. LangGraph Cloud allows you to do this without having to write your own script by using the `Crons` client. To schedule a graph job, you need to pass a [cron expression](https://crontab.cronhub.io/) to inform the client when you want to run the graph. `Cron` jobs are run in the background and do not interfere with normal invocations of the graph.\n", - "\n", - "## Setup\n", - "\n", - "First, let's setup our SDK client, assistant, and thread:" - ] - }, - { - "cell_type": "code", - "execution_count": 110, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client\n", - "\n", - "client = get_client()\n", - "assistants = await client.assistants.search()\n", - "assistants = [a for a in assistants if not a[\"config\"]]\n", - "assistant = assistants[0]\n", - "thread = await client.threads.create()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cron job on a thread \n", - "\n", - "To create a cron job associated with a specific thread, you can write:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This schedules a job to run at 15:27 (3:27PM) every day\n", - "cron_1 = await client.crons.create_for_thread(\n", - " thread[\"thread_id\"],\n", - " assistant[\"assistant_id\"],\n", - " schedule=\"27 15 * * *\",\n", - " input={\"messages\": [{\"role\": \"user\", \"content\": \"What time is it?\"}]},\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that it is **very** important to delete `Cron` jobs that are no longer useful. Otherwise you could rack up unwanted API charges to the LLM! You can delete a `Cron` job using the following code:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "await client.crons.delete(cron_1[\"cron_id\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cron job stateless\n", - "\n", - "You can also create stateless cron jobs by using the following code:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This schedules a job to run at 15:27 (3:27PM) every day\n", - "cron_2 = await client.crons.create(\n", - " assistant[\"assistant_id\"],\n", - " schedule=\"27 15 * * *\",\n", - " input={\"messages\": [{\"role\": \"user\", \"content\": \"What time is it?\"}]},\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, remember to delete your job once you are done with it!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "await client.crons.delete(cron_2[\"cron_id\"])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/cloud_examples/img/webhook_results.png b/examples/cloud_examples/img/webhook_results.png deleted file mode 100644 index 81b9fe7032d7cd8c122ae5bf8c03f37cb12045b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442633 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 z 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�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

5n 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 z

WgDm2ntvt!<51)|_&!V31zG{b^ryv{ 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ĖRGP-dR}k zKEBV!u7Yc2osVU9{l;sarrCI)WavSIEwVjVIXFZoB)A0!x3kL=tu;c+7JWEWzYxCC zlAs`bF8FFfQW7;2l@o4j`PyQuDBx*TnS?=TAQwY?vdt{tY9oW8OFPv9Zuc9xvWjsL zHxjQ`RzcxgS65McuB$@hmI0W_GYM*azkkGXR}(ed_PE)8uI#O~z&H5&5tTDb7G2j~ zcgpt=-K?pEt7u}O_bB<6OHL;rBMX3c?e`fS)7N>sihb8ESu$jUPQg0qJ(ByyHyB*d zAyG)+4Nngb3NkivH8Zk34&!!K3gjja51Fne=mW_)=#Cjy!0!MXtC|U!x}U|qi!Jmy`Y`9ga^)B6MMR=SJX{T;gbzAjGwgp}q? zl^fSuIz^6R$9~M`pVO;gP^E2BH>j@i!wC~oeJ^Qg2T#>miYz!R{UH2|>zOg`w4|lJ zr)b(J`C&I_*POS>($ekK9E37QV$=3gKkSTJbHqk-?yz?zs>aX@kQRaxigm5wZrLzJ)S(9Foq{%8F?0@V=v zb>1EMQPE_XTZMYCv1Tgk>Ar&GAD`&YnsV`UUf!eTbQ~e`T-5|Lzbrw4ds>>ypI902z(GJbDhkE>n-8k;N{*2?%?lKtGOuZ+V#E