docs: update home page (#753)

This commit is contained in:
Vadym Barda
2024-06-21 17:17:32 -04:00
committed by GitHub
parent 19dd293c3f
commit a29f354d9b
7 changed files with 73 additions and 143 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ hide:
Welcome to the LangGraph how-to guides! These guides provide practical, step-by-step instructions for accomplishing key tasks in LangGraph.
## Core
## Basics
The core guides show how to address common needs when building out AI workflows, with special focus placed on [ReAct](https://arxiv.org/abs/2210.03629)-style agents with [tool calling](https://python.langchain.com/docs/modules/model_io/chat/function_calling/) (agents that <strong>Re</strong>ason and **Act** to accomplish tasks).
+2 -128
View File
@@ -1,133 +1,7 @@
---
hide_comments: true
hide:
- toc
- navigation
---
# 🦜🕸️LangGraph
![Version](https://img.shields.io/pypi/v/langgraph)
[![Downloads](https://static.pepy.tech/badge/langgraph/month)](https://pepy.tech/project/langgraph)
[![Open Issues](https://img.shields.io/github/issues-raw/langchain-ai/langgraph)](https://github.com/langchain-ai/langgraph/issues)
[![](https://dcbadge.vercel.app/api/server/6adMQxSpJS?compact=true&style=flat)](https://discord.com/channels/1038097195422978059/1170024642245832774)
⚡ Build language agents as graphs ⚡
!!! note "Python version :material-language-python:"
Looking for the JS version? Click [:fontawesome-brands-square-js: here](https://github.com/langchain-ai/langgraphjs) ([:simple-readme: JS docs](https://langchain-ai.github.io/langgraphjs/)).
## Overview
Suppose you're building a customer support assistant. You want your assistant to be able to:
1. Use tools to respond to questions
2. Connect with a human if needed
3. Be able to pause the process indefinitely and resume whenever the human responds
LangGraph makes this all easy. First install:
```bash
pip install -U langgraph
```
Then define your assistant:
```python
import json
from langchain_anthropic import ChatAnthropic
from langchain_community.tools.tavily_search import TavilySearchResults
from langgraph.checkpoint.sqlite import SqliteSaver
from langgraph.graph import END, MessageGraph
from langgraph.prebuilt.tool_node import ToolNode
# Define the function that determines whether to continue or not
def should_continue(messages):
last_message = messages[-1]
# If there is no function call, then we finish
if not last_message.tool_calls:
return END
else:
return "action"
# Define a new graph
workflow = MessageGraph()
tools = [TavilySearchResults(max_results=1)]
model = ChatAnthropic(model="claude-3-haiku-20240307").bind_tools(tools)
workflow.add_node("agent", model)
workflow.add_node("action", ToolNode(tools))
workflow.set_entry_point("agent")
# Conditional agent -> action OR agent -> END
workflow.add_conditional_edges(
"agent",
should_continue,
)
# Always transition `action` -> `agent`
workflow.add_edge("action", "agent")
memory = SqliteSaver.from_conn_string(":memory:") # Here we only save in-memory
# Setting the interrupt means that any time an action is called, the machine will stop
app = workflow.compile(checkpointer=memory, interrupt_before=["action"])
```
Now, run the graph:
```python
# Run the graph
thread = {"configurable": {"thread_id": "4"}}
for event in app.stream("what is the weather in sf currently", thread, stream_mode="values"):
event[-1].pretty_print()
```
We configured the graph to **wait** before executing the `action`. The `SqliteSaver` persists the state. Resume at any time.
```python
for event in app.stream(None, thread, stream_mode="values"):
event[-1].pretty_print()
```
The graph orchestrates everything:
- The `MessageGraph` contains the agent's "Memory"
- Conditional edges enable dynamic routing between the chatbot, tools, and the user
- Persistence makes it easy to stop, resume, and even rewind for full control over your application
With LangGraph, you can build complex, stateful agents without getting bogged down in manual state and interrupt management. Just define your nodes, edges, and state schema - and let the graph take care of the rest.
## Tutorials
Consult the [Tutorials](tutorials/index.md) to learn more about building with LangGraph, including advanced use cases.
## How-To Guides
Check out the [How-To Guides](how-tos/index.md) for instructions on handling common tasks with LangGraph
## Reference
For documentation on the core APIs, check out the [Reference](reference/graphs.md) docs.
## Conceptual Guides
Once you've learned the basics, if you want to further understand LangGraph's core abstractions, check out the [Conceptual Guides](./concepts/index.md).
## Why LangGraph?
LangGraph is framework agnostic (each node is a regular python function). It extends the core Runnable API (shared interface for streaming, async, and batch calls) to make it easy to:
- Seamless state management across multiple turns of conversation or tool usage
- The ability to flexibly route between nodes based on dynamic criteria
- Smooth switching between LLMs and human intervention
- Persistence for long-running, multi-session applications
If you're building a straightforward DAG, Runnables are a great fit. But for more complex, stateful applications with nonlinear flows, LangGraph is the perfect tool for the job.
{!README.md!}