Files
langgraph/examples/cloud_examples/interrupt_concurrent.ipynb
T
f27d8e16ad docs: Add initial LangGraph Cloud docs (#725)
* Create Deploy docs.

* Add LangGraph CLI docs.

* Update API concepts page.

* Create quick start page.

* first draft (#695)

* first draft

* fmt

* fmt

* Revert "fmt"

This reverts commit e599030ab5.

* Revert "fmt"

This reverts commit ec8fca977e.

* var change

* import lint

* changed locations

* second draft

* fmt

* Revert "fmt"

This reverts commit 68a1c5c872.

* double texting lint

* concepts (#704)

* concepts

* python sdk

* docs structure

* fmt

* fmt

* Small touch ups, rename Hosted LangGraph API to LangGraph Cloud. (#724)

* Fix small typos.

* Fix broken links in quick start page.

* Add LangGraph Cloud reference docs.

---------

Co-authored-by: Isaac Francisco <78627776+isahers1@users.noreply.github.com>
2024-06-20 13:38:54 -07:00

6.3 KiB

Interrupt

There are several strategies for handling concurrent runs in your graph. This notebook covers how to use the interrupt option - please see the other how-to guides in the "Double Texting" directory to learn about the other methods.

First, let's import our required packages and instantiate our client, assistant, and thread.

In [ ]:
import asyncio

from langchain_core.messages import convert_to_messages
from langgraph_sdk import get_client
In [ ]:
client = get_client()
assistant = await client.assistants.create("agent")
thread = await client.threads.create()
In [ ]:
# the first run will be interrupted
interrupted_run = await client.runs.create(
    thread["thread_id"],
    assistant["assistant_id"],
    input={"messages": [{"role": "human", "content": "whats the weather in sf?"}]},
)
await asyncio.sleep(2)
run = await client.runs.create(
    thread["thread_id"],
    assistant["assistant_id"],
    input={"messages": [{"role": "human", "content": "whats the weather in nyc?"}]},
    multitask_strategy="interrupt",
)
In [ ]:
# wait until the second run completes
await client.runs.join(thread["thread_id"], run["run_id"])

We can see that the thread has partial data from the first run + data from the second run

In [ ]:
state = await client.threads.get_state(thread["thread_id"])
In [ ]:
for m in convert_to_messages(state["values"]["messages"]):
    m.pretty_print()
================================ Human Message =================================

whats the weather in sf?
================================== Ai Message ==================================

[{'id': 'toolu_01MjNtVJwEcpujRGrf3x6Pih', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]
Tool Calls:
  tavily_search_results_json (toolu_01MjNtVJwEcpujRGrf3x6Pih)
 Call ID: toolu_01MjNtVJwEcpujRGrf3x6Pih
  Args:
    query: weather in san francisco
================================= 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 =================================

whats the weather in nyc?
================================== Ai Message ==================================

[{'id': 'toolu_01KtE1m1ifPLQAx4fQLyZL9Q', 'input': {'query': 'weather in new york city'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]
Tool Calls:
  tavily_search_results_json (toolu_01KtE1m1ifPLQAx4fQLyZL9Q)
 Call ID: toolu_01KtE1m1ifPLQAx4fQLyZL9Q
  Args:
    query: weather in new york city
================================= 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 ==================================

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:

- This is a monthly weather forecast for New York City for the month of June.
- It includes daily high and low temperatures to help plan ahead.
- Historical averages for June in NYC are also provided as a reference point.
- More detailed daily or hourly forecasts with precipitation chances, humidity, wind, etc. can be found by visiting the AccuWeather page.

So in summary, the search provides a convenient overview of the expected weather conditions in New York City over the next month to give you an idea of what to prepare for if traveling or making plans there. Let me know if you need any other details!

Verify that the original, interrupted run was interrupted

In [ ]:
(await client.runs.get(thread["thread_id"], interrupted_run["run_id"]))["status"]
'interrupted'