| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- Metadata-Version: 2.4
- Name: langgraph-prebuilt
- Version: 1.0.5
- Summary: Library with high-level APIs for creating and executing LangGraph agents and tools.
- Project-URL: Source, https://github.com/langchain-ai/langgraph/tree/main/libs/prebuilt
- Project-URL: Twitter, https://x.com/LangChainAI
- Project-URL: Slack, https://www.langchain.com/join-community
- Project-URL: Reddit, https://www.reddit.com/r/LangChain/
- License-Expression: MIT
- License-File: LICENSE
- Classifier: Development Status :: 5 - Production/Stable
- Classifier: Programming Language :: Python
- Classifier: Programming Language :: Python :: 3
- Classifier: Programming Language :: Python :: 3 :: Only
- Classifier: Programming Language :: Python :: 3.10
- Classifier: Programming Language :: Python :: 3.11
- Classifier: Programming Language :: Python :: 3.12
- Classifier: Programming Language :: Python :: 3.13
- Classifier: Programming Language :: Python :: Implementation :: CPython
- Classifier: Programming Language :: Python :: Implementation :: PyPy
- Requires-Python: >=3.10
- Requires-Dist: langchain-core>=1.0.0
- Requires-Dist: langgraph-checkpoint<4.0.0,>=2.1.0
- Description-Content-Type: text/markdown
- # LangGraph Prebuilt
- This library defines high-level APIs for creating and executing LangGraph agents and tools.
- > [!IMPORTANT]
- > This library is meant to be bundled with `langgraph`, don't install it directly
- ## Agents
- `langgraph-prebuilt` provides an [implementation](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.chat_agent_executor.create_react_agent) of a tool-calling [ReAct-style](https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/#react-implementation) agent - `create_react_agent`:
- ```bash
- pip install langchain-anthropic
- ```
- ```python
- from langchain_anthropic import ChatAnthropic
- from langgraph.prebuilt import create_react_agent
- # Define the tools for the agent to use
- def search(query: str):
- """Call to surf the web."""
- # This is a placeholder, but don't tell the LLM that...
- if "sf" in query.lower() or "san francisco" in query.lower():
- return "It's 60 degrees and foggy."
- return "It's 90 degrees and sunny."
- tools = [search]
- model = ChatAnthropic(model="claude-3-7-sonnet-latest")
- app = create_react_agent(model, tools)
- # run the agent
- app.invoke(
- {"messages": [{"role": "user", "content": "what is the weather in sf"}]},
- )
- ```
- ## Tools
- ### ToolNode
- `langgraph-prebuilt` provides an [implementation](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.tool_node.ToolNode) of a node that executes tool calls - `ToolNode`:
- ```python
- from langgraph.prebuilt import ToolNode
- from langchain_core.messages import AIMessage
- def search(query: str):
- """Call to surf the web."""
- # This is a placeholder, but don't tell the LLM that...
- if "sf" in query.lower() or "san francisco" in query.lower():
- return "It's 60 degrees and foggy."
- return "It's 90 degrees and sunny."
- tool_node = ToolNode([search])
- tool_calls = [{"name": "search", "args": {"query": "what is the weather in sf"}, "id": "1"}]
- ai_message = AIMessage(content="", tool_calls=tool_calls)
- # execute tool call
- tool_node.invoke({"messages": [ai_message]})
- ```
- ### ValidationNode
- `langgraph-prebuilt` provides an [implementation](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.tool_validator.ValidationNode) of a node that validates tool calls against a pydantic schema - `ValidationNode`:
- ```python
- from pydantic import BaseModel, field_validator
- from langgraph.prebuilt import ValidationNode
- from langchain_core.messages import AIMessage
- class SelectNumber(BaseModel):
- a: int
- @field_validator("a")
- def a_must_be_meaningful(cls, v):
- if v != 37:
- raise ValueError("Only 37 is allowed")
- return v
- validation_node = ValidationNode([SelectNumber])
- validation_node.invoke({
- "messages": [AIMessage("", tool_calls=[{"name": "SelectNumber", "args": {"a": 42}, "id": "1"}])]
- })
- ```
- ## Agent Inbox
- The library contains schemas for using the [Agent Inbox](https://github.com/langchain-ai/agent-inbox) with LangGraph agents. Learn more about how to use Agent Inbox [here](https://github.com/langchain-ai/agent-inbox#interrupts).
- ```python
- from langgraph.types import interrupt
- from langgraph.prebuilt.interrupt import HumanInterrupt, HumanResponse
- def my_graph_function():
- # Extract the last tool call from the `messages` field in the state
- tool_call = state["messages"][-1].tool_calls[0]
- # Create an interrupt
- request: HumanInterrupt = {
- "action_request": {
- "action": tool_call['name'],
- "args": tool_call['args']
- },
- "config": {
- "allow_ignore": True,
- "allow_respond": True,
- "allow_edit": False,
- "allow_accept": False
- },
- "description": _generate_email_markdown(state) # Generate a detailed markdown description.
- }
- # Send the interrupt request inside a list, and extract the first response
- response = interrupt([request])[0]
- if response['type'] == "response":
- # Do something with the response
- ...
- ```
|