From 6a2a81be1c1eb64ccc8eef872c1dc2bccc51c556 Mon Sep 17 00:00:00 2001 From: Andrew Nguonly Date: Tue, 25 Jun 2024 00:16:44 -0700 Subject: [PATCH] docs: Create how-to for setting up LangGraph app and how-to for deploying to LangGraph Cloud (#801) * Create how-to for setting up LangGraph app and how-to for deploying to LangGraph Cloud. * Fix spelling errors. --- docs/docs/cloud/deployment/cloud.md | 52 ++++++++++++ docs/docs/cloud/deployment/self_hosted.md | 10 +-- docs/docs/cloud/deployment/setup.md | 99 +++++++++++++++++++++++ docs/mkdocs.yml | 7 +- 4 files changed, 157 insertions(+), 11 deletions(-) create mode 100644 docs/docs/cloud/deployment/cloud.md create mode 100644 docs/docs/cloud/deployment/setup.md diff --git a/docs/docs/cloud/deployment/cloud.md b/docs/docs/cloud/deployment/cloud.md new file mode 100644 index 000000000..238f0d167 --- /dev/null +++ b/docs/docs/cloud/deployment/cloud.md @@ -0,0 +1,52 @@ +# How to Deploy to LangGraph Cloud + +LangGraph Cloud is available within LangSmith. To deploy a LangGraph Cloud API, navigate to the LangSmith UI. + +## Setup GitHub Repository + +LangGraph Cloud applications are deployed from GitHub repositories. Configure and upload a LangGraph Cloud application to a GitHub repository in order to deploy it to LangGraph Cloud. + +## Create New Deployment + +Starting from the LangSmith UI... + +1. In the left-hand navigation panel, select `Deployments`. The `Deployments` view contains a list of existing LangGraph Cloud deployments. +1. In the top-right corner, select `+ New Deployment` to create a new deployment. +1. In the `Create New Deployment` panel, fill out the required fields. + 1. `Deployment details` + 1. Select `Import from GitHub` and follow the GitHub OAuth workflow to install and authorize LangChain's `hosted-langserve` GitHub app to access the selected repositories. After installation is complete, return to the `Create New Deployment` panel and select the GitHub repository to deploy from the dropdown menu. + 1. Specify a name for the deployment. + 1. Specify the full path to the [LangGraph API config file](../reference/cli.md#configuration-file) including the file name. For example, if the file `langgraph.json` is in the root of the repository, simply specify `langgraph.json`. + 1. Specify the desired `git` reference (e.g. branch name). For example, different branches of the repository can be deployed. + 1. Select the desired `Deployment Type`. + 1. `Development` deployments are meant for non-production use cases and are provisioned with minimal resources. + 1. `Production` deployments can serve up to 500 requests/second and are provisioned with highly available storage with automatic backups. + 1. Specify `Environment Variables` and secrets. + 1. Sensitive values such as API keys (e.g. `OPENAI_API_KEY`) should be specified as secrets. + 1. Additional non-secret environment variables can be specified as well. + 1. A new LangSmith `Tracing Project` is automatically created with the same name as the deployment. +1. In the top-right corner, select `Submit`. After a few seconds, the `Deployment` view appears and the new deployment will be queued for provisioning. + +## Create New Revision + +When [creating a new deployment](#create-a-new-deployment), a new revision is created by default. Subsequent revisions can be created to deploy new code changes. + +Starting from the LangSmith UI... + +1. In the left-hand navigation panel, select `Deployments`. The `Deployments` view contains a list of existing LangGraph Cloud deployments. +1. Select an existing deployment to create a new revision for. +1. In the `Deployment` view, in the top-right corner, select `+ New Revision`. +1. In the `New Revision` modal, fill out the required fields. + 1. Specify the full path to the [LangGraph API config file](../reference/cli.md#configuration-file) including the file name. For example, if the file `langgraph.json` is in the root of the repository, simply specify `langgraph.json`. + 1. Specify the desired `git` reference (e.g. branch name). For example, different branches of the repository can be deployed. + 1. Specify `Environment Variables` and secrets. Existing secrets and environment variables are prepopulated. + 1. Add new secrets or environment variables. + 1. Remove existing secrets or environment variables. + 1. Update the value of existing secrets or environment variables. +1. Select `Submit`. After a few seconds, the `New Revision` modal will close and the new revision will be queued for deployment. + +## Asynchronous Deployment + +New [deployments](#create-new-deployment) and [revisions](#create-new-revision) are provisioned and deployed asynchronously. They are not deployed immediately after submission. Currently, deployment can take up to several minutes. + +The `Deployment` view continually updates the status of pending revisions. diff --git a/docs/docs/cloud/deployment/self_hosted.md b/docs/docs/cloud/deployment/self_hosted.md index 4a9fe33d9..1a5de8b2e 100644 --- a/docs/docs/cloud/deployment/self_hosted.md +++ b/docs/docs/cloud/deployment/self_hosted.md @@ -1,9 +1,3 @@ -### Run your server locally +# How to Self-Host LangGraph Cloud API -First, make sure that Docker is up and running. Test that your server works by running: - -```python -langgraph up -c langgraph.json -``` - -This will bring up a local server with your graph! Access the auto-generated server for your playground to confirm everything works as planned at [http://localhost:8124](http://localhost:8124) . \ No newline at end of file +Coming soon... diff --git a/docs/docs/cloud/deployment/setup.md b/docs/docs/cloud/deployment/setup.md new file mode 100644 index 000000000..f1d486f03 --- /dev/null +++ b/docs/docs/cloud/deployment/setup.md @@ -0,0 +1,99 @@ +# How to Set Up a LangGraph Application for Deployment + +A LangGraph application must be configured with a [LangGraph API configuration file](../reference/cli.md#configuration-file) in order to be deployed to LangGraph Cloud (or to be self-hosted). This how-to guide discusses the basic steps to setup a LangGraph application for deployment. + +After each step, an example file directory is provided to demonstrate how code can be organized. + +## Specify Dependencies + +Dependencies can optionally be specified in one of the following files: `pyproject.toml`, `setup.py`, or `requirements.txt`. If neither of these files is created, then dependencies can be specified later in the [LangGraph API configuration file](#create-langgraph-api-config). + +Example `requirements.txt` file: +``` +langgraph +langchain_openai +``` + +Example file directory: +``` +my-app/ +|-- requirements.txt # Python packages required for your graph +``` + +## Specify Environment Variables + +Environment variables can optionally be specified in a file (e.g. `.env`). + +Example `.env` file: +``` +MY_ENV_VAR_1=foo +MY_ENV_VAR_2=bar +``` + +Example file directory: +``` +my-app/ +|-- requirements.txt +|-- .env # file with environment variables +``` + +## Define Graphs + +Implement your graphs! Graphs can be defined in a single file or multiple files. Make note of the variable names of each [CompiledGraph](../../../reference/graphs/#compiledgraph) to be included in the LangGraph application. The variable names will be used later when creating the [LangGraph API configuration file](../reference/cli.md#configuration-file). + +Example `openai_agent.py` file: +```python +from langchain_openai import ChatOpenAI +from langgraph.graph import END, MessageGraph + +model = ChatOpenAI(temperature=0) + +graph_workflow = MessageGraph() + +graph_workflow.add_node("agent", model) +graph_workflow.add_edge("agent", END) +graph_workflow.set_entry_point("agent") + +agent = graph_workflow.compile() +``` + +Example file directory: +``` +my-app/ +|-- requirements.txt +|-- .env +|-- openai_agent.py # code for your graph +|-- anthropic_agent.py # code for your graph +``` + +## Create LangGraph API Config + +Create a [LangGraph API configuration file](../reference/cli.md#configuration-file) called `langgraph.json`. See the [LangGraph CLI reference](../reference/cli.md#configuration-file) for detailed explanations of each key in the JSON object of the configuration file. + +Example `langgraph.json` file: +```json +{ + "dependencies": [ + "./my-app" + ], + "graphs": { + "openai_agent": "./openai_agent.py:agent", + "anthropic_agent": "./anthropic_agent.py:agent" + }, + "env": ".env" +} +``` + +Example file directory: +``` +my-app/ +|-- requirements.txt +|-- .env +|-- openai_agent.py +|-- anthropic_agent.py +|-- langgraph.json # configuration file for LangGraph +``` + +## Upload to GitHub + +To deploy the LangGraph application to LangGraph Cloud, the code must be uploaded to a GitHub repository. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 11ecb4439..7260aef03 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -171,10 +171,11 @@ nav: - 'cloud/index.md' - Tutorials: - Quick Start: 'cloud/quick_start.md' - - Deployment: - - Self-Hosted: 'cloud/deployment/self_hosted.md' - - Managed: 'cloud/deployment/managed.md' - How-to Guides: + - Deployment: + - Setup App: 'cloud/deployment/setup.md' + - Deploy to Cloud: 'cloud/deployment/cloud.md' + - Self-Host: 'cloud/deployment/self_hosted.md' - Streaming: - Stream Values: 'cloud/how-tos/cloud_examples/stream_values.ipynb' - Stream Updates: 'cloud/how-tos/cloud_examples/stream_updates.ipynb'