From 215ef6eb2f653e46cfb442aeed2978c703781a01 Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Wed, 26 Jun 2024 21:14:22 -0700 Subject: [PATCH] cr --- .env.example | 2 - README.md | 243 +------ examples/js/.gitignore | 2 - examples/js/backgroundRun.ts | 74 -- examples/js/configuration.ts | 70 -- examples/js/doubleTexting.ts | 153 ---- examples/js/humanInTheLoop.ts | 147 ---- examples/js/package.json | 11 - examples/js/sameThread.ts | 45 -- examples/js/streamMessages.ts | 105 --- examples/js/streamUpdates.ts | 43 -- examples/js/streamValues.ts | 43 -- examples/python/notebooks/README.md | 55 -- .../python/notebooks/background_run.ipynb | 388 ---------- examples/python/notebooks/configuration.ipynb | 200 ------ .../python/notebooks/double_texting.ipynb | 675 ------------------ .../python/notebooks/human-in-the-loop.ipynb | 655 ----------------- examples/python/notebooks/same-thread.ipynb | 184 ----- .../python/notebooks/stream_messages.ipynb | 389 ---------- .../python/notebooks/stream_updates.ipynb | 173 ----- examples/python/notebooks/stream_values.ipynb | 212 ------ static/agent_ui.png | Bin 179395 -> 133968 bytes static/assistants.png | Bin 44379 -> 0 bytes 23 files changed, 4 insertions(+), 3865 deletions(-) delete mode 100644 examples/js/.gitignore delete mode 100644 examples/js/backgroundRun.ts delete mode 100644 examples/js/configuration.ts delete mode 100644 examples/js/doubleTexting.ts delete mode 100644 examples/js/humanInTheLoop.ts delete mode 100644 examples/js/package.json delete mode 100644 examples/js/sameThread.ts delete mode 100644 examples/js/streamMessages.ts delete mode 100644 examples/js/streamUpdates.ts delete mode 100644 examples/js/streamValues.ts delete mode 100644 examples/python/notebooks/README.md delete mode 100644 examples/python/notebooks/background_run.ipynb delete mode 100644 examples/python/notebooks/configuration.ipynb delete mode 100644 examples/python/notebooks/double_texting.ipynb delete mode 100644 examples/python/notebooks/human-in-the-loop.ipynb delete mode 100644 examples/python/notebooks/same-thread.ipynb delete mode 100644 examples/python/notebooks/stream_messages.ipynb delete mode 100644 examples/python/notebooks/stream_updates.ipynb delete mode 100644 examples/python/notebooks/stream_values.ipynb delete mode 100644 static/assistants.png diff --git a/.env.example b/.env.example index f2b668f3..79394a6c 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,3 @@ ANTHROPIC_API_KEY=... TAVILY_API_KEY=... -LANGCHAIN_TRACING_V2=true -LANGCHAIN_API_KEY=... OPENAI_API_KEY=... diff --git a/README.md b/README.md index 4e28a94f..caa8d761 100644 --- a/README.md +++ b/README.md @@ -1,246 +1,11 @@ -# `langgraph-api` Example +# LangGraph Cloud Example ![](static/agent_ui.png) -This is an example of how to use `langgraph-api` to stand up a REST API for your custom LangGraph StateGraph. This API can be used to interact with your StateGraph from any programming language that can make HTTP requests. +This is an example agent to deploy with LangGraph Cloud. [LangGraph](https://github.com/langchain-ai/langgraph) is a library for building stateful, multi-actor applications with LLMs. The main use cases for LangGraph are conversational agents, and long-running, multi-step LLM applications or any LLM application that would benefit from built-in support for persistent checkpoints, cycles and human-in-the-loop interactions (ie. LLM and human collaboration). -`langgraph-api` shortens the time-to-market for developers using LangGraph, with a one-liner command to start a production-ready HTTP microservice for your LangGraph applications, with built-in persistence. This lets you focus on the logic of your LangGraph graph, and leave the scaling and API design to us. The API is inspired by the OpenAI assistants API, and is designed to fit in alongside your existing services. +LangGraph shortens the time-to-market for developers using LangGraph, with a one-liner command to start a production-ready HTTP microservice for your LangGraph applications, with built-in persistence. This lets you focus on the logic of your LangGraph graph, and leave the scaling and API design to us. The API is inspired by the OpenAI assistants API, and is designed to fit in alongside your existing services. -## API Features - -It has the following features: - -- saved assistants, tracking config for your graphs -- saved threads, tracking state/conversation history -- human in the loop endpoints (interrupt a run, authorize nodes, get thread state, update thread state, get history of past thread states) -- streaming runs (with multiple stream formats, including token-by-token messages, state values and node updates) -- background runs (powered by a built-in task queue with exactly-once semantics, and FIFO ordering, with api for checking status and events, and support for completion webhooks) -- horizontally scalable, both the HTTP server and task queue are designed to run in many machines in parallel, with all state stored in Postgres -- "double texting" modes, fully configurable support to handle new input arriving while a thread still processing previous input, choose from these modes: reject, enqueue, cancel, rollback -- low latency, all interactions with the database have been optimized into a single roundtrip per endpoint, all database ops during runs are backgrounded and batched, and lots of other optimizations from our experience running high performance python services at scale - -We've designed it as a robust server you can run in production at high scale, and also easily test locally. - -## Quickstart - -This will cover how to get started with the example LangGraph application in this repo. -If you already have a LangGraph application and you want to deploy that (rather than this example LangGraph application) see the next section. - -The LangGraph agent we are deploying is a simple Anthropic agent with a single search tool. -You can see the full graph in `agent.py` - -You will need to have Docker running locally in order to use LangGraph Cloud. Download it [here](https://docs.docker.com/desktop/install/mac-install/), open the app, and ensure the Docker engine is running. - -Clone this repo and switch your active directory to the newly created one: - -```bash -git clone https://github.com/langchain-ai/langgraph-example.git -``` - -```bash -cd langgraph-example -``` - -Install the `langgraph-cli` package: - -```bash -pip install langgraph-cli -``` - -Create a `.env` file with the correct environment variables. - -```shell -cp .env.example .env -``` - -Go into `.env` file and add your credentials. -You will need an [Anthropic](https://console.anthropic.com/login?returnTo=%2F%3F), [Tavily](https://docs.tavily.com/), and [LangSmith](https://smith.langchain.com/) API keys. - -Then, run the following command to start the API server: - -```bash -langgraph up -``` - -This will start the API server on `http://localhost:8123`. -You can now interact with your StateGraph using the API or SDK. -For this example we will use the SDK, so let's go into a separate environment and install the SDK. - -### Python - -```shell -pip install langgraph-sdk -``` - -We can now interact with our deployed graph! - -```python -from langgraph_sdk import get_client - -client = get_client() - -# List all assistants -assistants = await client.assistants.search() - -# We auto-create an assistant for each graph you register in config. -agent = assistants[0] - -# Start a new thread -thread = await client.threads.create() - -# Start a streaming run -input = {"messages": [{"role": "human", "content": "whats the weather in la"}]} -async for chunk in client.runs.stream(thread['thread_id'], agent['assistant_id'], input=input): - print(chunk) -``` - -### JS/TS - -```bash -yarn add @langchain/langgraph-sdk -``` - -```js -import { Client } from "@langchain/langgraph-sdk"; - -const client = new Client(); - -// List all assistants -const assistants = await client.assistants.search({ - metadata: null, - offset: 0, - limit: 10, -}); - -// We auto-create an assistant for each graph you register in config. -const agent = assistants[0]; - -// Start a new thread -const thread = await client.threads.create(); - -// Start a streaming run -const messages = [{ role: "human", content: "whats the weather in la" }]; - -const streamResponse = client.runs.stream( - thread["thread_id"], - agent["assistant_id"], - { - input: { messages }, - }, -); - -for await (const chunk of streamResponse) { - console.log(chunk); -} -``` - -There we go! Up and running. -There's still a lot left to learn. - -For more examples of how to interact with the API once it is deployed using the SDK, see the example notebooks in [notebooks](./examples/python/notebooks) - -For an explanation of how the deployment works and how to deploy a custom graph, see the section below. - -## Deploy a custom agent - -The quickstart walked through deploying a simple agent. But what if you want to deploy it for your custom agent? - -### Build your agent - -First: build your agent with LangGraph. See LangGraph documentation [here](https://github.com/langchain-ai/langgraph) for references and examples. - -### Define `langgraph.json` - -Now we will define our `langgraph.json` file. This configuration has three parts: - -#### `graphs` - -In the graphs mapping, the key is the graph_id and the value is the path to the agent (a StateGraph). -The graph_id is used in the API when creating an assistant. -You can declare multiple graphs. - -In the example, we had: - -```json - "graphs": { - "agent": "./agent.py:graph" - }, -``` - -This meant that we were defining an agent with graph_id `agent` and the path was in the `agent.py` file with a variable called `graph`. - -#### `dependencies` - -You can declare local and external python dependencies (which will be installed with pip) here. - -In the example, we had: - -```json - "dependencies": ["."], -``` - -This meant we installed this current directory as a dependency. -That includes anything in `requirements.txt` and any helper files here. - -You can also specify third party packages here. -For example, you could do something like: - -```json - "dependencies": [".", "wikipedia"], -``` - -This would install the current directory (and any requirements files located inside) as well as the `wikipedia` package. - -#### `env` - -This is a path to any environment variables/files to load. - -In our example we had: - -```json - "env": ".env" -``` - -This meant we loaded the environment variables in the `.env` file - -### Launch the LangGraph agent - -We can now use our CLI to launch the LangGraph agent. - -First, we need to install it. We can do this with: - -``` -pip install langgraph-cli -``` - -Once installed, we can then launch the service with: - -```shell -langgraph up -``` - -There are a few extra commands for additional control. For a full list, run `langgraph up --help` - -### Add custom services - -`langgraph up` spins up the LangGraph agent using Docker Compose. If you want to launch other services as part of the same project, you can use the `-d` flag to pass an additional docker compose file to be merged into the same project. - -For instance, if you create a docker compose file at `compose.yml` you can then run `langgraph up -d compose.yml` to spin up both the LangGraph services as well as your custom services. - -## API Reference - -The API reference is available at `http://localhost:8123/docs` when running locally. You can preview it here: [API Reference](https://langchain-ai.github.io/langgraph-example/). - -## Server configuration - -To configure throughput you can use the env vars N_WORKERS (default 2) and N_JOBS_PER_WORKER (default 5). -Throughput for background runs is the product of the two, so by default at most 10 runs can be running at any one time. - -## UI - -Part of LangGraph API includes a UI for interacting with created agents. -After running `langgraph up` you can access this UI by going to [http://localhost:8124](http://localhost:8124). You will be taken to an interactive playground whereby you can visualize and then interact with the agent. - -![](static/agent_ui.png) +In order to deploy this agent to LangGraph Cloud you will want to first fork this repo. After that, you can follow the instructions [here](https://langchain-ai.github.io/langgraph/cloud/) to deploy to LangGraph Cloud. diff --git a/examples/js/.gitignore b/examples/js/.gitignore deleted file mode 100644 index 254e3d4b..00000000 --- a/examples/js/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -yarn.lock -node_modules \ No newline at end of file diff --git a/examples/js/backgroundRun.ts b/examples/js/backgroundRun.ts deleted file mode 100644 index 51ae7d09..00000000 --- a/examples/js/backgroundRun.ts +++ /dev/null @@ -1,74 +0,0 @@ -// 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. -import { Client } from "@langchain/langgraph-sdk"; - -async function main() { - // Initialize the client - const client = new Client(); - - // List available assistants - const assistants = await client.assistants.search(); - console.log("List available assistants", assistants); - - // Get the first assistant, we will use this one - const assistant = assistants[0]; - console.log("Get first assistant", assistant); - - // Create a new thread - const thread = await client.threads.create(); - console.log("Create new thread", thread); - - // If we list runs on this thread, we can see it is empty - const runs = await client.runs.list(thread.thread_id); - console.log("List runs on the thread", runs); - - // Let's kick off a run - const input = { - messages: [{ role: "human", content: "whats the weather in sf" }], - }; - const run = await client.runs.create( - thread.thread_id, - assistant.assistant_id, - { input } - ); - console.log("Create a single run", run); - - // The first time we poll it, we can see `status=pending` - console.log( - "Poll a single run, status=pending", - await client.runs.get(thread.thread_id, run.run_id) - ); - - // We can list events for the run - console.log( - "List all events for the run", - await client.runs.listEvents(thread.thread_id, run.run_id) - ); - - // Eventually, it should finish and we should see `status=success` - let finalRunStatus = await client.runs.get(thread.thread_id, run.run_id); - while (finalRunStatus.status !== "success") { - await new Promise((resolve) => setTimeout(resolve, 1000)); // Polling every second - finalRunStatus = await client.runs.get(thread.thread_id, run.run_id); - } - console.log( - "Final run status", - await client.runs.get(thread.thread_id, run.run_id) - ); - - // We can get the final results - const results = await client.runs.listEvents(thread.thread_id, run.run_id); - - // The results are sorted by time, so the most recent (final) step is the 0 index - const finalResult = results[0]; - console.log("Final result", finalResult); - - // We can get the content of the final message - const finalMessages = (finalResult.data as Record)["output"][ - "messages" - ]; - const finalMessageContent = finalMessages[finalMessages.length - 1].content; - console.log("Final message content", finalMessageContent); -} - -main(); diff --git a/examples/js/configuration.ts b/examples/js/configuration.ts deleted file mode 100644 index 946cd4b8..00000000 --- a/examples/js/configuration.ts +++ /dev/null @@ -1,70 +0,0 @@ -// How to create agents with configuration -import { Client } from "@langchain/langgraph-sdk"; - -/* -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 -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]} -``` - -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. - -We've also communicated to the graph that it should expect configuration with this key. -We've done this by passing `config_schema` when constructing the graph, eg: - -```python -class GraphConfig(TypedDict): - model_name: Literal["anthropic", "openai"] -*/ - -async function main() { - const client = new Client(); - const baseAssistant = await client.assistants.create({ - graphId: "agent", - }); - console.log("Assistant", baseAssistant); - /* We can now call `.get_schemas` to get schemas associated with this graph*/ - const schemas = await client.assistants.getSchemas(baseAssistant["assistant_id"]) - /* There are multiple types of schemas - We can get the `config_schema` to look at the the configurable parameters */ - // @ts-ignore - console.log("Schema with configurable parameters", schemas["config_schema"]["definitions"]["Configurable"]["properties"]) - const assistant = await client.assistants.create({ - graphId: "agent", - config: { configurable: { model_name: "openai" } }, - }); - // We can see that this assistant has saved the config - console.log("Assistant with config", assistant); - const thread = await client.threads.create(); - const input = { messages: [{ role: "user", content: "who made you?" }] }; - - for await (const event of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { input } - )) { - console.log(`Receiving new event of type: ${event.event}...`); - console.log(JSON.stringify(event.data)); - console.log("\n\n"); - } -} - -main(); diff --git a/examples/js/doubleTexting.ts b/examples/js/doubleTexting.ts deleted file mode 100644 index 91aaac8f..00000000 --- a/examples/js/doubleTexting.ts +++ /dev/null @@ -1,153 +0,0 @@ -// How to handle "double-texting" or concurrent runs in your graph - -/* -You might want to start a new run on a thread while the previous run still haven't finished. We call this "double-texting" or multi-tasking. - -There are several strategies for handling this: - -- `reject`: Reject the new run. -- `interrupt`: Interrupt the current run, keeping steps completed until now, and start a new one. -- `rollback`: Cancel and delete the existing run, rolling back the thread to the state before it had started, then start the new run. -- `enqueue`: Queue up the new run to start after the current run finishes. -*/ - -import { Client } from "@langchain/langgraph-sdk"; - -const sleep = async (ms: number) => - await new Promise((resolve) => setTimeout(resolve, ms)); - -async function main() { - const client = new Client(); - const assistant = await client.assistants.create({ - graphId: "agent", - }); - - // REJECT - console.log("\nREJECT demo\n"); - let thread = await client.threads.create(); - let run = await client.runs.create( - thread["thread_id"], - assistant["assistant_id"], - { - input: { - messages: [{ role: "human", content: "whats the weather in sf?" }], - }, - }, - ); - - // attempt a new run (will be rejected) - await client.runs.create(thread["thread_id"], assistant["assistant_id"], { - input: { - messages: [{ role: "human", content: "whats the weather in nyc?" }], - }, - multitaskStrategy: "reject", - }); - - await client.runs.join(thread["thread_id"], run["run_id"]); - - // We can verify that the original thread finished executing: - let state = await client.threads.getState(thread["thread_id"]); - console.log("Messages", state["values"]["messages"]); - - // INTERRUPT - console.log("\nINTERRUPT demo\n"); - thread = await client.threads.create(); - const interruptedRun = await client.runs.create( - thread["thread_id"], - assistant["assistant_id"], - { - input: { - messages: [{ role: "human", content: "whats the weather in sf?" }], - }, - }, - ); - await sleep(2000); - run = await client.runs.create( - thread["thread_id"], - assistant["assistant_id"], - { - input: { - messages: [{ role: "human", content: "whats the weather in nyc?" }], - }, - multitaskStrategy: "interrupt", - }, - ); - 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 - state = await client.threads.getState(thread["thread_id"]); - console.log("Messages", state["values"]["messages"]); - - // Verify that the original, canceled run was interrupted - console.log( - "Interrupted run status", - (await client.runs.get(thread["thread_id"], interruptedRun["run_id"]))[ - "status" - ], - ); - - // ROLLBACK - console.log("\nROLLBACK demo\n"); - thread = await client.threads.create(); - const rolledBackRun = await client.runs.create( - thread["thread_id"], - assistant["assistant_id"], - { - input: { - messages: [{ role: "human", content: "whats the weather in sf?" }], - }, - }, - ); - await sleep(2000); - run = await client.runs.create( - thread["thread_id"], - assistant["assistant_id"], - { - input: { - messages: [{ role: "human", content: "whats the weather in nyc?" }], - }, - multitaskStrategy: "rollback", - }, - ); - - await client.runs.join(thread["thread_id"], run["run_id"]); - - // We can see that the thread only has data from the second run - state = await client.threads.getState(thread["thread_id"]); - console.log("Messages", state["values"]["messages"]); - - // Verify that the original, rolled back run was deleted - try { - await client.runs.get(thread["thread_id"], rolledBackRun["run_id"]); - } catch (e) { - console.log("Original run was deleted", e); - } - - // ENQUEUE - console.log("\nENQUEUE demo\n"); - thread = await client.threads.create(); - await client.runs.create(thread["thread_id"], assistant["assistant_id"], { - input: { - messages: [{ role: "human", content: "whats the weather in sf?" }], - sleep: 5, - }, - }); - await sleep(500); - const secondRun = await client.runs.create( - thread["thread_id"], - assistant["assistant_id"], - { - input: { - messages: [{ role: "human", content: "whats the weather in nyc?" }], - }, - multitaskStrategy: "enqueue", - }, - ); - await client.runs.join(thread["thread_id"], secondRun["run_id"]); - - // Verify that the thread has data from both runs - state = await client.threads.getState(thread["thread_id"]); - console.log("Combined messages", state["values"]["messages"]); -} - -main(); diff --git a/examples/js/humanInTheLoop.ts b/examples/js/humanInTheLoop.ts deleted file mode 100644 index c1dd9838..00000000 --- a/examples/js/humanInTheLoop.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { Client } from "@langchain/langgraph-sdk"; - -async function main() { - const client = new Client(); - - const assistant = await client.assistants.create({ graphId: "agent" }); - console.log("Assistant", assistant); - - // Approve a tool call - const thread = await client.threads.create(); - console.log("Thread", thread); - - let runs = await client.runs.list(thread.thread_id); - console.log("Runs", runs); - - // We now want to add a human-in-the-loop step before a tool is called. - // We can do this by adding `interruptBefore=["action"]`, which tells us to interrupt before calling the action node. - // We can do this either when compiling the graph or when kicking off a run. - // Here we will do it when kicking of a run. - let input = { - messages: [{ role: "human", content: "whats the weather in sf" }], - }; - for await (const chunk of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { - input, - streamMode: "updates", - interruptBefore: ["action"], - } - )) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(JSON.stringify(chunk.data)); - console.log("\n\n"); - } - - // We can now kick off a new run on the same thread with `None` as the input in order to just continue the existing thread. - for await (const chunk of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { - input: null, - streamMode: "updates", - interruptBefore: ["action"], - } - )) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(JSON.stringify(chunk.data)); - console.log("\n\n"); - } - - // Edit a tool call - - // What if we want to edit the tool call? - // We can also do that. - // Let's kick off another run, with the same `interruptBefore=['action']` - input = { - messages: [{ role: "human", content: "whats the weather in la?" }], - }; - for await (const chunk of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { - input: input, - streamMode: "updates", - interruptBefore: ["action"], - } - )) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(JSON.stringify(chunk.data)); - console.log("\n\n"); - } - - // Inspect and modify the state of the thread - let threadState = await client.threads.getState(thread.thread_id); - // Let's get the last message of the thread - this is the one we want to update - let lastMessage = threadState.values["messages"].slice(-1)[0]; - - // Let's now modify the tool call to say Louisiana - lastMessage.tool_calls = [ - { - name: "tavily_search_results_json", - args: { query: "weather in Louisiana" }, - id: lastMessage.tool_calls[0].id, - }, - ]; - - await client.threads.updateState(thread.thread_id, { - values: { messages: [lastMessage] }, - }); - - // Check the updated state - threadState = await client.threads.getState(thread.thread_id); - console.log( - "Updated tool calls", - threadState.values["messages"].slice(-1)[0].tool_calls - ); - - // Great! We changed it. If we now resume execution (by kicking off a new run with null inputs on the same thread) it should use that new tool call. - for await (const chunk of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { - input: null, - streamMode: "updates", - interruptBefore: ["action"], - } - )) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(JSON.stringify(chunk.data)); - console.log("\n\n"); - } - - // Edit an old state - - // Let's now imagine we want to go back in time and edit the tool call after we had already made it. - // In order to do this, we can get first get the full history of the thread - const threadHistory = await client.threads.getHistory(thread.thread_id, { - limit: 100, - }); - console.log("History length", threadHistory.length); - - // After that, we can get the correct state we want to be in. The 0th index state is the most recent one, while the -1 index state is the first. - // In this case, we want to go to the state where the last message had the tool calls for `weather in los angeles` - const rewindState = threadHistory[3]; - console.log( - "Rewind state tools calls", - rewindState.values["messages"].slice(-1)[0].tool_calls - ); - - for await (const chunk of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { - input: null, - streamMode: "updates", - interruptBefore: ["action"], - config: rewindState.config, - } - )) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(JSON.stringify(chunk.data)); - console.log("\n\n"); - } -} - -main(); diff --git a/examples/js/package.json b/examples/js/package.json deleted file mode 100644 index cd507532..00000000 --- a/examples/js/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "js", - "description": "Examples of LangGraph SDK", - "private": true, - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "@langchain/langgraph-sdk": "*" - }, - "type": "module" -} diff --git a/examples/js/sameThread.ts b/examples/js/sameThread.ts deleted file mode 100644 index d4554df2..00000000 --- a/examples/js/sameThread.ts +++ /dev/null @@ -1,45 +0,0 @@ -// How to run multiple agents on the same thread -import { Client } from "@langchain/langgraph-sdk"; - -/* -In LangGraph API, a thread is not explicitly associated with a particular agent. -This means that you can run multiple agents on the same thread. -In this example, we will create two agents and then call them both on the same thread. -*/ - -async function main() { - const client = new Client(); - // const openaiAssistant = await client.assistants.create({ graphId: "agent", config: { configurable: { model_name: "openai" } }}); - const defaultAssistant = await client.assistants.create({ graphId: "agent" }); - const openaiAssistant = await client.assistants.create({ - graphId: "agent", - config: { configurable: { model_name: "openai" } }, - }); - - console.log("Default assistant", defaultAssistant); - // We can see that this assistant has saved the config - console.log("OpenAI assistant", openaiAssistant); - const thread = await client.threads.create(); - let input = { messages: [{ role: "user", content: "who made you?" }] }; - - for await (const event of client.runs.stream( - thread.thread_id, - openaiAssistant.assistant_id, - { input, streamMode: "updates" } - )) { - console.log(JSON.stringify(event.data)); - console.log("\n\n"); - } - - input = { messages: [{ role: "user", content: "and you?" }] }; - for await (const event of client.runs.stream( - thread.thread_id, - defaultAssistant.assistant_id, - { input, streamMode: "updates" } - )) { - console.log(JSON.stringify(event.data)); - console.log("\n\n"); - } -} - -main(); diff --git a/examples/js/streamMessages.ts b/examples/js/streamMessages.ts deleted file mode 100644 index d9dfcc2f..00000000 --- a/examples/js/streamMessages.ts +++ /dev/null @@ -1,105 +0,0 @@ -// How to stream messages from your graph -import { Client } from "@langchain/langgraph-sdk"; - -/* -There are multiple different streaming modes. - -- values: This streaming mode streams back values of the graph. This is the full state of the graph after each node is called. -- updates: This streaming mode streams back updates to the graph. This is the update to the state of the graph after each node is called. -- messages: This streaming mode streams back messages - both complete messages (at the end of a node) as well as tokens for any messages generated inside a node. This mode is primarily meant for powering chat applications. - -This script covers streaming_mode="messages". - -In order to use this mode, the state of the graph you are interacting with MUST have a messages key that is a list of messages. Eg, the state should look something like: - -from typing import TypedDict, Annotated -from langgraph.graph import add_messages -from langchain_core.messages import AnyMessage - -class State(TypedDict): - messages: Annotated[list[AnyMessage], add_messages] - - OR it should be an instance or subclass of from langgraph.graph import MessageState (MessageState is just a helper type hint equivalent to the above). - -With stream_mode="messages" two things will be streamed back: - -It outputs messages produced by any chat model called inside (unless tagged in a special way) -It outputs messages returned from nodes (to allow for nodes to return ToolMessages and the like -*/ - -async function streamMessages() { - const client = new Client(); - const assistant = await client.assistants.create({ - graphId: "agent", - config: { configurable: { model_name: "openai" } }, - }); - console.log("Assistant", assistant); - - const thread = await client.threads.create(); - console.log("Thread", thread); - - const runs = await client.runs.list(thread.thread_id); - console.log("Runs", runs); - - // Helper function for formatting messages - function formatToolCalls(toolCalls) { - if (toolCalls && toolCalls.length > 0) { - const formattedCalls = toolCalls.map( - (call) => - `Tool Call ID: ${call.id}, Function: ${ - call.name - }, Arguments: ${JSON.stringify(call.args)}` - ); - return formattedCalls.join("\n"); - } - return "No tool calls"; - } - - const input = { - messages: [{ role: "user", content: "whats the weather in sf" }], - }; - - for await (const event of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { input, streamMode: "messages" } - )) { - if (event.event === "metadata") { - const data = event.data as Record; - console.log(`Metadata: Run ID - ${data["run_id"]}`); - } else if (event.event === "messages/partial") { - for (const dataItem of event.data as Record[]) { - if ("role" in dataItem && dataItem.role === "user") { - console.log(`Human: ${dataItem.content}`); - } else { - const toolCalls = dataItem.tool_calls || []; - const invalidToolCalls = dataItem.invalid_tool_calls || []; - const content = dataItem.content || ""; - const responseMetadata = dataItem.response_metadata || {}; - - if (content) { - console.log(`AI: ${content}`); - } - - if (toolCalls.length > 0) { - console.log("Tool Calls:"); - console.log(formatToolCalls(toolCalls)); - } - - if (invalidToolCalls.length > 0) { - console.log("Invalid Tool Calls:"); - console.log(formatToolCalls(invalidToolCalls)); - } - - if (responseMetadata) { - const finishReason = responseMetadata.finish_reason || "N/A"; - console.log(`Response Metadata: Finish Reason - ${finishReason}`); - } - } - } - console.log("-".repeat(50)); - } - } -} - -streamMessages(); diff --git a/examples/js/streamUpdates.ts b/examples/js/streamUpdates.ts deleted file mode 100644 index 57090b2f..00000000 --- a/examples/js/streamUpdates.ts +++ /dev/null @@ -1,43 +0,0 @@ -// How to stream updates from your graph -import { Client } from "@langchain/langgraph-sdk"; - -/* -There are multiple different streaming modes. - -- values: This streaming mode streams back values of the graph. This is the full state of the graph after each node is called. -- updates: This streaming mode streams back updates to the graph. This is the update to the state of the graph after each node is called. -- messages: This streaming mode streams back messages - both complete messages (at the end of a node) as well as tokens for any messages generated inside a node. This mode is primarily meant for powering chat applications. - -This script covers streaming_mode="updates". -*/ - -async function streamUpdates() { - const client = new Client(); - const assistant = await client.assistants.create({ - graphId: "agent", - config: { configurable: { model_name: "openai" } }, - }); - console.log("Assistant", assistant); - - const thread = await client.threads.create(); - console.log("Thread", thread); - - const runs = await client.runs.list(thread.thread_id); - console.log("Runs", runs); - - const input = { - messages: [{ role: "user", content: "whats the weather in sf" }], - }; - - for await (const event of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { input, streamMode: "updates" } - )) { - console.log(`Receiving new event of type: ${event.event}...`); - console.log(JSON.stringify(event.data)); - console.log("\n\n"); - } -} - -streamUpdates(); diff --git a/examples/js/streamValues.ts b/examples/js/streamValues.ts deleted file mode 100644 index c4af4952..00000000 --- a/examples/js/streamValues.ts +++ /dev/null @@ -1,43 +0,0 @@ -// How to stream values from your graph -import { Client } from "@langchain/langgraph-sdk"; - -/* -There are multiple different streaming modes. - -- values: This streaming mode streams back values of the graph. This is the full state of the graph after each node is called. -- updates: This streaming mode streams back updates to the graph. This is the update to the state of the graph after each node is called. -- messages: This streaming mode streams back messages - both complete messages (at the end of a node) as well as tokens for any messages generated inside a node. This mode is primarily meant for powering chat applications. - -This script covers streaming_mode="values". -*/ - -async function streamValues() { - const client = new Client(); - const assistant = await client.assistants.create({ - graphId: "agent", - config: { configurable: { model_name: "openai" } }, - }); - console.log("Assistant", assistant); - - const thread = await client.threads.create(); - console.log("Thread", thread); - - const runs = await client.runs.list(thread.thread_id); - console.log("Runs", runs); - - const input = { - messages: [{ role: "user", content: "whats the weather in sf" }], - }; - - for await (const event of client.runs.stream( - thread.thread_id, - assistant.assistant_id, - { input } - )) { - console.log(`Receiving new event of type: ${event.event}...`); - console.log(JSON.stringify(event.data)); - console.log("\n\n"); - } -} - -streamValues(); diff --git a/examples/python/notebooks/README.md b/examples/python/notebooks/README.md deleted file mode 100644 index 78d1be78..00000000 --- a/examples/python/notebooks/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# How-to guides - -These are how-to guides for interacting with the deployed agents. - - -## Streaming - -When you deploy a graph with LangGraph API, you can stream results from a run in a few different ways. - -- `values`: This streaming mode streams back values of the graph. This is the **full state of the graph** after each node is called. -- `update`: This streaming mode streams back updates to the graph. This is the **update to the state of the graph** after each node is called. -- `messages`: This streaming mode streams back messages - both complete messages (at the end of a node) as well as **tokens** for any messages generated inside a node. This mode is primarily meant for powering chat applications. - -See the following guides for how to use the different streaming modes. - - -- [How to stream values](./stream_values.ipynb) -- [How to stream updates](./stream_updates.ipynb) -- [How to stream messages](./stream_messages.ipynb) - -## Background runs - -When you deploy a graph with LangGraph API, you can also interact with it in a way where you kick off background runs. -You can poll for the status of the run. -This can be useful when the run is particularly long running. - -- [How to kick off a background run](./background_run.ipynb) - -## Human-in-the-loop - -When you deploy a graph with LangGraph API, it is deployed with a persistence layer. -This enables easy human-in-the-loop interactions like approving a tool call, editing a tool call, and returning to and modifying a previous state and resuming execution from there. - -- [How to have a human in the loop](./human-in-the-loop.ipynb) - -## 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: - -1. Define a cognitive architecture once as a LangGraph -2. Let that LangGraph be configurable across some attributes (for example, system message or LLM to use) -3. 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. - -- [How to configure agents](./configuration.ipynb) - -## Multiple Agents, Same Thread - -In LangGraph API, a thread is not explicitly associated with a particular agent. -This means that you can run multiple agents on the same thread. -In this example, we will create two agents and then call them both on the same thread. - -- [How to run multiple agents on the same thread](./same-thread.ipynb) \ No newline at end of file diff --git a/examples/python/notebooks/background_run.ipynb b/examples/python/notebooks/background_run.ipynb deleted file mode 100644 index a43bff2a..00000000 --- a/examples/python/notebooks/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\": \"whats 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': 'whats 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': 'whats 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': 'whats 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/python/notebooks/configuration.ipynb b/examples/python/notebooks/configuration.ipynb deleted file mode 100644 index 3d427bd0..00000000 --- a/examples/python/notebooks/configuration.ipynb +++ /dev/null @@ -1,200 +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(assistant_id=base_assistant[\"assistant_id\"])\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(graph_id=\"agent\", config={\"configurable\": {\"model_name\": \"openai\"}})" - ] - }, - { - "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(thread['thread_id'], assistant['assistant_id'], input=input):\n", - " print(event)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "666d78f1-019a-433e-839e-52d2ebb3d9c8", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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/python/notebooks/double_texting.ipynb b/examples/python/notebooks/double_texting.ipynb deleted file mode 100644 index a0ad9bcd..00000000 --- a/examples/python/notebooks/double_texting.ipynb +++ /dev/null @@ -1,675 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to handle \"double-texting\" or concurrent runs in your graph\n", - "\n", - "You might want to start a new run on a thread while the previous run still haven't finished. We call this \"double-texting\" or multi-tasking.\n", - "\n", - "There are several strategies for handling this:\n", - " \n", - "- `reject`: Reject the new run.\n", - "- `interrupt`: Interrupt the current run, keeping steps completed until now, and start a new one.\n", - "- `rollback`: Cancel and delete the existing run, rolling back the thread to the state before it had started, then start the new run.\n", - "- `enqueue`: Queue up the new run to start after the current run finishes." - ] - }, - { - "cell_type": "markdown", - "id": "19fd3d4d-bfe3-40fb-bd47-53ae0e8012b5", - "metadata": {}, - "source": [ - "### Reject" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "676d8d5d-e4be-4f19-b344-7525db8e805b", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client\n", - "from langchain_core.messages import convert_to_messages\n", - "import httpx" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "8a15b47d-d3ac-4aa8-8bf1-35c20fc5067f", - "metadata": {}, - "outputs": [], - "source": [ - "client = get_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "2b58be44-a311-487e-a91b-353a3e6a4e13", - "metadata": {}, - "outputs": [], - "source": [ - "assistant_id = \"agent\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "39cb7234-1fd7-4fda-a708-da26e4f00556", - "metadata": {}, - "outputs": [], - "source": [ - "thread = await client.threads.create()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "6065166a-337e-4443-9c87-53a865356191", - "metadata": {}, - "outputs": [], - "source": [ - "run = await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in sf?\"}]}\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "bef2fb51-ece2-4152-8399-d3d902377d95", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Failed to start concurrent run Client error '409 Conflict' for url 'http://localhost:8123/threads/f9e7088b-8028-4e5c-88d2-9cc9a2870e50/runs'\n", - "For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409\n" - ] - } - ], - "source": [ - "try:\n", - " await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in nyc?\"}]},\n", - " multitask_strategy=\"reject\",\n", - " )\n", - "except httpx.HTTPStatusError as e:\n", - " print(\"Failed to start concurrent run\", e)" - ] - }, - { - "cell_type": "markdown", - "id": "cfc9f025-027f-4617-abad-4722ca6fea87", - "metadata": {}, - "source": [ - "We can verify that the original thread finished executing:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "094d2ee5-d01e-40ad-875b-3213705ee703", - "metadata": {}, - "outputs": [], - "source": [ - "# wait until the original run completes\n", - "await client.runs.join(thread[\"thread_id\"], run[\"run_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "2694e2ac-e02c-443c-b70e-748c779103af", - "metadata": {}, - "outputs": [], - "source": [ - "state = await client.threads.get_state(thread[\"thread_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "a6ec9609-ab97-4c6d-89f3-717240f244cc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "whats the weather in sf?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'id': 'toolu_01CyewEifV2Kmi7EFKHbMDr1', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01CyewEifV2Kmi7EFKHbMDr1)\n", - " Call ID: toolu_01CyewEifV2Kmi7EFKHbMDr1\n", - " Args:\n", - " query: weather in san francisco\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"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.\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "According to the search results from Tavily, the current weather in San Francisco is:\n", - "\n", - "The average high temperature in San Francisco in June is around 65°F (18°C), with average lows around 54°F (12°C). June tends to be one of the cooler and foggier months in San Francisco due to the marine layer of fog that often blankets the city during the summer months.\n", - "\n", - "Some key points about the typical June weather in San Francisco:\n", - "\n", - "- Mild temperatures with highs in the 60s F and lows in the 50s F\n", - "- Foggy mornings that often burn off to sunny afternoons\n", - "- Little to no rainfall, as June falls in the dry season\n", - "- Breezy conditions, with winds off the Pacific Ocean\n", - "- Layers are recommended for changing weather conditions\n", - "\n", - "So in summary, you can expect mild, foggy mornings giving way to sunny but cool afternoons in San Francisco this time of year. The marine layer keeps temperatures moderate compared to other parts of California in June.\n" - ] - } - ], - "source": [ - "for m in convert_to_messages(state[\"values\"][\"messages\"]):\n", - " m.pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "73d23fc7-cb94-4378-b64b-85419534b913", - "metadata": {}, - "source": [ - "### Interrupt" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "4f181881-e116-43e2-86de-797714184984", - "metadata": {}, - "outputs": [], - "source": [ - "import asyncio" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "0af0b820-2d88-4e5d-b377-1ac5af4df5da", - "metadata": {}, - "outputs": [], - "source": [ - "thread = await client.threads.create()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "b582d05f-46de-4cce-bf5c-744fd3253ae9", - "metadata": {}, - "outputs": [], - "source": [ - "# the first run will be interrupted\n", - "interrupted_run = await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in sf?\"}]},\n", - ")\n", - "await asyncio.sleep(2)\n", - "run = await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in nyc?\"}]},\n", - " multitask_strategy=\"interrupt\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "3b3bee45-cbe6-4903-bed2-067768260677", - "metadata": {}, - "outputs": [], - "source": [ - "# wait until the second run completes\n", - "await client.runs.join(thread[\"thread_id\"], run[\"run_id\"])" - ] - }, - { - "cell_type": "markdown", - "id": "da18ceb0-ed98-49c8-89fb-df4cb0da9c4f", - "metadata": {}, - "source": [ - "We can see that the thread has partial data from the first run + data from the second run" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "71ca7222-6b92-4f8a-ad0f-bf599e5bf9ce", - "metadata": {}, - "outputs": [], - "source": [ - "state = await client.threads.get_state(thread[\"thread_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "e1ea9694-e011-4a60-a72e-5f496fc52cd9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "whats the weather in sf?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'id': 'toolu_01MjNtVJwEcpujRGrf3x6Pih', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01MjNtVJwEcpujRGrf3x6Pih)\n", - " Call ID: toolu_01MjNtVJwEcpujRGrf3x6Pih\n", - " Args:\n", - " query: weather in san francisco\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"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 ...\"}]\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "whats the weather in nyc?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'id': 'toolu_01KtE1m1ifPLQAx4fQLyZL9Q', 'input': {'query': 'weather in new york city'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01KtE1m1ifPLQAx4fQLyZL9Q)\n", - " Call ID: toolu_01KtE1m1ifPLQAx4fQLyZL9Q\n", - " Args:\n", - " query: weather in new york city\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"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.\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "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:\n", - "\n", - "- This is a monthly weather forecast for New York City for the month of June.\n", - "- It includes daily high and low temperatures to help plan ahead.\n", - "- Historical averages for June in NYC are also provided as a reference point.\n", - "- More detailed daily or hourly forecasts with precipitation chances, humidity, wind, etc. can be found by visiting the AccuWeather page.\n", - "\n", - "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!\n" - ] - } - ], - "source": [ - "for m in convert_to_messages(state[\"values\"][\"messages\"]):\n", - " m.pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "aeea6251-f6b7-4395-9c47-7a0537a8a76a", - "metadata": {}, - "source": [ - "Verify that the original, interrupted run was interrupted" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "f9f275ad-41a5-4b6b-a710-9ca1d0d3e903", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'interrupted'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(await client.runs.get(thread[\"thread_id\"], interrupted_run[\"run_id\"]))[\"status\"]" - ] - }, - { - "cell_type": "markdown", - "id": "a5b91ae9-cb18-454b-a9ca-24f6ef6be8c6", - "metadata": {}, - "source": [ - "### Rollback" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "9df4d417-f645-4ae5-a74a-f243cf223a4d", - "metadata": {}, - "outputs": [], - "source": [ - "thread = await client.threads.create()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "0637dda6-1cf4-4e28-962a-d12410139575", - "metadata": {}, - "outputs": [], - "source": [ - "# the first run will be interrupted\n", - "rolled_back_run = await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in sf?\"}]},\n", - ")\n", - "await asyncio.sleep(2)\n", - "run = await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in nyc?\"}]},\n", - " multitask_strategy=\"rollback\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "764390cd-3f76-4d9d-80c5-9d12805f161c", - "metadata": {}, - "outputs": [], - "source": [ - "# wait until the second run completes\n", - "await client.runs.join(thread[\"thread_id\"], run[\"run_id\"])" - ] - }, - { - "cell_type": "markdown", - "id": "490359c8-7faa-441f-90d5-f1f38e20d567", - "metadata": {}, - "source": [ - "We can see that the thread has data only from the second run" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "794aa45e-50af-4bfc-8baf-f60c456154d6", - "metadata": {}, - "outputs": [], - "source": [ - "state = await client.threads.get_state(thread[\"thread_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "6e2008a2-befa-433f-b893-725c83f35227", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "whats the weather in nyc?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'id': 'toolu_01JzPqefao1gxwajHQ3Yh3JD', 'input': {'query': 'weather in nyc'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01JzPqefao1gxwajHQ3Yh3JD)\n", - " Call ID: toolu_01JzPqefao1gxwajHQ3Yh3JD\n", - " Args:\n", - " query: weather in nyc\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"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}}\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "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.\n" - ] - } - ], - "source": [ - "for m in convert_to_messages(state[\"values\"][\"messages\"]):\n", - " m.pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "035e5ec4-7ffc-4233-8755-d77109ab2f2e", - "metadata": {}, - "source": [ - "Verify that the original, rolled back run was deleted" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "7bd408cb-cd8f-4eee-b898-b883fe6a17c6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Original run was correctly deleted\n" - ] - } - ], - "source": [ - "try:\n", - " await client.runs.get(thread[\"thread_id\"], rolled_back_run[\"run_id\"])\n", - "except httpx.HTTPStatusError as e:\n", - " print(\"Original run was correctly deleted\")" - ] - }, - { - "cell_type": "markdown", - "id": "69accf95-8480-491a-927a-d7d19d498143", - "metadata": {}, - "source": [ - "### Enqueue" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "86e7269b-f3f8-4dda-8260-f4522394e36a", - "metadata": {}, - "outputs": [], - "source": [ - "thread = await client.threads.create()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "3bb7b6d0-0999-4541-98b5-d058a3f45333", - "metadata": {}, - "outputs": [], - "source": [ - "# this run will be interrupted\n", - "first_run = await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in sf?\"}]}\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "4e88b197-5e8c-4d35-ad76-5872b333cc7f", - "metadata": {}, - "outputs": [], - "source": [ - "second_run = await client.runs.create(\n", - " thread[\"thread_id\"],\n", - " assistant_id,\n", - " input={\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in nyc?\"}]},\n", - " multitask_strategy=\"enqueue\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "0f3a629c-3bfb-436d-a435-d9ce5c715dcb", - "metadata": {}, - "source": [ - "Verify that the thread has data from both runs" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "79abbf3b-b425-4399-8926-c0af052ac127", - "metadata": {}, - "outputs": [], - "source": [ - "# wait until the second run completes\n", - "await client.runs.join(thread[\"thread_id\"], second_run[\"run_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "e45b129b-2592-4f88-ab45-c63585493110", - "metadata": {}, - "outputs": [], - "source": [ - "state = await client.threads.get_state(thread[\"thread_id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "c522cefc-76b7-4c93-81cb-44cd5d7bd98c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "whats the weather in sf?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'id': 'toolu_01Dez1sJre4oA2Y7NsKJV6VT', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01Dez1sJre4oA2Y7NsKJV6VT)\n", - " Call ID: toolu_01Dez1sJre4oA2Y7NsKJV6VT\n", - " Args:\n", - " query: weather in san francisco\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"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.\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "According to AccuWeather, the current weather conditions in San Francisco are:\n", - "\n", - "Temperature: 57°F (14°C)\n", - "Conditions: Mostly Sunny\n", - "Wind: WSW 10 mph\n", - "Humidity: 72%\n", - "\n", - "The forecast for the next few days shows partly sunny skies with highs in the upper 50s to mid 60s F (14-18°C) and lows in the upper 40s to low 50s F (9-11°C). Typical mild, dry weather for San Francisco this time of year.\n", - "\n", - "Some key details from the AccuWeather forecast:\n", - "\n", - "Today: Mostly sunny, high of 62°F (17°C)\n", - "Tonight: Partly cloudy, low of 49°F (9°C) \n", - "Tomorrow: Partly sunny, high of 59°F (15°C)\n", - "Saturday: Mostly sunny, high of 64°F (18°C)\n", - "Sunday: Partly sunny, high of 61°F (16°C)\n", - "\n", - "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.\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "whats the weather in nyc?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'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'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01FFft5Sx9oS6AdVJuRWWcGp)\n", - " Call ID: toolu_01FFft5Sx9oS6AdVJuRWWcGp\n", - " Args:\n", - " query: weather in new york city\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"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}}\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "According to the weather data from WeatherAPI:\n", - "\n", - "Current Conditions in New York City (as of 2:00 PM local time):\n", - "- Temperature: 85°F (29°C)\n", - "- Conditions: Sunny\n", - "- Wind: 2 mph (4 km/h) from the SSE\n", - "- Humidity: 63%\n", - "- Heat Index: 85°F (30°C)\n", - "\n", - "The forecast shows sunny and warm conditions persisting over the next few days:\n", - "\n", - "Today: Sunny, high of 85°F (29°C)\n", - "Tonight: Clear, low of 68°F (20°C)\n", - "Tomorrow: Sunny, high of 88°F (31°C) \n", - "Thursday: Mostly sunny, high of 90°F (32°C)\n", - "Friday: Partly cloudy, high of 87°F (31°C)\n", - "\n", - "So New York City is experiencing beautiful sunny weather with seasonably warm temperatures in the mid-to-upper 80s Fahrenheit (around 30°C). Humidity is moderate in the 60% range. Overall, ideal late spring/early summer conditions for being outdoors in the city over the next several days.\n" - ] - } - ], - "source": [ - "for m in convert_to_messages(state[\"values\"][\"messages\"]):\n", - " m.pretty_print()" - ] - } - ], - "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/python/notebooks/human-in-the-loop.ipynb b/examples/python/notebooks/human-in-the-loop.ipynb deleted file mode 100644 index 5f200c97..00000000 --- a/examples/python/notebooks/human-in-the-loop.ipynb +++ /dev/null @@ -1,655 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to have a human in the loop\n", - "\n", - "With it's built in persistence layer, LangGraph API is perfect for human-in-the-loop workflows.\n", - "Here we cover a few such examples:\n", - "\n", - "1. Having a human in the loop to approve a tool call\n", - "2. Having a human in the loop to edit a tool call\n", - "3. Having a human in the loop to edit an old state and resume execution from there\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "521d975b-e94b-4c37-bfa1-82d969e2a4dc", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "27a1392b-86c3-464e-99a8-90ffc965f3ec", - "metadata": {}, - "outputs": [], - "source": [ - "client = get_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "230c0464-a6e5-420f-9e38-ca514e5634ce", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca',\n", - " 'graph_id': 'agent',\n", - " 'config': {},\n", - " 'created_at': '2024-05-18T00:19:39.688822+00:00',\n", - " 'updated_at': '2024-05-18T00:19:39.688822+00:00',\n", - " 'metadata': {'created_by': 'system'}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "assistant_id = \"agent\"" - ] - }, - { - "cell_type": "markdown", - "id": "e0209129-239b-452e-a59a-47be716bbf8c", - "metadata": {}, - "source": [ - "## Approve a tool call" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "56aa5159-5583-4134-9210-709b969bda6f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'thread_id': '54ed0901-6767-46c9-a5f9-b65c1c5fd89c',\n", - " 'created_at': '2024-05-18T22:46:16.724701+00:00',\n", - " 'updated_at': '2024-05-18T22:46:16.724701+00:00',\n", - " 'metadata': {}}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "thread = await client.threads.create()\n", - "thread" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "147c3f98-f889-4f05-a090-6b31f2a0b291", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "runs = await client.runs.list(thread['thread_id'])\n", - "runs" - ] - }, - { - "cell_type": "markdown", - "id": "77dae6ad-bb7b-468d-b7fd-9b8a35f13ccb", - "metadata": {}, - "source": [ - "We now want to add a human-in-the-loop step before a tool is called.\n", - "We can do this by adding `interrupt_before=[\"action\"]`, which tells us to interrupt before calling the action node.\n", - "We can do this either when compiling the graph or when kicking off a run.\n", - "Here we will do it when kicking of a run." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "7da70e20-1a4e-4df2-b996-1927f474c835", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Receiving new event of type: metadata...\n", - "{'run_id': '3b77ef83-687a-4840-8858-0371f91a92c3'}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'agent': {'messages': [{'content': [{'id': 'toolu_01HwZqM1ptX6E15A5LAmyZTB', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-e5d17791-4d37-4ad2-815f-a0c4cba62585', 'example': False, 'tool_calls': [{'name': 'tavily_search_results_json', 'args': {'query': 'weather in san francisco'}, 'id': 'toolu_01HwZqM1ptX6E15A5LAmyZTB'}], 'invalid_tool_calls': []}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: end...\n", - "None\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "input = {\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in sf\"}]}\n", - "async for chunk in client.runs.stream(\n", - " thread['thread_id'], assistant_id, input=input, stream_mode=\"updates\", interrupt_before=['action']\n", - "):\n", - " print(f\"Receiving new event of type: {chunk.event}...\")\n", - " print(chunk.data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "a36ac0d6-7843-4fab-909c-0b5b6e725a7f", - "metadata": {}, - "source": [ - "We can now kick off a new run on the same thread with `None` as the input in order to just continue the existing thread." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "bded66c7-b56e-4db5-809f-fa5a31d8a012", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Receiving new event of type: metadata...\n", - "{'run_id': 'a46f733d-cf5b-4ee3-9e07-08612468c8df'}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'action': {'messages': [{'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\\': 1716072201, \\'localtime\\': \\'2024-05-18 15:43\\'}, \\'current\\': {\\'last_updated_epoch\\': 1716071400, \\'last_updated\\': \\'2024-05-18 15:30\\', \\'temp_c\\': 18.9, \\'temp_f\\': 66.0, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Partly cloudy\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/116.png\\', \\'code\\': 1003}, \\'wind_mph\\': 18.6, \\'wind_kph\\': 29.9, \\'wind_degree\\': 280, \\'wind_dir\\': \\'W\\', \\'pressure_mb\\': 1015.0, \\'pressure_in\\': 29.96, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 59, \\'cloud\\': 25, \\'feelslike_c\\': 18.9, \\'feelslike_f\\': 66.0, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 5.0, \\'gust_mph\\': 23.0, \\'gust_kph\\': 37.1}}\"}]', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'tavily_search_results_json', 'id': '8be98ff3-6d61-41c5-8384-8db6b7abdbfb', 'tool_call_id': 'toolu_01HwZqM1ptX6E15A5LAmyZTB'}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'agent': {'messages': [{'content': \"The weather in San Francisco is currently partly cloudy with a temperature of around 66°F (18.9°C). There are westerly winds of 18.6 mph (29.9 km/h) with gusts up to 23 mph (37.1 km/h). The humidity is 59% and visibility is good at 9 miles (16 km). UV levels are moderate at 5.0.\\n\\nIn summary, it's a nice partly cloudy spring day in San Francisco with comfortable temperatures and a moderate breeze. The weather conditions seem ideal for being outdoors and enjoying the city.\", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-7a8a2ff8-d0d6-4200-b0a5-926f2b6a4798', 'example': False, 'tool_calls': [], 'invalid_tool_calls': []}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: end...\n", - "None\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "input = None\n", - "async for chunk in client.runs.stream(\n", - " thread['thread_id'], assistant_id, input=input, stream_mode=\"updates\", interrupt_before=['action']\n", - "):\n", - " print(f\"Receiving new event of type: {chunk.event}...\")\n", - " print(chunk.data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "2072ce5a-8771-42f9-b2de-5d3a7a9c817b", - "metadata": {}, - "source": [ - "## Edit a tool call\n", - "\n", - "What if we want to edit the tool call?\n", - "We can also do that.\n", - "Let's kick off another run, with the same `interrupt_before=['action']`" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b226b687-02da-4eef-9286-46dba92b17ba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Receiving new event of type: metadata...\n", - "{'run_id': 'c7c8e313-dad9-47d9-bd03-e112c94eff9e'}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'agent': {'messages': [{'content': [{'id': 'toolu_01NGhKmeciaT7TfhBSwUT3mi', 'input': {'query': 'weather in los angeles'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-3d417aa5-e9c1-4b76-90f8-597519c28af9', 'example': False, 'tool_calls': [{'name': 'tavily_search_results_json', 'args': {'query': 'weather in los angeles'}, 'id': 'toolu_01NGhKmeciaT7TfhBSwUT3mi'}], 'invalid_tool_calls': []}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: end...\n", - "None\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "input = {\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in la?\"}]}\n", - "async for chunk in client.runs.stream(\n", - " thread['thread_id'], assistant_id, input=input, stream_mode=\"updates\", interrupt_before=['action']\n", - "):\n", - " print(f\"Receiving new event of type: {chunk.event}...\")\n", - " print(chunk.data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "ab338423-c18d-446c-9aa3-3ad2f16d742a", - "metadata": {}, - "source": [ - "We can now inspect the state of the thread" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "bd9ca1f4-c3b0-4fa3-8c91-233a9129a142", - "metadata": {}, - "outputs": [], - "source": [ - "thread_state = await client.threads.get_state(thread['thread_id'])" - ] - }, - { - "cell_type": "markdown", - "id": "31e82414-afd2-46c4-a605-ce3eb46df485", - "metadata": {}, - "source": [ - "Let's get the last message of the thread - this is the one we want to update" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "fe832ec1-7ae0-4d11-8408-d4da88d4dced", - "metadata": {}, - "outputs": [], - "source": [ - "last_message = thread_state['values']['messages'][-1]" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "434253fe-7397-45e2-8be8-91d002088a96", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'id': 'toolu_01NGhKmeciaT7TfhBSwUT3mi',\n", - " 'input': {'query': 'weather in los angeles'},\n", - " 'name': 'tavily_search_results_json',\n", - " 'type': 'tool_use'}]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "last_message['content']" - ] - }, - { - "cell_type": "markdown", - "id": "6d007b31-c8a2-465c-bc78-a5909ca7931c", - "metadata": {}, - "source": [ - "Let's now modify the tool call to say Louisiana" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "55fcb316-450b-4b8c-9ae9-e7ee395acc55", - "metadata": {}, - "outputs": [], - "source": [ - "last_message['tool_calls'] = [{\n", - " 'id': last_message['tool_calls'][0]['id'],\n", - " 'name': 'tavily_search_results_json',\n", - " # We change the query to say temperature\n", - " 'args': {'query': 'weather in Louisiana'}\n", - "}]\n", - "# last_message['content'] = [{\n", - "# 'id': last_message['content'][0]['id'],\n", - "# 'name': 'tavily_search_results_json',\n", - "# # We change the query to say temperature\n", - "# 'input': {'query': 'weather in Louisiana'},\n", - "# 'type': 'tool_use'\n", - "# }]" - ] - }, - { - "cell_type": "markdown", - "id": "d49be54e-5334-47be-8dfb-78b8a8155e98", - "metadata": {}, - "source": [ - "We can now update the state - we only need to pass in the last updated message because our graph will handle the update." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "0438f997-bad3-48f6-b532-9ac3a95263c2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': '54ed0901-6767-46c9-a5f9-b65c1c5fd89c',\n", - " 'thread_ts': '1ef15688-1dbd-68f5-8007-75dc0e110124'}}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "await client.threads.update_state(thread['thread_id'], values={\"messages\": [last_message]})" - ] - }, - { - "cell_type": "markdown", - "id": "c96668ab-80fa-4ae6-a90b-773a943ba331", - "metadata": {}, - "source": [ - "Let's now check the state of the thread again, and in particular the final message" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "31936711-4af4-4bd1-ac10-9ce52922dd2f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'name': 'tavily_search_results_json',\n", - " 'args': {'query': 'weather in Louisiana'},\n", - " 'id': 'toolu_01NGhKmeciaT7TfhBSwUT3mi'}]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "thread_state = await client.threads.get_state(thread['thread_id'])\n", - "thread_state['values']['messages'][-1]['tool_calls']" - ] - }, - { - "cell_type": "markdown", - "id": "20aa8ff3-7876-4db2-9333-c5396cd637ac", - "metadata": {}, - "source": [ - "Great! We changed it. If we now resume execution (by kicking off a new run with null inputs on the same thread) it should use that new tool call." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "8e2c4eeb-2888-4979-9877-aa4a53dec5ea", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Receiving new event of type: metadata...\n", - "{'run_id': '1a1ebed1-3581-418a-81be-e834b40c5c82'}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'action': {'messages': [{'content': '[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'Louisiana\\', \\'region\\': \\'Missouri\\', \\'country\\': \\'USA United States of America\\', \\'lat\\': 39.44, \\'lon\\': -91.06, \\'tz_id\\': \\'America/Chicago\\', \\'localtime_epoch\\': 1716072393, \\'localtime\\': \\'2024-05-18 17:46\\'}, \\'current\\': {\\'last_updated_epoch\\': 1716072300, \\'last_updated\\': \\'2024-05-18 17:45\\', \\'temp_c\\': 29.0, \\'temp_f\\': 84.2, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Partly cloudy\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/116.png\\', \\'code\\': 1003}, \\'wind_mph\\': 6.9, \\'wind_kph\\': 11.2, \\'wind_degree\\': 220, \\'wind_dir\\': \\'SW\\', \\'pressure_mb\\': 1011.0, \\'pressure_in\\': 29.86, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 46, \\'cloud\\': 50, \\'feelslike_c\\': 31.4, \\'feelslike_f\\': 88.6, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 7.0, \\'gust_mph\\': 7.4, \\'gust_kph\\': 11.9}}\"}]', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'tavily_search_results_json', 'id': '728f8ac9-729e-4bf7-b560-b332a73c8f47', 'tool_call_id': 'toolu_01NGhKmeciaT7TfhBSwUT3mi'}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'agent': {'messages': [{'content': [{'text': 'The search results seem to be for the weather in Louisiana, Missouri rather than Los Angeles, California. Let me try the search again:', 'type': 'text'}, {'id': 'toolu_019YAXWMK33tG9DaxMzrowc8', 'input': {'query': 'weather in los angeles california'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-c42a3b14-2611-4a1d-8907-95dcdb18f07f', 'example': False, 'tool_calls': [{'name': 'tavily_search_results_json', 'args': {'query': 'weather in los angeles california'}, 'id': 'toolu_019YAXWMK33tG9DaxMzrowc8'}], 'invalid_tool_calls': []}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: end...\n", - "None\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "input = None\n", - "async for chunk in client.runs.stream(\n", - " thread['thread_id'], assistant_id, input=input, stream_mode=\"updates\", interrupt_before=['action']\n", - "):\n", - " print(f\"Receiving new event of type: {chunk.event}...\")\n", - " print(chunk.data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "065f8165-43d8-4876-86af-0cfffd712fee", - "metadata": {}, - "source": [ - "## Edit an old state\n", - "\n", - "Let's now imagine we want to go back in time and edit the tool call after we had already made it.\n", - "In order to do this, we can get first get the full history of the thread." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "de050efd-73a4-441e-91e0-18e08f773a42", - "metadata": {}, - "outputs": [], - "source": [ - "thread_history = await client.threads.get_history(thread['thread_id'], limit=100)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "07e15435-4a5f-4c2a-b748-0e0f7ab02a28", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "11" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(thread_history)" - ] - }, - { - "cell_type": "markdown", - "id": "a292e721-36c4-41b8-85e4-378f0770652a", - "metadata": {}, - "source": [ - "After that, we can get the correct state we want to be in. The 0th index state is the most recent one, while the -1 index state is the first.\n", - "In this case, we want to go to the state where the last message had the tool calls for `weather in los angeles`" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "132d207c-11cb-4efb-a330-88ebdfc612c8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'name': 'tavily_search_results_json',\n", - " 'args': {'query': 'weather in los angeles'},\n", - " 'id': 'toolu_01FnuDKhUfagwoqhNfiTYTfS'}]" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rewind_state = thread_history[3]\n", - "rewind_state['values']['messages'][-1]['tool_calls']" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "45e01ddf-2ccf-4029-b431-e5fce2235b59", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': 'df85453d-cb86-48c8-ae84-12081faa1bdf',\n", - " 'thread_ts': '1ef15582-3442-6db7-8006-9166bbb0e80f'}}" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rewind_state['config']" - ] - }, - { - "cell_type": "markdown", - "id": "d229468e-2f94-4b29-b56b-1d402554dcfb", - "metadata": {}, - "source": [ - "If we want to, we can now resume execution from that place in time" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "94ebc63e-f2cf-4da1-bc8d-52c4731ab0c6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Receiving new event of type: metadata...\n", - "{'run_id': 'a1cc9263-ef0a-4c04-9194-6f01624d0ef0'}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'action': {'messages': [{'content': '[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'Los Angeles\\', \\'region\\': \\'California\\', \\'country\\': \\'United States of America\\', \\'lat\\': 34.05, \\'lon\\': -118.24, \\'tz_id\\': \\'America/Los_Angeles\\', \\'localtime_epoch\\': 1716071728, \\'localtime\\': \\'2024-05-18 15:35\\'}, \\'current\\': {\\'last_updated_epoch\\': 1716071400, \\'last_updated\\': \\'2024-05-18 15:30\\', \\'temp_c\\': 20.0, \\'temp_f\\': 68.0, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Partly cloudy\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/116.png\\', \\'code\\': 1003}, \\'wind_mph\\': 2.2, \\'wind_kph\\': 3.6, \\'wind_degree\\': 226, \\'wind_dir\\': \\'SW\\', \\'pressure_mb\\': 1016.0, \\'pressure_in\\': 29.99, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 61, \\'cloud\\': 50, \\'feelslike_c\\': 20.0, \\'feelslike_f\\': 68.0, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 6.0, \\'gust_mph\\': 12.6, \\'gust_kph\\': 20.3}}\"}]', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'tavily_search_results_json', 'id': '7137b2e5-566b-418b-b642-b3c6b64c5224', 'tool_call_id': 'toolu_01FnuDKhUfagwoqhNfiTYTfS'}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'agent': {'messages': [{'content': 'The search results show the current weather conditions in Los Angeles. As of 3:30pm on May 18, 2024, the weather in Los Angeles is partly cloudy with a temperature around 68°F (20°C). Winds are light from the southwest around 2-3 mph. The humidity is 61% and visibility is good at 9 miles. Overall, it appears to be a nice spring day in LA with partly sunny skies and comfortable temperatures in the upper 60s.', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-3966b68a-c381-4933-a852-e6a4697c962c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': []}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: end...\n", - "None\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "input = None\n", - "async for chunk in client.runs.stream(\n", - " thread['thread_id'], \n", - " assistant_id, \n", - " input=input, \n", - " stream_mode=\"updates\", \n", - " interrupt_before=['action'],\n", - " config=rewind_state['config']\n", - "):\n", - " print(f\"Receiving new event of type: {chunk.event}...\")\n", - " print(chunk.data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "492f1d37-0979-4210-8dd7-bc70cdc308f3", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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": 5 -} diff --git a/examples/python/notebooks/same-thread.ipynb b/examples/python/notebooks/same-thread.ipynb deleted file mode 100644 index 94d08a04..00000000 --- a/examples/python/notebooks/same-thread.ipynb +++ /dev/null @@ -1,184 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "68c0837d-c40a-4209-9f88-5d08c00c31b0", - "metadata": {}, - "source": [ - "# How to run multiple agents on the same thread\n", - "\n", - "In LangGraph API, a thread is not explicitly associated with a particular agent.\n", - "This means that you can run multiple agents on the same thread.\n", - "In this example, we will create two agents and then call them both on the same thread." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "e06be1f6-07a5-4e93-8497-02473fc65d4f", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client\n", - "\n", - "client = get_client()\n", - "\n", - "openai_assistant = await client.assistants.create(graph_id=\"agent\", config={\"configurable\": {\"model_name\": \"openai\"}})\n", - "\n", - "# There should always be a default assistant with no configuration\n", - "assistants = await client.assistants.search()\n", - "default_assistant = [a for a in assistants if not a['config']][0]" - ] - }, - { - "cell_type": "markdown", - "id": "4f10d346-69e6-44f4-8ff0-ef539ba938df", - "metadata": {}, - "source": [ - "We can see that these agents are different" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3898ca35-eb2c-4b12-97ea-e0cc6a7c6a2e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'assistant_id': '13ecc353-a9a9-474b-a824-b6a343cd74b1',\n", - " 'graph_id': 'agent',\n", - " 'config': {'configurable': {'model_name': 'openai'}},\n", - " 'created_at': '2024-05-21T16:22:59.258447+00:00',\n", - " 'updated_at': '2024-05-21T16:22:59.258447+00:00',\n", - " 'metadata': {}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "openai_assistant" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "a8fa67b2-cb4f-43d3-a1fc-f8b3936c16b6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca',\n", - " 'graph_id': 'agent',\n", - " 'config': {},\n", - " 'created_at': '2024-05-18T00:19:39.688822+00:00',\n", - " 'updated_at': '2024-05-18T00:19:39.688822+00:00',\n", - " 'metadata': {'created_by': 'system'}}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "default_assistant" - ] - }, - { - "cell_type": "markdown", - "id": "5e655e61-c2ee-488a-90f6-6189c84841da", - "metadata": {}, - "source": [ - "We can now run it on the OpenAI assistant first." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "68ed7a1b-74be-4560-8c55-c76d49d3d348", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "StreamPart(event='metadata', data={'run_id': 'f90b3029-8669-4d70-976c-b70368e355d8'})\n", - "StreamPart(event='updates', data={'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'}, 'type': 'ai', 'name': None, 'id': 'run-9801a5ba-2f3c-43de-89cf-c740debf36fc', 'example': False, 'tool_calls': [], 'invalid_tool_calls': []}]}})\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(thread['thread_id'], openai_assistant['assistant_id'], input=input, stream_mode='updates'):\n", - " print(event)" - ] - }, - { - "cell_type": "markdown", - "id": "c53709e9-ddb2-4429-9042-456eb6c91244", - "metadata": {}, - "source": [ - "Now, we can run it on a different Anthropic-based assistant." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "666d78f1-019a-433e-839e-52d2ebb3d9c8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "StreamPart(event='metadata', data={'run_id': 'c3521302-48ae-4c29-a0f2-5eb865cbc6d7'})\n", - "StreamPart(event='updates', data={'agent': {'messages': [{'content': \"I am an AI assistant created by Anthropic to be helpful, harmless, and honest. I don't actually have a physical form or visual representation - I exist as a language model trained to have natural conversations.\", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-4d05ffd7-0505-43e1-a068-0207c56b7665', 'example': False, 'tool_calls': [], 'invalid_tool_calls': []}]}})\n", - "StreamPart(event='end', data=None)\n" - ] - } - ], - "source": [ - "input = {\"messages\": [{\"role\": \"user\", \"content\": \"and you?\"}]}\n", - "async for event in client.runs.stream(thread['thread_id'], default_assistant['assistant_id'], input=input, stream_mode='updates'):\n", - " print(event)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4c26df68-c447-4a88-bc94-59df42b117b5", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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/python/notebooks/stream_messages.ipynb b/examples/python/notebooks/stream_messages.ipynb deleted file mode 100644 index 2aed7967..00000000 --- a/examples/python/notebooks/stream_messages.ipynb +++ /dev/null @@ -1,389 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to stream messages from your graph\n", - "\n", - "There are multiple different streaming modes.\n", - "\n", - "- `values`: This streaming mode streams back values of the graph. This is the **full state of the graph** after each node is called.\n", - "- `updates`: This streaming mode streams back updates to the graph. This is the **update to the state of the graph** after each node is called.\n", - "- `messages`: This streaming mode streams back messages - both complete messages (at the end of a node) as well as **tokens** for any messages generated inside a node. This mode is primarily meant for powering chat applications.\n", - "\n", - "\n", - "This notebook covers `streaming_mode=\"messages\"`.\n", - "\n", - "In order to use this mode, the state of the graph you are interacting with MUST have a messages key that is a list of messages.\n", - "Eg, the state should look something like:\n", - "\n", - "```python\n", - "from typing import TypedDict, Annotated\n", - "from langgraph.graph import add_messages\n", - "from langchain_core.messages import AnyMessage\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list[AnyMessage], add_messages]\n", - "```\n", - "\n", - "OR it should be an instance or subclass of `from langgraph.graph import MessageState` (`MessageState` is just a helper type hint equivalent to the above).\n", - "\n", - "With `stream_mode=\"messages\"` two things will be streamed back:\n", - "\n", - "- It outputs messages produced by any chat model called inside (unless tagged in a special way)\n", - "- It outputs messages returned from nodes (to allow for nodes to return `ToolMessages` and the like" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "521d975b-e94b-4c37-bfa1-82d969e2a4dc", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "27a1392b-86c3-464e-99a8-90ffc965f3ec", - "metadata": {}, - "outputs": [], - "source": [ - "client = get_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "714e9f92-86b4-4cd8-9d68-cfc45d56ed2c", - "metadata": {}, - "outputs": [], - "source": [ - "assistant_id = \"agent\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "56aa5159-5583-4134-9210-709b969bda6f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'thread_id': 'e1431c95-e241-4d1d-a252-27eceb1e5c86',\n", - " 'created_at': '2024-06-21T15:48:59.808924+00:00',\n", - " 'updated_at': '2024-06-21T15:48:59.808924+00:00',\n", - " 'metadata': {}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "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": [ - "runs = await client.runs.list(thread['thread_id'])\n", - "runs" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "040795c6-5d9f-4729-9132-f3b0f94d9e94", - "metadata": {}, - "outputs": [], - "source": [ - "# Helper function for formatting messages\n", - "\n", - "def format_tool_calls(tool_calls):\n", - " if tool_calls:\n", - " formatted_calls = []\n", - " for call in tool_calls:\n", - " formatted_calls.append(f\"Tool Call ID: {call['id']}, Function: {call['name']}, Arguments: {call['args']}\")\n", - " return \"\\n\".join(formatted_calls)\n", - " return \"No tool calls\"" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "7da70e20-1a4e-4df2-b996-1927f474c835", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Metadata: Run ID - 1ef2fe5c-6a1d-6575-bc09-d7832711c17e\n", - "--------------------------------------------------\n", - "Invalid Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: \n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': ''}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': 'current'}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': 'current weather'}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': 'current weather in'}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': 'current weather in San'}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': 'current weather in San Francisco'}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': 'current weather in San Francisco'}\n", - "--------------------------------------------------\n", - "Tool Calls:\n", - "Tool Call ID: call_cg14F20jMBqWYrNgEkdWHwB3, Function: tavily_search_results_json, Arguments: {'query': 'current weather in San Francisco'}\n", - "Response Metadata: Finish Reason - tool_calls\n", - "--------------------------------------------------\n", - "--------------------------------------------------\n", - "AI: The\n", - "--------------------------------------------------\n", - "AI: The current\n", - "--------------------------------------------------\n", - "AI: The current weather\n", - "--------------------------------------------------\n", - "AI: The current weather in\n", - "--------------------------------------------------\n", - "AI: The current weather in San\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is over\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of \n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F).\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-s\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-south\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at \n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 k\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph).\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at \n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%,\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is \n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles).\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The UV\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The UV index\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The UV index is\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The UV index is \n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The UV index is 3\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The UV index is 3.\n", - "--------------------------------------------------\n", - "AI: The current weather in San Francisco is overcast with a temperature of 13.9°C (57.0°F). The wind is blowing from the south-southwest at 6.9 mph (11.2 kph). The humidity is at 81%, and the visibility is 16 km (9 miles). The UV index is 3.\n", - "Response Metadata: Finish Reason - stop\n", - "--------------------------------------------------\n" - ] - } - ], - "source": [ - "input = {\"messages\": [{\"role\": \"user\", \"content\": \"whats the weather in sf\"}]}\n", - "config = {\"configurable\": {\"model_name\": \"openai\"}}\n", - "\n", - "async for event in client.runs.stream(thread['thread_id'], assistant_id, input=input, config=config, stream_mode='messages'):\n", - " if event.event == 'metadata':\n", - " print(f\"Metadata: Run ID - {event.data['run_id']}\")\n", - " print(\"-\" * 50)\n", - " elif event.event == 'messages/partial':\n", - " for data_item in event.data:\n", - " if 'role' in data_item and data_item['role'] == 'user':\n", - " print(f\"Human: {data_item['content']}\")\n", - " else:\n", - " tool_calls = data_item.get('tool_calls', [])\n", - " invalid_tool_calls = data_item.get('invalid_tool_calls', [])\n", - " content = data_item.get('content', \"\")\n", - " response_metadata = data_item.get('response_metadata', {})\n", - "\n", - " if content:\n", - " print(f\"AI: {content}\")\n", - " \n", - " if tool_calls:\n", - " print(\"Tool Calls:\")\n", - " print(format_tool_calls(tool_calls))\n", - " \n", - " if invalid_tool_calls:\n", - " print(\"Invalid Tool Calls:\")\n", - " print(format_tool_calls(invalid_tool_calls))\n", - "\n", - " if response_metadata:\n", - " finish_reason = response_metadata.get('finish_reason', 'N/A')\n", - " print(f\"Response Metadata: Finish Reason - {finish_reason}\")\n", - " print(\"-\" * 50)\n", - " " - ] - } - ], - "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/python/notebooks/stream_updates.ipynb b/examples/python/notebooks/stream_updates.ipynb deleted file mode 100644 index 199dd3f7..00000000 --- a/examples/python/notebooks/stream_updates.ipynb +++ /dev/null @@ -1,173 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to stream updates from your graph\n", - "\n", - "There are multiple different streaming modes.\n", - "\n", - "- `values`: This streaming mode streams back values of the graph. This is the **full state of the graph** after each node is called.\n", - "- `updates`: This streaming mode streams back updates to the graph. This is the **update to the state of the graph** after each node is called.\n", - "- `messages`: This streaming mode streams back messages - both complete messages (at the end of a node) as well as **tokens** for any messages generated inside a node. This mode is primarily meant for powering chat applications.\n", - "\n", - "\n", - "This notebook covers `streaming_mode=\"updates\"`." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "521d975b-e94b-4c37-bfa1-82d969e2a4dc", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "27a1392b-86c3-464e-99a8-90ffc965f3ec", - "metadata": {}, - "outputs": [], - "source": [ - "client = get_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "230c0464-a6e5-420f-9e38-ca514e5634ce", - "metadata": {}, - "outputs": [], - "source": [ - "assistant_id = \"agent\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "56aa5159-5583-4134-9210-709b969bda6f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'thread_id': '979e3c89-a702-4882-87c2-7a59a250ce16',\n", - " 'created_at': '2024-06-21T15:22:07.453100+00:00',\n", - " 'updated_at': '2024-06-21T15:22:07.453100+00:00',\n", - " 'metadata': {}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "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": [ - "runs = await client.runs.list(thread['thread_id'])\n", - "runs" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "7da70e20-1a4e-4df2-b996-1927f474c835", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Receiving new event of type: metadata...\n", - "{'run_id': 'cfc96c16-ed9a-44bd-b5bb-c30e3c0725f0'}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'agent': {'messages': [{'content': [{'id': 'toolu_0148tMmDK51iLQfG1yaNwRHM', 'input': {'query': 'weather in los angeles'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-1a9d32b0-7007-4a36-abde-8df812a0ed94', 'example': False, 'tool_calls': [{'name': 'tavily_search_results_json', 'args': {'query': 'weather in los angeles'}, 'id': 'toolu_0148tMmDK51iLQfG1yaNwRHM'}], 'invalid_tool_calls': []}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'action': {'messages': [{'content': '[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'Los Angeles\\', \\'region\\': \\'California\\', \\'country\\': \\'United States of America\\', \\'lat\\': 34.05, \\'lon\\': -118.24, \\'tz_id\\': \\'America/Los_Angeles\\', \\'localtime_epoch\\': 1716062239, \\'localtime\\': \\'2024-05-18 12:57\\'}, \\'current\\': {\\'last_updated_epoch\\': 1716061500, \\'last_updated\\': \\'2024-05-18 12:45\\', \\'temp_c\\': 18.9, \\'temp_f\\': 66.0, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Overcast\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/122.png\\', \\'code\\': 1009}, \\'wind_mph\\': 2.2, \\'wind_kph\\': 3.6, \\'wind_degree\\': 10, \\'wind_dir\\': \\'N\\', \\'pressure_mb\\': 1017.0, \\'pressure_in\\': 30.02, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 65, \\'cloud\\': 100, \\'feelslike_c\\': 18.9, \\'feelslike_f\\': 66.0, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 6.0, \\'gust_mph\\': 7.5, \\'gust_kph\\': 12.0}}\"}]', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'tavily_search_results_json', 'id': 'a36e8cd1-0e96-4417-9c15-f10a945d2b42', 'tool_call_id': 'toolu_0148tMmDK51iLQfG1yaNwRHM'}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: data...\n", - "{'agent': {'messages': [{'content': 'The weather in Los Angeles is currently overcast with a temperature of around 66°F (18.9°C). There are light winds from the north at around 2-3 mph. The humidity is 65% and visibility is good at 9 miles. Overall, mild spring weather conditions in LA.', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-d5c1c2f0-b12d-41ce-990b-f36570e7483d', 'example': False, 'tool_calls': [], 'invalid_tool_calls': []}]}}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: end...\n", - "None\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "input = {\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in la\"}]}\n", - "async for chunk in client.runs.stream(thread['thread_id'], assistant_id, input=input, stream_mode=\"updates\", ):\n", - " print(f\"Receiving new event of type: {chunk.event}...\")\n", - " print(chunk.data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "53800469-354a-4739-8e77-b88044c772d5", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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": 5 -} diff --git a/examples/python/notebooks/stream_values.ipynb b/examples/python/notebooks/stream_values.ipynb deleted file mode 100644 index 1286fae6..00000000 --- a/examples/python/notebooks/stream_values.ipynb +++ /dev/null @@ -1,212 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to stream values from your graph\n", - "\n", - "There are multiple different streaming modes.\n", - "\n", - "- `values`: This streaming mode streams back values of the graph. This is the **full state of the graph** after each node is called.\n", - "- `updates`: This streaming mode streams back updates to the graph. This is the **update to the state of the graph** after each node is called.\n", - "- `messages`: This streaming mode streams back messages - both complete messages (at the end of a node) as well as **tokens** for any messages generated inside a node. This mode is primarily meant for powering chat applications.\n", - "\n", - "\n", - "This notebook covers `streaming_mode=\"values\"`." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "521d975b-e94b-4c37-bfa1-82d969e2a4dc", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph_sdk import get_client" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "27a1392b-86c3-464e-99a8-90ffc965f3ec", - "metadata": {}, - "outputs": [], - "source": [ - "client = get_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "230c0464-a6e5-420f-9e38-ca514e5634ce", - "metadata": {}, - "outputs": [], - "source": [ - "assistant_id = \"agent\"" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "7da70e20-1a4e-4df2-b996-1927f474c835", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Receiving new event of type: metadata...\n", - "{'run_id': 'f08791ce-0a3d-44e0-836c-ff62cd2e2786'}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: values...\n", - "{'messages': [{'role': 'human', 'content': 'whats the weather in la'}]}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: values...\n", - "{'messages': [{'content': 'whats the weather in la', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'faa15565-8823-4aa1-87af-e21b40526fae', 'example': False}, {'content': [{'id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g', 'input': {'query': 'weather in los angeles'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-3fe1db7a-6b8d-4d83-ba07-8657190ad811', 'example': False, 'tool_calls': [{'name': 'tavily_search_results_json', 'args': {'query': 'weather in los angeles'}, 'id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g'}], 'invalid_tool_calls': []}]}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: values...\n", - "{'messages': [{'content': 'whats the weather in la', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'faa15565-8823-4aa1-87af-e21b40526fae', 'example': False}, {'content': [{'id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g', 'input': {'query': 'weather in los angeles'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-3fe1db7a-6b8d-4d83-ba07-8657190ad811', 'example': False, 'tool_calls': [{'name': 'tavily_search_results_json', 'args': {'query': 'weather in los angeles'}, 'id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g'}], 'invalid_tool_calls': []}, {'content': '[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'Los Angeles\\', \\'region\\': \\'California\\', \\'country\\': \\'United States of America\\', \\'lat\\': 34.05, \\'lon\\': -118.24, \\'tz_id\\': \\'America/Los_Angeles\\', \\'localtime_epoch\\': 1716310320, \\'localtime\\': \\'2024-05-21 9:52\\'}, \\'current\\': {\\'last_updated_epoch\\': 1716309900, \\'last_updated\\': \\'2024-05-21 09:45\\', \\'temp_c\\': 16.7, \\'temp_f\\': 62.1, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Overcast\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/122.png\\', \\'code\\': 1009}, \\'wind_mph\\': 8.1, \\'wind_kph\\': 13.0, \\'wind_degree\\': 250, \\'wind_dir\\': \\'WSW\\', \\'pressure_mb\\': 1015.0, \\'pressure_in\\': 29.97, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 65, \\'cloud\\': 100, \\'feelslike_c\\': 16.7, \\'feelslike_f\\': 62.1, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 5.0, \\'gust_mph\\': 12.5, \\'gust_kph\\': 20.2}}\"}]', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'tavily_search_results_json', 'id': '0d5dab31-5ff8-4ae2-a560-bc4bcba7c9d7', 'tool_call_id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g'}]}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: values...\n", - "{'messages': [{'content': 'whats the weather in la', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'faa15565-8823-4aa1-87af-e21b40526fae', 'example': False}, {'content': [{'id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g', 'input': {'query': 'weather in los angeles'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-3fe1db7a-6b8d-4d83-ba07-8657190ad811', 'example': False, 'tool_calls': [{'name': 'tavily_search_results_json', 'args': {'query': 'weather in los angeles'}, 'id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g'}], 'invalid_tool_calls': []}, {'content': '[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'Los Angeles\\', \\'region\\': \\'California\\', \\'country\\': \\'United States of America\\', \\'lat\\': 34.05, \\'lon\\': -118.24, \\'tz_id\\': \\'America/Los_Angeles\\', \\'localtime_epoch\\': 1716310320, \\'localtime\\': \\'2024-05-21 9:52\\'}, \\'current\\': {\\'last_updated_epoch\\': 1716309900, \\'last_updated\\': \\'2024-05-21 09:45\\', \\'temp_c\\': 16.7, \\'temp_f\\': 62.1, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Overcast\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/122.png\\', \\'code\\': 1009}, \\'wind_mph\\': 8.1, \\'wind_kph\\': 13.0, \\'wind_degree\\': 250, \\'wind_dir\\': \\'WSW\\', \\'pressure_mb\\': 1015.0, \\'pressure_in\\': 29.97, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 65, \\'cloud\\': 100, \\'feelslike_c\\': 16.7, \\'feelslike_f\\': 62.1, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 5.0, \\'gust_mph\\': 12.5, \\'gust_kph\\': 20.2}}\"}]', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': 'tavily_search_results_json', 'id': '0d5dab31-5ff8-4ae2-a560-bc4bcba7c9d7', 'tool_call_id': 'toolu_01E5mSaZWm5rWJnCqmt63v4g'}, {'content': 'Based on the weather API results, the current weather in Los Angeles is overcast with a temperature of around 62°F (17°C). There are light winds from the west-southwest around 8-13 mph. The humidity is 65% and visibility is good at 9 miles. Overall, mild spring weather conditions in LA.', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-4d6d4c23-5aad-4042-b0d9-19407a9e08e3', 'example': False, 'tool_calls': [], 'invalid_tool_calls': []}]}\n", - "\n", - "\n", - "\n", - "Receiving new event of type: end...\n", - "None\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "input = {\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in la\"}]}\n", - "thread = await client.threads.create()\n", - "async for chunk in client.runs.stream(thread['thread_id'], assistant_id, input=input):\n", - " print(f\"Receiving new event of type: {chunk.event}...\")\n", - " print(chunk.data)\n", - " print(\"\\n\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "43e4432d-e96c-4ae4-8085-866fb57bbcb3", - "metadata": {}, - "source": [ - "If we want to just get the final result, we can use this endpoint and just keep track of the last value we received" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d2560481-d161-4d4f-b385-4977696c4aa1", - "metadata": {}, - "outputs": [], - "source": [ - "input = {\"messages\": [{\"role\": \"human\", \"content\": \"whats the weather in la\"}]}\n", - "thread = await client.threads.create()\n", - "final_answer = None\n", - "async for chunk in client.runs.stream(thread['thread_id'], assistant_id, input=input):\n", - " if chunk.event == \"values\":\n", - " final_answer = chunk.data" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "9c2d60ea-450f-45cd-b867-0cbb162528f6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [{'content': 'whats the weather in la',\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'human',\n", - " 'name': None,\n", - " 'id': 'e78c2f94-d810-42fc-a399-11f6bb1b1092',\n", - " 'example': False},\n", - " {'content': [{'id': 'toolu_01SBMoAGr4U9x3ibztm2UUom',\n", - " 'input': {'query': 'weather in los angeles'},\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-80767ab8-09fc-40ec-9e45-657ddef5e0b1',\n", - " 'example': False,\n", - " 'tool_calls': [{'name': 'tavily_search_results_json',\n", - " 'args': {'query': 'weather in los angeles'},\n", - " 'id': 'toolu_01SBMoAGr4U9x3ibztm2UUom'}],\n", - " 'invalid_tool_calls': []},\n", - " {'content': '[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'Los Angeles\\', \\'region\\': \\'California\\', \\'country\\': \\'United States of America\\', \\'lat\\': 34.05, \\'lon\\': -118.24, \\'tz_id\\': \\'America/Los_Angeles\\', \\'localtime_epoch\\': 1716310320, \\'localtime\\': \\'2024-05-21 9:52\\'}, \\'current\\': {\\'last_updated_epoch\\': 1716309900, \\'last_updated\\': \\'2024-05-21 09:45\\', \\'temp_c\\': 16.7, \\'temp_f\\': 62.1, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Overcast\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/122.png\\', \\'code\\': 1009}, \\'wind_mph\\': 8.1, \\'wind_kph\\': 13.0, \\'wind_degree\\': 250, \\'wind_dir\\': \\'WSW\\', \\'pressure_mb\\': 1015.0, \\'pressure_in\\': 29.97, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 65, \\'cloud\\': 100, \\'feelslike_c\\': 16.7, \\'feelslike_f\\': 62.1, \\'vis_km\\': 16.0, \\'vis_miles\\': 9.0, \\'uv\\': 5.0, \\'gust_mph\\': 12.5, \\'gust_kph\\': 20.2}}\"}]',\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'tool',\n", - " 'name': 'tavily_search_results_json',\n", - " 'id': 'af25e94a-c119-48c3-bbd3-096e42f472ac',\n", - " 'tool_call_id': 'toolu_01SBMoAGr4U9x3ibztm2UUom'},\n", - " {'content': 'Based on the weather API results, the current weather in Los Angeles is overcast with a temperature of around 62°F (17°C). There are light winds from the west-southwest around 8-13 mph. The humidity is 65% and visibility is good at 9 miles. Overall, mild spring weather conditions in LA.',\n", - " 'additional_kwargs': {},\n", - " 'response_metadata': {},\n", - " 'type': 'ai',\n", - " 'name': None,\n", - " 'id': 'run-b90f0037-e56a-4f3b-ad92-00d10d079a9e',\n", - " 'example': False,\n", - " 'tool_calls': [],\n", - " 'invalid_tool_calls': []}]}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_answer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "39cedbff-0a7f-4a3e-bfc1-595797358769", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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": 5 -} diff --git a/static/agent_ui.png b/static/agent_ui.png index 0c90e3a5d45590ebefa713ed117a5f16f0ce2c0f..372ab22b11fe69bc30f6992f7e7bdcdc084c0f8f 100644 GIT binary patch literal 133968 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 E00`_?FaQ7m literal 179395 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�sp{v^5lyDpd#lc{Zmr`QI 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 z

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 diff --git a/static/assistants.png b/static/assistants.png deleted file mode 100644 index 39fedfe6e6bd8b0338549dbf7d297cb2cd8d9e40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44379 zcmeFa2UJs8+cvD&MZ^ZEG!+#UA<}yp6;Y(9h$t;80wRRaTOg59L8*2?N>HQ-0#ZXw zPz0n)?}Xk$2oOj}{|?SLGtY2lzHj~i|NiTJ*N1Ddi0re^Zuj2%+Sk7BJ5Med=cGz9L?si>YPsIujle%>We%o5g3+A+(WsRDb z3h)tT?RM*c7tF!YRmDsF(2plnfX~Z+h8#NZ;}JJ|^+VV7FC91ocdu~-?Ib%Q$KXq&CN*#0`c_pl=767g1gv4q?MJGA*W;@GBT3D6Oyjp zj&8TSBpqGFetXH!_nftMwQ{j@a*pVT1v*+|s~Y5w zLDSeu5$?OWW{uXG3uk}1>a}*d&+n=6Xe@*dRqT`F;gQ?uzlG=6&Zd34PJJ^AgGZh{ zYH~4rzubu|gEr&ORtq9W*6JJR>0Wx4qP(>??R?qe{k3-|dA=TXC-}IC9}P-6YqMQk zZ_hfFs9!GK{bELL?(@uaw}DUgA;`P(y391vQg0BvZ`i9da+U~Ygd2w1W;Wb{Yq{2M z-f=+d{+hphKyUT0F|5d(6L8U5mzu33pmJs7$D$cTVFukgm|0+#Euhdlbo1#0T9V zoeVi#UW*Ufh^$s*Z1>y`XKTOO0@mjv>z{uoX|~4l8#>Uf1EcrwFrRNwarnJQ{-ahe zlgi%5L2EwZ=1c=W^8wGbdBOhSx#RNU=iYA1ygSg*TZEBAJ-NK|Zw9iQZ%5uM`K)BE z028@cE711P0CT7zMeURRk81pAg#SA(F5El0{UCk+5`DiclNlGabN9+JkDWL$E1{d< zzjE-k{=Kj&hXLxy3&XDu=d6Oi++F$N1DC?MbR=i(VX)BpXhj`YSJ%rJNwfT~Y!;)1 zatGhu-u{-q*zRxE3_)04!MC=$-E_^(&3*4q=zyPRjH2-wIb0wOmDx41PzKpD zJl5-HvM^&TaK=z*R~1!V$}v_s!Qw9FU6!;T!|~fdz~0tVr(SDNS|*I}5|)1M)?psi zLlw^5DbJ+6zLzbSYGOH9^8*F<+EQ~l@3h0;Q}?#cb}3meeL6q&0!Ckmwi*i|eGL=t zX+h#kiS51a!XUPC%+}w4ml@~fYuD>NK3%|~hHA0l0oci5gc|Zw7{B<>4{BVxio0Sn{P-}K@8vv zhHCcu(Ib@>Ta8-G!iAJ&W};j@>6E@l0+xFkH5hs^Zq1(}6;Z!jH8H7*%(Ai?4~umk z4pkfpD7wjJ>d}%4Xs;*j`cf_@+$MJC%}qQ%;;cPJ?;`qd8mmwq*V79Y^_@kUqgc7; zlh#m4cuj-qUR*|o?KVLVm;7R|8JsNuj9q4G>Insy4@3k?zkc*R&F;+WnyW-={Kcb%V5`QV)qFuI@Y~<@!&-uYVTO+ z5>uc#Kiv#-7Ommey=VktiL-V)mn|j=8||AzVscA8c0C#=*kSH!(d%5r>l!C7Z(-Hg zUs~wm@`-xiC41mpcIaN|Lk()=j|)mPapjDU4w`2QvxmxEw6(P}GS`7E?$>^p0cxhO zU^=^YSUfo5eNy!y5yf67zXs2`PUozNXOFUAJ^2%T#h#|PcXN--5g5n5+Y1v-(zm`u zG~1PS1-M6HSW|@3!idFB;w#2eNnwME`mCz=((GN|!H6uEQHiD;+sx|)vv1vW;jd9O z#zxI$q+iK6ekj`aMhT-qb#Att*E+g|mDgb@(2}Gd>d(U?ZP)z%Iu3b8uXN^(5~<|E z-1l_~`gL&!n#m`fkid_dZ0EjBwC(_yfGzHXmvi?%Fwe$>^f zx3k5noW3}@&^t}s#Jg`-s05O4xH2@{7Rh#_TVSCl&EjANR1?E5j!U(1m)v`8V78$dHM&{z3k3EtvN(a z!&;`$pSnZPB@0jeo^Ov$=*Cr@@txcbQ z>U?_f8XJ z346{rv2eUJ@VOF%tdG5sV^h^z=xX(4DNA}ZRifp18AL8asr5rQSgpuhIz%4a?fGgd zm0eqpd5_Z9*S~CH5)tKM=2CuA!FLg4{|QUgx*%@1xVWgpS5*)4(wEU%)%uf?idw@* zR+!#_OS-_ma>ZwV<>{3h?10!-V0SDs_Fz4Z@K9OV&b3_Vmt`~U>X(fUluPVi;vpz3 zz1Sa2*abF6cW!8(p&9L|nFTiJ-GnOSS2LB^m7CHUe?#2?lOB}7I7Osoa9(>IE-j3M ze+SPqc2Rx&0pz_-FE?0r(Zc6?gwuvnk>j3wFEo{9BCIh>?0AAoO#H84MI?wn1;EH6 zeyobR2`X?QAOdHcYn{)mSyu~jM9ABe7N6?JcevejZyJs;v^34tUkBE59jT`$zd!TM zfkahCmvjN>W}G6$ynsCezz?Elo}G$^p5rWyie-fJAn@Jrf{6V8^k;z;6HkUD(Qkw4$~G z&|=~9K82Ny@jnfi!08iHAa8v60e}{IqA|C?pvC{4g0zs`=$3mxS5cNqTD^%LFijzJh0Y&BC&`Z z-_Bdmw}L5RD<`?uK*E-*XXgW;7H*mM9?!Hr7x7_hk)s`3#ApH zvvR@?oL|2lsq-!ova-7Vy9AVM*5Sm_zK4#6h?)(BSAmurRd$)1X=-L>MINhf>g_dm z`)Zc&@Px&nCKIc%>FMcb@BlVC=aRk-^Bzhmd5`_@VX|!OuASWlLVG6uDWz5uXJNYm zY`;JJebOJgtFpe3kulMiCKV8;bU2KJFz;1yJy-nQQQOK2fRRr>^GK)Mx_Q!XI=Lws zYf?g=su3bSuLvH_y)0%m8}C1vhxFz66>2%Pr5f9Dw1Y)1kfc)vbDV2tZ#`=j?^&2s ztg73Ge_V2_d1~PG92r1QL?i}{T%WPpoxMc`;qP>?xv6Ug+_NdI95 zoL*PwF6)RYLw?8w{TJG5js=7C7*b@`@a-lsZmXVrSW~elDHo|d%w0%v>?^96XiBj9 z@(_~P;*-NekbyJWIuNc9!mX9Nr<220H=hB|`Pspyr7sYx(HfI?wvCoqPJ?GAU-qBm zyi7}a?~mUwj*`S`(6YU#v7SSNfuc1E$qf66*i_up=Qe<2IW3W)USlXvd- zelhemP#~XR_VHB8txH9^@a)Im_SwelJ7b{q_PPleRI52RP_CRAD>o7)Ym*dg<2zbA zURjWpTotfLXqhbR>fsfUIlSM5d7?5@P_&WBoLngO#a+)=>xr4kd^2Ak>Dt&EsY&|0 zG-Q`B^gI}%o4jx|ZSklXyS0BEA-l!5QH3#GurzeBdBBM>ePhy_4ZRSNmQmp~}23<$pOz|@-H-P(P zP{@H<27wrJVP#_c$a(+`^YLj%>(1!x-2t*kSm^`Xe!?YyF=|VjX=YuQokxHH{7|in zgp8EbkHk~`@BE>#j$swIYrm{44}g!Gr(v+5nGG@}z;lg`>)u_ocDD=ZKL)bn?fAB3 z+MczHZ}^vCi%Ep~vHeTNSKXdys0Y|Ex#LVCl-wU(8ku-mo}b{&RuGH-L+L-=z2$c z`>vj7#mbpdGnve-GePmRAt0KExF6#KsD z+Lu7BK<$o3b0W^mlrYnQNdQn&PRVm)(5q1^molKm1_!pV?gcEK@96u6ySR+W8|*;= zx!i_(>e=&wpWyuf9&NTKyK@jZTIql zO@d9k0mQ7Q1JYQ386fFZ*E(5qkQwq{k?pU5*(SW!31qSenGd9FKmx!x%bPrQ*U?c* z<;yB9y-G{3($cH6^#5C0`gWfuC+pJUK?1PlbRJ|J7FK|Dzuf2w9Ic4oIYdlH#rL=9 z+BOI@|6~q*W^|68s;KfYHTq=hGd&it9@Q^uK7SCa>Uq}K*uAy2RjAsI4nmYFO>vR> zXg0nx8JxW9FppEQ8i|UCVI+%g&D%pXkyEG~sgAJWpO55&*6TItW9t@z2@v^77gi78W)&uxg&1&e=8)2%?nAbtLwE zTSteev5+FjOD{Qc9Z^ig^sWhwSh+cA9S1H$btmoiaQW z*?rb)q-ynG+n2XC{ly{*iE^1V=?nVYL4Q9^kvIT0CY=_6oiZFpY9w?dsLN=9U9r)zgm(fWcYxo@nm~`dIgyB*S;&3u6 z8?}~8=kkFqjC^$}+?k1Tc)Wa@t5-G6?i62u9M{2jJtHrNMn5_YnTR0Mx}k z2I*6O8GZnv%$3W6*~tF{be~d_dF-mAz5Ns6dQ?~+qd(kFQZ*qxJ@1mDJIM6j?90W) zcX^+&h0j@7N8{N>N1n@mc9m{X_LBOfc`U?)b0pj~zk@@@+>4C8Q*0_}CE9dPR|Aw9C@v~{u z`;4E_(mMIgJTgLuhhF~r7TN?~I@03xLXiP3wg}U5w=#Kw(5U2{6>+wq#b5V74K~cB8<^aOJ z5!wN&!LZxv_F;M_gZqvb@G{__*~~n0PJ88%=f2iqZtufs)G;{l7&8p)w72;s7C5*q zpr7poTj(9u`r~gIO`c!*>i7lVG?mB+33GW=WnGjiB|0NXyKq zYm&NAqGTW_FSC(%f21X$ii(fmUT>0a`icV0op`n&@?gJ)VDdIm{tJHD`e>wUUCdl; zXO0Sggz6~sR)L!RYYPGAvSf9O$|%5addFBBmJ7W-(uTbbOchsvrk>zwUkt4WXSqx zfkU9=6!{_Ea&bs{R7yHAZc_6I3`fi-RkVI+X&&w{Dcy*z+;PNzXT6;*`lAkFxbye9)modnwr`x>)|lnnu6Ee~K z)q4g29Z%KqC`L!yV#uv>g9Z-_*#1pf9y@@Cu1L}+RSaJgt$pZ*dMt0>{vJQyQ)+J# zL}PSV20z&?o^%U(&9irDuB*Hg1BaH(*VInp%?SN9Z8%z$q7@)10K^$i^Rv9=B|Fia z)7|;*gx3=-$%e(qtsthXA^F2%T0CFCDY2-}8=M=yx(>gw&j?nXS-RDblaypX-Bqk; zVz8Yea>;5+%KgWQc*QsG+h4(l~y$lVvt#3@_Z6y2>f!TLIe z2qJtOuH!UfSJ#L(z|~TNt!s1YC)ugT@gd68x=hEQWGRxF>61{NT2y^n zxVjbJ-Q8`@5mW9gbk(_PY^g=+qmtnC;J({&q9i7v(WU!OKx}?F)tpJ`jQ1k;?CUz`&`ah3uCRBrvtOsU0xB)T8 zi4#EztVK`PqbsWeTrvl1ndP3-cB`9JX=gHssl^LR*Bz%1t+e3vn|+yFlIf}msXuOR z)6!=cbKzh3KS!lKlngUy8k>k3Ai`E_6#Zy2w1FeCHt<&~>{0!4K z?`$yv+t(fcjdG^Xl>e)kqnLu@^Yhsj{JQ}3LREK$->|GZYFr=ZD-TBB#vTLI8(BDa z#I)lL(PAp+co@N1_e~$){?p4B^Q}%dEzHa=PTys_PWMxhW5%Cjo7&rbZsu5l*ztOe zUsk|oIBFF(|7~Uc??Q?L3h8}_<-zSMm8OuocBM-eze`VF{6~TGnfP}yCyHCoxpxe| zv!~*o1O-WHXPN@{5<&Sk`vEGN8iq+ocgHWo=@Z4_HNvW(W<9*)Tgm;7B8hj2$Gc7Q zwPAhVQ&N>P1|IRMBr0xUc(6v%ysFa@UYkIfXy3E`dLbq^1TObIr3vmS&d0sNrkG5; zTgJNk;qx|VaAtRB%0#ooiK6W^XpW2QK1=qWSegt;1>x}Tmx+r%4M1A>RP|eM+6Rv= zzg{I1^xeDoCa#DwC?0joVy^0YB?@5ELicKXHX=8FdgccKZDwXO$_t9ikDPe=gtGMq z+TO+D3jl-KWxoI_icO!J&Vpd&ULa|d@-+m6LHIAp7S>fpsuo8-21t|FJ!Bb6kfv|q zQ@ZC51#~J7{Uyq8qN9ViJJr6H%tCS4x$0e*ygc`bVs}FO`3(1g*9*0A5v_{y^1_`$ zl9G~kee^}aW+ZJKL-_c&>9f4r$A_#3WTF?p6exS*`AQLO72kIUex36R4>q%HxGT_| ze%C<{j}??DIJi-MTS#I!OOD=34KjgRL?u{cdpXA_+`F?)MDA2+dpHRP5!jqznswaOJJA}fu}I}%)hw$jN-o|LUM%lv0d`qmb0fY55U+?p_j~p$ zt2*LXo93F~&@cq4Sd;%`q-bpfzDV-2IM{d*< zQ0!YsFQ8AQ4J$%eQZq#egE1d`cyb*5Mlq7gzUz3>a{jIwYeDw1S&w=PO1B%?1H%V@ zFiK9W0sw%RV-%a{F@79mpF3vapV}a@q?l14a}KR>)Ifc)b)g-oK?q{3Hx}#XIrvDR zBBxPfw|K1F$+3Fqj<&WoX`AWJ&O$5OUaw)E!nab9nwmz~F98ZkM0kyiqLqyWs<$azWw6`+$aXok+FwN%`D~LEpDJ!j{P`OFgKhNm<8O#dyT$| zXu)CHOJAj-$l>rxKo&o5OE9r<9F{kV!p(Hu<{mh~_{>2v3n zLr=b>4|OKCJ@c;b!H#}FuC!O($4xJCHqp%#o`1_?42Gloz-O%0r&r>KF#ToawSkC+ z+J5Mg^+$7>?!t7J1izH;vDoJ5QM60jOS#$N0cK`Jhd7j`N$79VX;ga2_6xLTkn% zBS-?ZuWbQ&wy_a*pX*GNAbDJUFH{Y7)!b!H8_=5E$?LyUi|$6;wD5RCx?zhJ7J&L* z*e}!&r!Jx1s0o6$YAoUp$tLEfe-B@(9gE;L7R}DcW~7{0J&eE6XJyai0o z=G3~u)U$MFX&CyuqtFlfnfm`B{XCFTI%uNz9^er~deSvBNGr&sC#7rr>jUyw z9)ghBNt;?}2%Ci@xE}S-N)(on$^x5OTlcuTyGI?z=n%EPt_vKF1R1sqTlQ>a>Z)8w z%glrv*Lnbgs4q=%#bR~gA0F%#U5SSMU6z?ca*M17$O`Yx1?-MNLGSdvBQ6~VTdBz# zOvRS>G^5fQsXkRy$P5V0bH8kGOYTfijZ~g6ou7x9dM}Ld54y%9hrT!OX|qtZS*D~i z^47_~*I$eHHo*fbDE_ErRttTXZf)j9WGi;1_G0f2m|Si;a*q%&rUItE128xD`&;;a z9y^bSJ6<$1fEt^O)FTl4?F$rH^KD>)1h-Tz8~?C&;hhZj5i-@$jpTi01$O=`ypnWX z2fFpgiaq_i_Ss+P-?Yy{z(LcFw+~eN{69en@jrmvPMw$7`pPVtT7i&YAJ1pA4YL@1 zl1)XPsJD(_0`VP7>(`$szNU@&rAiy!V)%G1it{LC`kKXp)bB2Y2e;4^m?NUMp)DB? z+-vhn<47y97f@{6P7bYh!x`K=JfJ|HI|`?CfgPHU3HulATsNF!)cAxa zn0@g1HV6t35FY_{%wD?^nt(BgN=9qo#qRT`aYfG_+#U`>O*_2+E{V`|eDtx< zjUX%9s5rnK<7{odf^0uQfa^d|GpG;XzZO;|Ex4pk8`-@q%6oST)N?W6Z|de&*eX(9 zMarv4c@-)D15&=oeR%O_EP(%G)a*qJ;-oDT%mx+<=qJXOw%pnzB_Nj?o0te4PY6ZXF}7xg<`3xsR>C*W9JQ8z{rNn z0!!uc;gykSzoo*GJ6g-gIqmy@53w^P04hxzVIVl8V`j~`Kgedu!dv`;STJW$9pm`- zFLLR0dP30f7|4!LqaQz#wD4Lmeh%zD@d$7me_Wl%3IuY`?%V)SMz1U``s9;zm|X^7 zbb3EmI)b9}!*1m@>#L!3AR6RGH@;*8JA2-+ zX?$U~3iC0rQFCw{->V&-B&T0NRUTm(WnrAT@y;xI-`-g&bmG)gAdfX>YVSM_-8Q(M z52QOb3#t1bo@R6eqJ+<6C`Mbm#hy8V|(MSh^^Wp6=hhGtd2y6D+j_VQJNX-c#T2nbuRvDQB*s3v8)S?pes z-_d);ydleUGwI5obaNH7Kcv0A^oO_LHN~Tz(;%$O8vpQL4v@Jl?FkKcVO`I?4`v?s zq3q|ku-7n}{jv!lP9FN9>`Yw&Z^6&1DPUL{@D_XzUs?=F%{cR}XzXDp76zlgvwRy2 zoKm0Ll~hOjffK$u@!1ziDKnJ9&baECpOfJK07gq0FHRN-(ma97o+B;Z{}5qA%Q|BC zwxMg)a*U0LkCp$Vjy@rQxWhj;5xJ~r?v{~2feM|DUG@k3P9FVmf_TE-R(|NOcJMnD zFmM3C(GLdhf}{bmH7=YB;&$c5m7V|pd$zyC>EJz`@MPtI0f_VQH|0iKzC+h829;#k z^TH3Hg#xjF-&g2}=_bbuxM}YTenv(u{`F1G&ClD@p}2#@2o$oo0qh>W=KM1EcQ_>4 zm1@ycY+|uZ-TAx_o?1}gJ{IEfwhwUd0bJw`J`lWpsl4nuz0)wk&@a<#vF(*|_mN@)5Yq4i7u^BG@1F6Po&Fo-)_2>Oom&$F2Uk;WZ`e2wp*#ZxXlEv;;^>8p` z_)+uCTsy$7?BipW*;T~QT%z-MY|b#H2ekvjqKp<$u?(xvztXaNY1ysLi&JgOZvE0O zBPm{U70@bxZmI~`C)>SGlf!g%ZqdgFrDbAOkmP34P)70ioeV0=Yw80!kKjoPAFCWX z5?q)$$XB=2C6BoXescC=IaFB%6!lczu ztC68TT-{~lTY+su-(-)cfTh=EHO928bMuAr+x^T9mn|%Wtt!JpV^uvWLlyg<3Qqk> zBg>9P4~>~6CA%k_3k}M%@2E_;`1&hf6u}m=NhDHWJVsVp5;^;s;mlfWITXd!i$igg zj<|A)isGalI;*>8Kokh;Yb=+?4gfTrxs#<{zLQo_PiJ_u072-28M4@us4I=)blXci z4}F!JuAK@K)YL%i1yruVCYIjHEQEcZSs`7Kvt;AYTObYSEDS{0w;~mX$k6jW`Hp?N z{OAjI9boR1Wy#vhrQV@C&evnfkb(mZQC^PbuJ!KDRl=He-tDb!q3Q_gSWWfk{&h9g zzY10>-2VDliCmY{JUoIPDag)dZ5yo#;;rT5<15611tIb^{b2^|!ttT(TB&gKNz3PN zjs|=6I+ZUf;{nIaig!Bvm4I^NohPZ^4)8z|a3KPsrQoInovMdhpt{M6HiGTe{gkv! z>X>DF`ARN$pmPtPBPWdvmM6?Tf>zeN$~@Z`S9*K!OJMWy(i`mKCi)lF;kX+(roMjj z)^jteq_5??nlFJ686B1g3%zIs`Hc#4U*BJNaT`!XNiP=J50#LQR-EC5ICNmH-?~&D z@Aj(y&dz7D4N9^BF;1tmGQfDym!V~Wu9m8H-(+p;^aSdcY9bm#ovjSRc?ccJEv`8j zQMEhgzOb_e*bXe6zadD=(|9NK?R1-^jT= zQ06cE1v~O}?YfP*s+{xO>OQT)lgH^G2<+Gme*<(g;@A_i41Oe9-rl1wR#g%3#uhZn zD3XcgVxArjIun};;?z_o4RLBsS`Z2IH8L`4ZELem>J`Zo*vV@fNe8);QaZtPL>_QB zTt7u1@Fqut1`1#nF9+#ZyaUEiEfJPc^Rk~Hn_jH^V&xhS?D#tI>GE5xml0@UTn1Pvr;e+&!}{Av>E;2XV7(Qt^jg-p>PaF4V{_Yp{?Q1_Bj|h;J`SxH)06Ac*{T z*TDov!IA?`^>#U$RO9OdHwpA#jyngZ2+zp%Z#OXpbLuSXD*96sC6MA=UlDJ0J{L*-Tz+LUwsGnoCAsJ=Wq7|qI&JG&fDJm9N9&FP6vpTb2tWWDn6jG@_2cm_7${4OEO+a*49_t zW4ber!kB?!#xlSz?6s7+ffxwXufrFI8&qwph#1ZROFFUEndC>U`gH@@iZ*ZkVR))7 z&1!z+qSeT^%X34)xUfy*^}+jOZE|IiY})uxQZ$y&1nTF`981JkSa>#8o0AxGtwx&m z9i)Cy7KhlksrQJ9h2}ulC%YX7HaDL>pYm4sz|-%D%fCDoIlTGG866+^7Ou5d4;*`# zdjHU`DF@aHp4UnIu#~)8YsVqsU8n0&*ca;Xql!4j>-rfRLy9uGv6$K~OY9x5tHYB0 z8ha6Sv#BOH8?RwOyxeptwXlj79+{*$xW#b4$n1Tw(ij8C@tl~%)kR)5sk$UhCG?xi)n$yp#=Eo zBZ%*u6Hw1PKD2bWpR3ovx^N*E?pbXqmuG`phbh#q@sjdUDNmY0F_@gck9&Hy3=V{S zDSsl4wDRh+=eTW~WaDS64UsPNlQ_{>-}#3$5{CjW*LQSzaeUgoDA0n@O`M!a$jnt$=C!+ZWk7r}S%T#a#t z%d5eSiUor}khc+Xjh-fJGULIq|7{9S(=AH47;29nC10fG$o| z%Rz_c1~zFrRZvX>MHEVgMyq)6jDBhW8O>oDu~frQjGBc~O1Hhz$kQ_c1oQEt7Fa3l z%Xn22k}+dHVo9D|dE@@cek;(Ur1?$4azY#mPEdn6$jdXXPND@2hao22F2aX3hh}v2 z{P8eHmVJ5bjBmuC1e85Ln;lV_s~;yq^29NCbwp_QZ{aSQ-!5oNca)ED`VtYash5K- zmxOz#4JJZVXSR{05Luif6f`zb5qijlMZn)w8Yo*AQ4gvuQRGU-lZzg_VHQ+rIMSO# zqVdy7<+lPYU6-1-i0fg-^XsAW_tymswmrO$NN`6v!Ja!QVn_uvvip@x? zjTcsJtHLg6m&<1$XPp9j@Qy`^ium^EY%hCKNk-ooqFk`=ZUKu(I<+BCN7S!1HwFc= zN-aozvMWiXv`*>!j%f0JNbUHjI?+rrbB(KW8hRpb@VWPql-pa`dJbUJ$byALNX`{b zJ_hT~r1TYUU!HS~3+Y9)cVWGBV7ekQ>u}G+#bX!BZ;{9P0s)nWt5|Rp7;D}oH9HA0 zM=6b@iYlK`^;nWDg%Jd>vyXaOWYw_4OT&Sxcv{%7fVYr*@9h$8MRdLA!et#E1`&gg z`hq>_)f8;Gu&oxpP~qJGgoqW81`Ea)d+lZ*zPb4ISIMfz5!I=bgg~n>Wt)PAJYM0j z0tQ?kvj)dn^8A>WG6}MUdwBcj5MTE%enU}<@xm0q$ztwxPY&$Bkk1=C5s=lzHn_~d z{UXU{J*CeRzgTAj_RRYH&C_m}g{gfY`Pb)LY7Jl(Jzj%g@=q;WPVz84dSH#Q8Cm;5 z#E|#P?6`1Bi!X0s^lckvUvESrNbWa0Kw7nV`aM@NbBV));M>>VTn5LJ`@F>cB;J6E zFL{wmyk}kwO7bwJd_R{5_9;Ri3xVM-)u^%y;wZ1B!D^DIl*`-l#@6gae>|`PAPPp1 zhDt45CqS%jhZ1A`E{Y%VYx4F@)6}mA_x0cIa+|u&FEO5pW3W7Vq3o%gKs0+gnmm=* z$Xm3)cx@mH5~*p8e<=3|x5|8!Uty@C7-JX37(=$Hx8I12niRk(c`MDC!T0V0ZVO&E zhGwE-?mYrKLJ1#u3LmZ)a63Fw3oB{+hHVdV-++YKgoE~9FV{uQa`?Doemm$TJm9)| zf)C6?PXz!y?%mFB^jA`c@w;{`8G}aQa|43-5^{&-qE}X1>&SuGw5zQkm6*7yHPB&K zWd|1UPZvOCAHV{|eP53E*Amv^0AiZ2fTSyzL4usc8v&3kSva{1q^C{*Nr|8V36lX5 z)j-uC2Lu^j1(I~NK_asF8vvehu^urtAZPg$05iS{0;APq0sVpsQK=q8$Z=_Ppnlh@ zuMX7jCciqPexAryXVlLPYjx@SeZybfqkg*gtnN|2@Am$yVB&XJwhAVG-hHfsiB&N1 zx3kJBm{+sJf{9fy@pDqFf{DLTYO7#k6-@k%Pg`XsR+)*Plj7&PxynqeG82Eh zN?2tkR>8z7m{`4!0!~}27l%KWg4K(|-}#u;8{VG~YV|7qCrP<_75_VgTGdSaJXfr0 zCVrkPR>dv9pSu6sfr%G8e$8C7=ETPfXMef+pH#`JBIzfy{NHZSRtIWTGl3SCUKtbn%?R>~%ewY0#K!jY&wNt&X%`1RT?91j9v@~XHb3fJ)*$BO zvBAN%!^2a=Tk;QIZKY)H>3n(kC)T@?={W)1QpIJASLbMQdYZm{tu?0L*ro{B6i~; zt$D5?G*u zoOGF1V#lDeMIA<%(KJ3TRo!?N3V98KNpFAQ;ZW-y+eWqa{++r3EWhW<&6d5pLU5!w zB)4OnxOt7C1bHBRgGUq`Yd!|6Z8(GFzhdn(MOGo$-@*_1bgPWPKCxOJ7_yW5=%oet zPL2?Y*qfDxM!8@e#v5tgzUgFm*uh6-lwIHEysy>Vu)x9)X6ec4jbeWeWUTSctxVHn z5zvQZrmZHUtF@n|Z57uD+1vBz&TBiImTgzQ-k5$$gnOc+bV|)enbP`*;MP4o<8Y2E zbJYBM!x3T=ZG1s9^6O#i(s6u@eHzWRzg`&=Ti)Z79K||wQ*djppF=`gZ}(_+Y)zOb+Wt9pWjJ)6T$s4WVRNPOZ)-}FPya(BXmQGVR3Tz=Df$yjS=21&!XIOgKP55 zx#`^%*01de_TglrZQ)CWbRS0sGY6IHCl*f8tioq_u%pnMOnNxO+1)fxm8VRg?9I94 z`Sy?Z5^5dY*xu0%HQD4vufLRRyEBpt$DffGTtNwjbFU$*w79H|YBKo%J-N^CMYEI) zxy0hCR0BRg!uv`$K`qI_jd7!aLbJtZabo%BE56Kmnx?oLD04)p8JSTG6$^R$0$S1X0+6(N}COD_It-0fnYlm!s! zBLeN_6M4Zk5AR0x|B9{aIQ_6Ldi;1)vSf4-^NxC1|+8h+D_eF`7MvZe6s@`kZNIv{hm(swXRFsWU81&BpRkna_r9 zP9q@}<&0fCiHq|dBlPu?8!@BGf3b-RH(jNs_#ubJZ<$5Mox?z5j3S-~SH1LD8#PJv zPCBAw{?VTB&8qzct;Z@Yht+b(Lr`WcM9LGJdKK&yE;AtVvv|CVTkivC8K>=`?#2Rn8q~Bo)z z5joRA)16Gjz;Z`r{G1su!4HO6td=v~HZOG86r6{UGMlc-$+hxMC*zqyan`2Qb7-A16cgjL^+ehXq7kr6awsKwn+MOC2`5)HYV1FJqX;x`y^9m(;5Q z3jrIb4pg-$GM|4QAtdGg;Udo_5wC$g>^#@IjJ=Oa461#` z8i$j1L~`e{tSm8c4LD*@)-;63w zkDau*`{NreKb~-kBgfbl&_8eD^(<UF78GWtI#9caNDy_(x+#nnwsfe~sXv9>hD0Xio|Ixf@Q!b5{b{$i2((5(; z7Ul!HIdh`r;~Lb$L2*r5^*#-WyhlF7{DJj*Xm$wI=9B6%d8U27 z!Z572MSD&hU7^vpIJh?7TY+9sV37F-4BPAg_iqXCbReZ)|KZ;|y@yLY)~(qI_{KUz z*oC{#v@-nypp56yt+oqzCZ(T${mdTtX|aZD{?noa$=b2L^Q@tg;LMiS6-5;t>7|0{ z@Y=j8>srjD$e$%lpX9P#cA6gY>gnnCP#S!=J1Mvf_?DJ5R!!zM0bFNAKqiVsC}-00 z`x{INj8Q0ibWlf=-ej7SuGcsbv95}@NE4XJ3ezsJ1an&@zyq2WPp4o^+A*bZACox^ z0KDSG6wvAe8+|D`gnQ@Oy`Ke}-&q>uMHOVw1Z+*~=_P<8y3-&x)T^l8$+@t^64rH( zO}tE%7}h|%i0-|!)ZKy2f9q$1$h9sdnAf^v|IQODAba0Nub%woV(T zeJrSBl+Lv`g}%IKKD6s1^+5@`w90CtN|QZTWD>PSqx%+;TIOPV zEHOIO2qkJ^W9fpQxv$&B>WSit=VioS1xf~VuVa)-OR@cn8H&?|RU+jW969!yds0>T zc6GM`dRwN(bm4fM?NSK#;Xc@Vs0dl*;7x9J_PbVz^}zOYQpgO>8uA4?KVZ4@+tg~O zuBA2RS|@goWqbeS8)G{!bJ^}6j0j#VC;4;?LOF}j!=j>N zjhHr%8MYZt-p`;70R#hZc||SiC=Dz4WHoY_je}i{-VHU{<-#PdszHNc!!NNq z>hz`-6(q3(30oo}daZooMm6T180yv5DLT<=EgZcnW#gnR)bOmwVq-4?HmT40mq+(A z$J{qL*k1Q~0BLVQ;e67}cyMe2PNRfKVmn$B14WTbv(cF1zF8cHfh#9z%s-P@Bp5r6F09HCes|N^h=NP`g3tH_0)WaISMjtC~-o7I@SCs!>3dexq@}25ZvL zFw?}$rZPT;z#0~ArtBsyR@CI$II&xrSz?m*4yTQ6z@HI_aP_T+r`FoPqU z{kH5Ab>cA4lYUGFP=#5hK*`N)M7I%I<H?~s5EOHm;4wRJ`;>UnqKIP?4ZTqy#1nQoI7^hWz_ie6SKY3=oLkwSOdgZZ54N>U0WHieIlCxFI`0YO6>e_Wuz=^V@VuUajkPS%2P-btn(b!l|V=oD9+nC1E#Ath^jcrpDTJ6phIT3Yv51 z<@W3m!vF>lYolc%O+4)2*OHS6lKl-lRf8IJ`u(O*{~`6tr$;dRj?SLHVc(U{3b|4j z!K;T6%ddeky+WP$TDHu{Mk-*0C`WE?~=sF5Y)j553F;Adxq=)PZQ zpPG)N(>zI8v6JH=DKONXZ&}_^wdOWT_qIv9Zug*#LrsyZ$&P~(nZ2d$#OWI#ubY%DpJkv24)YG6&x@RK#YL1~pu2rYJ zGLIP>IwepF@$0Hh;wB`AiG_7PehKlT)s`DocEGMS_(t!0wlF^&7Tu2SnTT6@FV2H! zjwvSJh*Q(R4efP!@9SJrv1Dh6=+2D|Ib7qhoAUn7OG~L46iR4O4oR4Gs+UgjsZe@1 zjs-$bxJe9IB8c)#BA!i@lO&6mT&zA;nalXq>haU(b0@)9yzk9sj1Q;8hn$Lu=(UWXvQQi>-NGa@m zt%vLt3G9|NyX5+Pw|&}WY29jeI&R7Op-DG-=P#K)ZD|1xn&kdz8^vfxJw7mNO1O`ZE+66W8=tJzw!&1F3yWgbFwrHF@?IuG=1P4iG@ElttX z@R$PPfy5B9*&Ks?B;*d{PS{88H6jl4pTDSRG2l=vD#8AC{Sx)%3nV?yR42PYCAp5Hz?eI zCnHSG54Q|5=YFz|Oc+jiVgJV8`}^`O1o0E`=VYm?f11jw#sN{RIFU%b#Lk%E9eo*VK(8}aQQFT} z*{(=S^XXhPUh+Y;!a3{C5dgi;%^G|ezTfNb3GG&ci#tc;o5>`Gq93MF!2B8IQsdH; zOzm5xI z_lXG?*cY9M?!@Xe`f7#;auZLVnMH<%)}Mw4ifK>}T~>ZI)BgY6mRTcRFYw?L`L$C% z;Z4o0g*x~1FdNkV@xpDr9nk$~Q@425mVr|h(p<(?nrLd3K^-raQrF+q(k3BY zlV5Q3KLT>IPTHo6+rV4!<3=%=xLsCKu=z#L;pRp&M)&Lqm&iz;ZAGL3pGCO@6E%6c zH?FgRuu^wE&Bnl3%uV2a2WCJnB^du!e%2hEp75u@4R){tRcDzZYe}kcJ8kC_|g@r_b!ANBOHSn<^?jA{%=x# zx4GxFy0q4=)x5|>rPi2Jt;j-4M;{1i!*G8~K%p>M7%#XopCCJ(RBC3;pwKpk()Ck3 zMUYFO^|Rx{7u;u^{r)b2CrQ>vF-ODn?>T72q%0MWvxsUzxT=ZW4+G`5ub1HSCYq8T z`i5QEA6$9d8hr1(hjkOASaL|6WK9LCL2C4PStE3-^0K$GI@2+7CV`W3_5?SRA@UK< zw$Ga1_EVo(?aKZg2pR1wtxtUrFZS!KMoji1CP(_NaD6GUPa4iqg=m9k8#A}9NW`=0 zO6L>yk?Yr5@t-=g5OLH@8|eeRT;j1!j5(K}zMQ-9K)AroR*5Y+N{7}yrWavEg8K3MGJz{v#O<;3vjW=8OQJRM9 zP(DM}R1VKp`BPwmCdG&hXCfV%UEx)uQ#YgM1Bk=g6a5AE{^b;_S-G+=D79h&d84>6 zx$P_bV0uSs|-5KWz z(;(B}olj}spj1`^RwR%$Jbp)ze)4d}!h8#1FkOG{65>wr>oEG`*2He+Cu<;vY2;zC ztM99qSJwwZ<5m8BZCuUOF|}ZBeBbJ6$9(Odke$sbq8QWDrp{2X(&zhtiTqcanJ6f_4g#?Xk$B8|0&>P6>M!ou3EpEz6O zLBy3HE1urXr5-^3biT0);X44Qjv00^UejFw)5cYZ%`}N=@bD2F^sxN^;cd0Qf9o4Y zyli9aQmneK9#kM9x<`-UFKAe(O*df$dm>N(7=gE63S@+2(ja9x3ZNGEU;a>p*Vm7A z|4n0A$R7X_WGb9c*gr=hwfY(r45A!)ihakx7kgq8qO&8cc_>E;@jwjf8WMCZSwHmo z4|elPkrW0K#Tef#%^3*&JEocc6Ibx6?@njvAJVc3?9_N`1s6LXU#*>WmfO|f3=^l1 zb!0)vEDVS7%R;l8YA2K-raH9}VXoOt12n;Rn3S?e5(y)uGzn z)vl9mR7qM>662!PVjLK-9?uKnrZucgj3i_>*uU{Js(>GXhtpdU*R2_5?5oDW@je=c zeJU8q=Fh#!#?hlJ;dWWyXkDutm^Fk6IYw!HNyhRnM}yVV;O&|5qBDlVn?3DA!0QKP&E$P1(7w2cU!led)_uZLM8 z&9BL%x=j3jSJIw2lyuN@ZIXz`)Dg3r9RW9q0IU83Z>oeTDoCY8j~W5GdF5^xLnKb0v9S(3JNLSA0b z!1jbvY`q`6se$nwv}Qdy&pXp~%Y2=r=P#@}dfRpXM4+Z*_xEk1 z{5zE;+&t;xJhA{nm{_6OTLqR&ViP{mY879yw!Z)HS;)n2~=i0T$tDd0u}$_mo9aiKQL@_m)YwkD@mjT z8>u2TLPKZwO^AxhCm~ypqkcL)T7ICH?Jk91-}RGAO-Amb4?UYy36`UK(WWl^fn%2){ygCHzHrKI04!?|d((-={}q zsuJsKs4I`-Eh0Q~qu*S%M#DChhs)h!LIqIHcjotAG!;#PzznQF+!0rrv8au-hNYOx9dBMy>3E)Ch)Ok;G^vQFc zQ{cVu`G0ms0#m^3AZ_z4w|^&hue2}@OBjnKsfC~69%?(JVD2Gl)F+8KPEfUu0ZNG@-Zqq451{fECp`hXW!*}@$}w|1sSeFta0IO7usf7pLxV_@6 z4RvRweA8ak_Z2^z00aKY%AQ1O!&(PK!<8zB^<$ACo_(|U)NUORQ+>6}*NzM)@1cRq zsl;2Eug0UhB=N918HO zapTp0*oO}k6`h6Z!jR(lkd>;taQTH77rvy3_H;o>$bwWpV652=9g^M)gQW92s-+(m zY{&@n2F2)&4%Pr(reno6U3sf#ne}QiVKZaX%~24}kjgNip}Oct&mLy!3&TVMO}G%v ndkNk(XNdLRNR)*AYJ)i8{&3+`0>)*F?s)%v=4Abeh#UV4E#|W?