From d256469f37e448a50391959f1a9ae4ea4f81ba39 Mon Sep 17 00:00:00 2001 From: Vadym Barda Date: Tue, 13 May 2025 11:38:54 -0400 Subject: [PATCH] docs: fix warnings in links (#4672) --- docs/docs/agents/human-in-the-loop.md | 2 +- docs/docs/agents/memory.md | 4 +- .../cloud/how-tos/add-human-in-the-loop.md | 2 +- .../docs/cloud/how-tos/clone_traces_studio.md | 2 +- docs/docs/cloud/how-tos/studio/faqs.md | 2 +- docs/docs/cloud/how-tos/use_stream_react.md | 4 +- docs/docs/concepts/agentic_concepts.md | 4 +- docs/docs/concepts/assistants.md | 4 +- .../langgraph_self_hosted_data_plane.md | 2 +- docs/docs/concepts/langgraph_server.md | 2 +- docs/docs/concepts/low_level.md | 16 ++-- docs/docs/concepts/multi_agent.md | 2 +- docs/docs/concepts/persistence.md | 4 +- .../add-human-in-the-loop.md | 6 +- docs/docs/how-tos/tool-calling.ipynb | 29 ------- docs/docs/tutorials/index.md | 78 ------------------- docs/mkdocs.yml | 4 - 17 files changed, 28 insertions(+), 139 deletions(-) delete mode 100644 docs/docs/tutorials/index.md diff --git a/docs/docs/agents/human-in-the-loop.md b/docs/docs/agents/human-in-the-loop.md index 28f2b1259..9ac148e55 100644 --- a/docs/docs/agents/human-in-the-loop.md +++ b/docs/docs/agents/human-in-the-loop.md @@ -106,7 +106,7 @@ for chunk in agent.stream( print("\n") ``` -1. The [`interrupt` function][langgraph.types.interrupt] is used in conjunction with the [`Command`](../reference/types.md#langgraph.types.Command) object to resume the graph with a value provided by the human. +1. The [`interrupt` function][langgraph.types.interrupt] is used in conjunction with the [`Command`][langgraph.types.Command] object to resume the graph with a value provided by the human. ## Using with Agent Inbox diff --git a/docs/docs/agents/memory.md b/docs/docs/agents/memory.md index 399276b9e..716e32b62 100644 --- a/docs/docs/agents/memory.md +++ b/docs/docs/agents/memory.md @@ -294,7 +294,7 @@ agent.invoke( ) ``` -For more details, see [how to update state from tools](../how-tos/update-state-from-tools.ipynb). +For more details, see [how to update state from tools](../how-tos/tool-calling.ipynb#update). ## Long-term memory @@ -302,7 +302,7 @@ Use long-term memory to store user-specific or application-specific data across To use long-term memory, you need to: -1. [Configure a store](../how-tos/cross-thread-persistence.ipynb) to persist data across invocations. +1. [Configure a store](../how-tos/persistence.ipynb#add-long-term-memory) to persist data across invocations. 2. Use the [`get_store`][langgraph.config.get_store] function to access the store from within tools or prompts. ### Read { #read-long-term } diff --git a/docs/docs/cloud/how-tos/add-human-in-the-loop.md b/docs/docs/cloud/how-tos/add-human-in-the-loop.md index 5b246906b..866c53eae 100644 --- a/docs/docs/cloud/how-tos/add-human-in-the-loop.md +++ b/docs/docs/cloud/how-tos/add-human-in-the-loop.md @@ -8,7 +8,7 @@ Please see [the overview of LangGraph human-in-the-loop](../../concepts/human_in The [`interrupt` function][langgraph.types.interrupt] in LangGraph enables human-in-the-loop workflows by pausing the graph at a specific node, presenting information to a human, and resuming the graph with their input. It's useful for tasks like approvals, edits, or gathering additional context. -The graph is resumed using a [`Command`](../reference/types.md#langgraph.types.Command) object that provides the human's response. +The graph is resumed using a [`Command`][langgraph.types.Command] object that provides the human's response. **Graph node with `interrupt`:** diff --git a/docs/docs/cloud/how-tos/clone_traces_studio.md b/docs/docs/cloud/how-tos/clone_traces_studio.md index 3be915503..19ec75eeb 100644 --- a/docs/docs/cloud/how-tos/clone_traces_studio.md +++ b/docs/docs/cloud/how-tos/clone_traces_studio.md @@ -14,7 +14,7 @@ To support this, LangGraph Studio, in combination with LangSmith, allows you to - langgraph-api>=0.0.32 - A thread traced in LangSmith. -- A locally running agent. See [here](../../how-tos/local-studio.md) for setup instructions. +- A locally running agent. See [here](../how-tos/studio/quick_start.md#local-development-server) for setup instructions. - Note that your local agent must be using the above specified `langgraph` and `langgraph-api` versions. - The nodes present in the remote trace must exist in at least one of the graphs in your local agent. diff --git a/docs/docs/cloud/how-tos/studio/faqs.md b/docs/docs/cloud/how-tos/studio/faqs.md index a1251f27e..4daa22564 100644 --- a/docs/docs/cloud/how-tos/studio/faqs.md +++ b/docs/docs/cloud/how-tos/studio/faqs.md @@ -8,7 +8,7 @@ A project may fail to start if the configuration file is defined incorrectly, or When you select the `Interrupts` dropdown and select a node to interrupt the graph will pause execution before and after (unless the node goes straight to `END`) that node has run. This means that you will be able to both edit the state before the node is ran and the state after the node has ran. This is intended to allow developers more fine-grained control over the behavior of a node and make it easier to observe how the node is behaving. You will not be able to edit the state after the node has ran if the node is the final node in the graph. -For more information on interrupts and human in the loop, see [here](./human_in_the_loop.md). +For more information on interrupts and human in the loop, see [here](../../../concepts/human_in_the_loop.md). ## Why are extra edges showing up in my graph? diff --git a/docs/docs/cloud/how-tos/use_stream_react.md b/docs/docs/cloud/how-tos/use_stream_react.md index 9a30b5326..9329d5c79 100644 --- a/docs/docs/cloud/how-tos/use_stream_react.md +++ b/docs/docs/cloud/how-tos/use_stream_react.md @@ -158,7 +158,7 @@ export default function HomePage() { } ``` -Under the hood, the `useStream()` hook will use the `streamMode: "messages-tuple"` to receive a stream of messages (i.e. individual LLM tokens) from any LangChain chat model invocations inside your graph nodes. Learn more about messages streaming in the [How to stream messages from your graph](./stream_messages.md) guide. +Under the hood, the `useStream()` hook will use the `streamMode: "messages-tuple"` to receive a stream of messages (i.e. individual LLM tokens) from any LangChain chat model invocations inside your graph nodes. Learn more about messages streaming in the [streaming](../how-tos/streaming.md#messages) guide. ### Interrupts @@ -476,7 +476,7 @@ The `useStream()` hook provides several callback options to help you respond to - `onError`: Called when an error occurs. - `onFinish`: Called when the stream is finished. - `onUpdateEvent`: Called when an update event is received. -- `onCustomEvent`: Called when a custom event is received. See [Custom events](../../how-tos/streaming.ipynb#custom) to learn how to stream custom events. +- `onCustomEvent`: Called when a custom event is received. See the [streaming](../../how-tos/streaming.md#stream-custom-data) guide to learn how to stream custom events. - `onMetadataEvent`: Called when a metadata event is received, which contains the Run ID and Thread ID. ## Learn More diff --git a/docs/docs/concepts/agentic_concepts.md b/docs/docs/concepts/agentic_concepts.md index bb0f17c74..852c6141e 100644 --- a/docs/docs/concepts/agentic_concepts.md +++ b/docs/docs/concepts/agentic_concepts.md @@ -46,7 +46,7 @@ While a router allows an LLM to make a single decision, more complex agent archi This architecture allows for more complex and flexible agent behaviors, going beyond simple routing to enable dynamic problem-solving with multiple steps. Unlike the original [paper](https://arxiv.org/abs/2210.03629), today's agents rely on LLMs' [tool calling](#tool-calling) capabilities and operate on a list of [messages](./low_level.md#why-use-messages). -In LangGraph, you can use the prebuilt [agent](../agent/overview.md) to get started with tool-calling agents. +In LangGraph, you can use the prebuilt [agent](../agents/agents.md#2-create-an-agent) to get started with tool-calling agents. ### Tool calling @@ -75,7 +75,7 @@ Effective [memory management](../how-tos/memory.ipynb) enhances an agent's abili ### Planning -In a tool-calling [agent](../agent/overview.md), an LLM is called repeatedly in a while-loop. At each step the agent decides which tools to call, and what the inputs to those tools should be. Those tools are then executed, and the outputs are fed back into the LLM as observations. The while-loop terminates when the agent decides it has enough information to solve the user request and it is not worth calling any more tools. +In a tool-calling [agent](../agents/overview.md#what-is-an-agent), an LLM is called repeatedly in a while-loop. At each step the agent decides which tools to call, and what the inputs to those tools should be. Those tools are then executed, and the outputs are fed back into the LLM as observations. The while-loop terminates when the agent decides it has enough information to solve the user request and it is not worth calling any more tools. ## Custom agent architectures diff --git a/docs/docs/concepts/assistants.md b/docs/docs/concepts/assistants.md index 64a26851e..7b7bb44cd 100644 --- a/docs/docs/concepts/assistants.md +++ b/docs/docs/concepts/assistants.md @@ -22,8 +22,8 @@ In practice, an assistant is just an _instance_ of a graph with a specific confi ## Versioning assistants Assistants support versioning to track changes over time. -Once you've created an assistant, subsequent edits to that assistant will create new versions. See [this how-to](../cloud/how-tos/assistant_versioning.md) for more details on how to manage assistant versions. +Once you've created an assistant, subsequent edits to that assistant will create new versions. See [this how-to](../cloud/how-tos/configuration_cloud.md#create-a-new-version-for-your-assistant) for more details on how to manage assistant versions. ## Learn more -* The LangGraph Cloud API provides several endpoints for creating and managing assistants their versions. See the [API reference](../../cloud/reference/api/api_ref.html#tag/assistants) for more details. \ No newline at end of file +* The LangGraph Cloud API provides several endpoints for creating and managing assistants their versions. See the [API reference](../cloud/reference/api/api_ref.html#tag/assistants) for more details. \ No newline at end of file diff --git a/docs/docs/concepts/langgraph_self_hosted_data_plane.md b/docs/docs/concepts/langgraph_self_hosted_data_plane.md index f4fa9eddf..fb93a60c8 100644 --- a/docs/docs/concepts/langgraph_self_hosted_data_plane.md +++ b/docs/docs/concepts/langgraph_self_hosted_data_plane.md @@ -17,7 +17,7 @@ There are two versions of the self-hosted deployment: [Self-Hosted Data Plane](. ## Self-Hosted Data Plane -The [Self-Hosted Data Plane](./self_hosted.md.md) deployment option is a "hybrid" model for deployment where we manage the [control plane](./langgraph_control_plane.md) in our cloud and you manage the [data plane](./langgraph_data_plane.md) in your cloud. This option provides a way to securely manage your data plane infrastructure, while offloading control plane management to us. When using the Self-Hosted Data Plane version, you authenticate with a [LangSmith](https://smith.langchain.com/) API key. +The [Self-Hosted Data Plane](../cloud/deployment/self_hosted_data_plane.md) deployment option is a "hybrid" model for deployment where we manage the [control plane](./langgraph_control_plane.md) in our cloud and you manage the [data plane](./langgraph_data_plane.md) in your cloud. This option provides a way to securely manage your data plane infrastructure, while offloading control plane management to us. When using the Self-Hosted Data Plane version, you authenticate with a [LangSmith](https://smith.langchain.com/) API key. | | [Control plane](../concepts/langgraph_control_plane.md) | [Data plane](../concepts/langgraph_data_plane.md) | |-------------------|-------------------|------------| diff --git a/docs/docs/concepts/langgraph_server.md b/docs/docs/concepts/langgraph_server.md index fd1be2127..b46a00a21 100644 --- a/docs/docs/concepts/langgraph_server.md +++ b/docs/docs/concepts/langgraph_server.md @@ -24,7 +24,7 @@ Feature Differences: | | Lite | Enterprise | |-------|------------|------------| -| [Cron Jobs](../clouds/concepts/cron-jobs.md) |❌|✅| +| [Cron Jobs](../cloud/concepts/cron_jobs.md) |❌|✅| | [Custom Authentication](../concepts/auth.md) |❌|✅| | [Deployment options](../concepts/deployment_options.md) | Standalone container | Cloud Saas, Self-Hosted Data Plane, Self-Hosted Control Plane, Standalone container diff --git a/docs/docs/concepts/low_level.md b/docs/docs/concepts/low_level.md index f7a9b3a48..cc2cb7382 100644 --- a/docs/docs/concepts/low_level.md +++ b/docs/docs/concepts/low_level.md @@ -45,9 +45,9 @@ The first thing you do when you define a graph is define the `State` of the grap ### Schema -The main documented way to specify the schema of a graph is by using `TypedDict`. However, we also support [using a Pydantic BaseModel](../how-tos/state-model.ipynb) as your graph state to add **default values** and additional data validation. +The main documented way to specify the schema of a graph is by using `TypedDict`. However, we also support [using a Pydantic BaseModel](../how-tos/graph-api.ipynb#use-pydantic-models-for-graph-state) as your graph state to add **default values** and additional data validation. -By default, the graph will have the same input and output schemas. If you want to change this, you can also specify explicit input and output schemas directly. This is useful when you have a lot of keys, and some are explicitly for input and others for output. See the [notebook here](../how-tos/input_output_schema.ipynb) for how to use. +By default, the graph will have the same input and output schemas. If you want to change this, you can also specify explicit input and output schemas directly. This is useful when you have a lot of keys, and some are explicitly for input and others for output. See the [guide here](../how-tos/graph-api.ipynb#define-input-and-output-schemas) for how to use. #### Multiple schemas @@ -56,9 +56,9 @@ Typically, all graph nodes communicate with a single schema. This means that the - Internal nodes can pass information that is not required in the graph's input / output. - We may also want to use different input / output schemas for the graph. The output might, for example, only contain a single relevant output key. -It is possible to have nodes write to private state channels inside the graph for internal node communication. We can simply define a private schema, `PrivateState`. See [this notebook](../how-tos/pass_private_state.ipynb) for more detail. +It is possible to have nodes write to private state channels inside the graph for internal node communication. We can simply define a private schema, `PrivateState`. See [this guide](../how-tos/graph-api.ipynb#pass-private-state-between-nodes) for more detail. -It is also possible to define explicit input and output schemas for a graph. In these cases, we define an "internal" schema that contains _all_ keys relevant to graph operations. But, we also define `input` and `output` schemas that are sub-sets of the "internal" schema to constrain the input and output of the graph. See [this notebook](../how-tos/input_output_schema.ipynb) for more detail. +It is also possible to define explicit input and output schemas for a graph. In these cases, we define an "internal" schema that contains _all_ keys relevant to graph operations. But, we also define `input` and `output` schemas that are sub-sets of the "internal" schema to constrain the input and output of the graph. See [this guide](../how-tos/graph-api.ipynb#define-input-and-output-schemas) for more detail. Let's look at an example: @@ -352,7 +352,7 @@ def my_node(state: State) -> Command[Literal["my_other_node"]]: When returning `Command` in your node functions, you must add return type annotations with the list of node names the node is routing to, e.g. `Command[Literal["my_other_node"]]`. This is necessary for the graph rendering and tells LangGraph that `my_node` can navigate to `my_other_node`. -Check out this [how-to guide](../how-tos/command.ipynb) for an end-to-end example of how to use `Command`. +Check out this [how-to guide](../how-tos/graph-api.ipynb#combine-control-flow-and-state-updates-with-command) for an end-to-end example of how to use `Command`. ### When should I use Command instead of conditional edges? @@ -379,7 +379,7 @@ def my_node(state: State) -> Command[Literal["other_subgraph"]]: !!! important "State updates with `Command.PARENT`" - When you send updates from a subgraph node to a parent graph node for a key that's shared by both parent and subgraph [state schemas](#schema), you **must** define a [reducer](#reducers) for the key you're updating in the parent graph state. See this [example](../how-tos/command.ipynb#navigating-to-a-node-in-a-parent-graph). + When you send updates from a subgraph node to a parent graph node for a key that's shared by both parent and subgraph [state schemas](#schema), you **must** define a [reducer](#reducers) for the key you're updating in the parent graph state. See this [example](../how-tos/graph-api.ipynb#navigate-to-a-node-in-a-parent-graph). This is particularly useful when implementing [multi-agent handoffs](./multi_agent.md#handoffs). @@ -435,7 +435,7 @@ def node_a(state, config): ... ``` -See [this guide](../how-tos/configuration.ipynb) for a full breakdown on configuration. +See [this guide](../how-tos/graph-api.ipynb#add-runtime-configuration) for a full breakdown on configuration. ### Recursion Limit @@ -449,4 +449,4 @@ Read [this how-to](https://langchain-ai.github.io/langgraph/how-tos/recursion-li ## Visualization -It's often nice to be able to visualize graphs, especially as they get more complex. LangGraph comes with several built-in ways to visualize graphs. See [this how-to guide](../how-tos/visualization.ipynb) for more info. +It's often nice to be able to visualize graphs, especially as they get more complex. LangGraph comes with several built-in ways to visualize graphs. See [this how-to guide](../how-tos/graph-api.ipynb#visualize-your-graph) for more info. diff --git a/docs/docs/concepts/multi_agent.md b/docs/docs/concepts/multi_agent.md index 6a9053b4f..16cf5e2b6 100644 --- a/docs/docs/concepts/multi_agent.md +++ b/docs/docs/concepts/multi_agent.md @@ -165,7 +165,7 @@ network = builder.compile() ### Supervisor -In this architecture, we define agents as nodes and add a supervisor node (LLM) that decides which agent nodes should be called next. We use [`Command`](./low_level.md#command) to route execution to the appropriate agent node based on supervisor's decision. This architecture also lends itself well to running multiple agents in parallel or using [map-reduce](../how-tos/map-reduce.ipynb) pattern. +In this architecture, we define agents as nodes and add a supervisor node (LLM) that decides which agent nodes should be called next. We use [`Command`](./low_level.md#command) to route execution to the appropriate agent node based on supervisor's decision. This architecture also lends itself well to running multiple agents in parallel or using [map-reduce](../how-tos/graph-api.ipynb#map-reduce-and-the-send-api) pattern. ```python from typing import Literal diff --git a/docs/docs/concepts/persistence.md b/docs/docs/concepts/persistence.md index 6f24b7ff3..e4302b8f1 100644 --- a/docs/docs/concepts/persistence.md +++ b/docs/docs/concepts/persistence.md @@ -29,7 +29,7 @@ Checkpoint is a snapshot of the graph state saved at each super-step and is repr - `metadata`: Metadata associated with this checkpoint. - `values`: Values of the state channels at this point in time. - `next` A tuple of the node names to execute next in the graph. -- `tasks`: A tuple of `PregelTask` objects that contain information about next tasks to be executed. If the step was previously attempted, it will include error information. If a graph was interrupted [dynamically](../how-tos/human_in_the_loop/dynamic_breakpoints.ipynb) from within a node, tasks will contain additional data associated with interrupts. +- `tasks`: A tuple of `PregelTask` objects that contain information about next tasks to be executed. If the step was previously attempted, it will include error information. If a graph was interrupted [dynamically](../how-tos/human_in_the_loop/breakpoints.ipynb#dynamic-breakpoints) from within a node, tasks will contain additional data associated with interrupts. Let's see what checkpoints are saved when a simple graph is invoked as follows: @@ -481,7 +481,7 @@ First, checkpointers facilitate [human-in-the-loop workflows](agentic_concepts.m ### Memory -Second, checkpointers allow for ["memory"](agentic_concepts.md#memory) between interactions. In the case of repeated human interactions (like conversations) any follow up messages can be sent to that thread, which will retain its memory of previous ones. See [this how-to guide](../how-tos/memory/manage-conversation-history.ipynb) for an end-to-end example on how to add and manage conversation memory using checkpointers. +Second, checkpointers allow for ["memory"](agentic_concepts.md#memory) between interactions. In the case of repeated human interactions (like conversations) any follow up messages can be sent to that thread, which will retain its memory of previous ones. See [this how-to guide](../how-tos/memory.ipynb) for an end-to-end example on how to add and manage conversation memory using checkpointers. ### Time Travel diff --git a/docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md b/docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md index 819bb20ee..89ccc2d45 100644 --- a/docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md +++ b/docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md @@ -15,7 +15,7 @@ hide: The [`interrupt` function][langgraph.types.interrupt] in LangGraph enables human-in-the-loop workflows by pausing the graph at a specific node, presenting information to a human, and resuming the graph with their input. It's useful for tasks like approvals, edits, or gathering additional context. -The graph is resumed using a [`Command`](../reference/types.md#langgraph.types.Command) object that provides the human's response. +The graph is resumed using a [`Command`][langgraph.types.Command] object that provides the human's response. ```python # highlight-next-line @@ -530,7 +530,7 @@ def human_node(state: State): When the `interrupt` function is used within a graph, execution pauses at that point and awaits user input. -To resume execution, use the [`Command`](../reference/types.md#langgraph.types.Command) primitive, which can be supplied via the `invoke`, `ainvoke`, `stream`, or `astream` methods. +To resume execution, use the [`Command`][langgraph.types.Command] primitive, which can be supplied via the `invoke`, `ainvoke`, `stream`, or `astream` methods. **Providing a response to the `interrupt`:** To continue execution, pass the user's input using `Command(resume=value)`. The graph resumes execution from the beginning of the node where `interrupt(...)` was initially called. This time, the `interrupt` function will return the value provided in `Command(resume=value)` rather than pausing again. @@ -642,7 +642,7 @@ Place code with side effects, such as API calls, **after** the `interrupt` to av ### Subgraphs called as functions -When invoking a subgraph [as a function](low_level.md#as-a-function), the **parent graph** will resume execution from the **beginning of the node** where the subgraph was invoked (and where an `interrupt` was triggered). Similarly, the **subgraph**, will resume from the **beginning of the node** where the `interrupt()` function was called. +When invoking a subgraph [as a function](../../how-tos/subgraph.ipynb#different-state-schemas), the **parent graph** will resume execution from the **beginning of the node** where the subgraph was invoked (and where an `interrupt` was triggered). Similarly, the **subgraph**, will resume from the **beginning of the node** where the `interrupt()` function was called. For example, diff --git a/docs/docs/how-tos/tool-calling.ipynb b/docs/docs/how-tos/tool-calling.ipynb index ab934346b..c35117560 100644 --- a/docs/docs/how-tos/tool-calling.ipynb +++ b/docs/docs/how-tos/tool-calling.ipynb @@ -530,35 +530,6 @@ " 6. The `user_id` is passed in the config. This is used to identify the user whose information is being updated." ] }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ToolMessage(content='294', name='multiply', tool_call_id='1')" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def multiply(a: int, b: int) -> int:\n", - " \"\"\"Multiply two numbers.\"\"\"\n", - " return a * b\n", - "\n", - "\n", - "multiply.invoke({\"type\": \"tool_call\", \"id\": \"1\", \"args\": {\"a\": 42, \"b\": 7}})" - ] - }, { "attachments": {}, "cell_type": "markdown", diff --git a/docs/docs/tutorials/index.md b/docs/docs/tutorials/index.md deleted file mode 100644 index b902b5873..000000000 --- a/docs/docs/tutorials/index.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Tutorials -search: - boost: 0.5 ---- - -# Tutorials - -New to LangGraph or LLM app development? Read this material to get up and running building your first applications. - -## Get Started 🚀 {#quick-start} - -- [LangGraph basics](get-started/1-build-basic-chatbot.md): Build a chatbot that can use tools and keep track of conversation history. Add human-in-the-loop capabilities and explore how time-travel works. -- [Common Workflows](workflows/index.md): Overview of the most common workflows using LLMs implemented with LangGraph. -- [LangGraph Server Quickstart](langgraph-platform/local-server.md): Launch a LangGraph server locally and interact with it using REST API and LangGraph Studio Web UI. -- [LangGraph Template Quickstart](../concepts/template_applications.md): Start building with LangGraph Platform using a template application. -- [Deploy with LangGraph Platform Quickstart](../cloud/quick_start.md): Deploy a LangGraph app using LangGraph Platform. - -## Use cases 🛠️ {#use-cases} - - -Explore practical implementations tailored for specific scenarios: - -### Chatbots - -- [Customer Support](customer-support/customer-support.ipynb): Build a multi-functional support bot for flights, hotels, and car rentals. -- [Prompt Generation from User Requirements](chatbots/information-gather-prompting.ipynb): Build an information gathering chatbot. -- [Code Assistant](code_assistant/langgraph_code_assistant.ipynb): Build a code analysis and generation assistant. - -### RAG - -- [Agentic RAG](rag/langgraph_agentic_rag.ipynb): Use an agent to figure out how to retrieve the most relevant information before using the retrieved information to answer the user's question. -- [SQL Agent](sql-agent.ipynb): Build a SQL agent that can answer questions about a SQL database. - - -### Agent Architectures - -#### Multi-Agent Systems - -- [Network](multi_agent/multi-agent-collaboration.ipynb): Enable two or more agents to collaborate on a task -- [Supervisor](multi_agent/agent_supervisor.ipynb): Use an LLM to orchestrate and delegate to individual agents - -#### Planning Agents - -- [Plan-and-Execute](plan-and-execute/plan-and-execute.ipynb): Implement a basic planning and execution agent -- [Reasoning without Observation](rewoo/rewoo.ipynb): Reduce re-planning by saving observations as variables -- [LLMCompiler](llm-compiler/LLMCompiler.ipynb): Stream and eagerly execute a DAG of tasks from a planner - -#### Reflection & Critique - -- [Basic Reflection](reflection/reflection.ipynb): Prompt the agent to reflect on and revise its outputs -- [Reflexion](reflexion/reflexion.ipynb): Critique missing and superfluous details to guide next steps -- [Tree of Thoughts](tot/tot.ipynb): Search over candidate solutions to a problem using a scored tree -- [Language Agent Tree Search](lats/lats.ipynb): Use reflection and rewards to drive a monte-carlo tree search over agents -- [Self-Discover Agent](self-discover/self-discover.ipynb): Analyze an agent that learns about its own capabilities - -### Evaluation - -- [Agent-based](chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb): Evaluate chatbots via simulated user interactions -- [In LangSmith](chatbot-simulation-evaluation/langsmith-agent-simulation-evaluation.ipynb): Evaluate chatbots in LangSmith over a dialog dataset - -### Experimental - -- [Web Research (STORM)](storm/storm.ipynb): Generate Wikipedia-like articles via research and multi-perspective QA -- [TNT-LLM](tnt-llm/tnt-llm.ipynb): Build rich, interpretable taxonomies of user intentand using the classification system developed by Microsoft for their Bing Copilot application. -- [Web Navigation](web-navigation/web_voyager.ipynb): Build an agent that can navigate and interact with websites -- [Competitive Programming](usaco/usaco.ipynb): Build an agent with few-shot "episodic memory" and human-in-the-loop collaboration to solve problems from the USA Computing Olympiad; adapted from the ["Can Language Models Solve Olympiad Programming?"](https://arxiv.org/abs/2404.10952v1) paper by Shi, Tang, Narasimhan, and Yao. -- [Complex data extraction](extraction/retries.ipynb): Build an agent that can use function calling to do complex extraction tasks - -## LangGraph Platform 🧱 {#platform} - -### Authentication & Access Control - -Add custom authentication and authorization to an existing LangGraph Platform deployment in the following three-part guide: - -1. [Setting Up Custom Authentication](auth/getting_started.md): Implement OAuth2 authentication to authorize users on your deployment -2. [Resource Authorization](auth/resource_auth.md): Let users have private conversations -3. [Connecting an Authentication Provider](auth/add_auth_server.md): Add real user accounts and validate using OAuth2 \ No newline at end of file diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index b769f1eb0..333602ede 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -410,10 +410,6 @@ validation: omitted_files: info absolute_links: warn unrecognized_links: warn - # TODO: figure out how to enable 'warn' for this - # it's only an issue for tutorials/storm/storm.ipynb - # because it creates anchors in the generated report - # and those anchors are not available in the actual doc anchors: warn # this is needed to handle headers with anchors for nav not_found: info