Use LangGraph with Arcade
In this guide, let’s explore how to integrate Arcade tools into your LangGraph application. Follow the step-by-step instructions below. For complete working examples, see our Python and JavaScript examples.
Prerequisites
Set up your environment
Install the required packages, and ensure your environment variables are set with your Arcade and OpenAI API keys:
pip install langchain-arcade langchain-openai langgraph
Configure API keys
Provide your Arcade and OpenAI API keys. You can store them in environment variables or directly in your code:
Need an Arcade API key? Visit the Get an API key page to create one.
import os
arcade_api_key = os.environ.get("ARCADE_API_KEY", "YOUR_ARCADE_API_KEY")
openai_api_key = os.environ.get("OPENAI_API_KEY", "YOUR_OPENAI_API_KEY")
Create and manage Arcade tools
Use the ArcadeToolManager to retrieve specific tools or entire toolkits:
from langchain_arcade import ArcadeToolManager
manager = ArcadeToolManager(api_key=arcade_api_key)
# Fetch the "ScrapeUrl" tool from the "Web" toolkit
tools = manager.get_tools(tools=["Web.ScrapeUrl"])
print(manager.tools)
# Get all tools from the "Google" toolkit
tools = manager.get_tools(toolkits=["Google"])
print(manager.tools)
Set up the language model and memory
Create an AI model and bind your tools. Use MemorySaver for checkpointing:
from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import MemorySaver
model = ChatOpenAI(model="gpt-4o", api_key=openai_api_key)
bound_model = model.bind_tools(tools)
memory = MemorySaver()
Create a ReAct-style agent
Use the prebuilt ReAct agent from LangGraph to handle your Arcade tools:
from langgraph.prebuilt import create_react_agent
graph = create_react_agent(model=bound_model, tools=tools, checkpointer=memory)
Provide configuration and user query
Supply a basic config dictionary and a user query. Notice that user_id is required for tool authorization:
config = {
"configurable": {
"thread_id": "1",
"user_id": "user@example.coom"
}
}
user_input = {
"messages": [
("user", "List any new and important emails in my inbox.")
]
}
Stream the response
Stream the assistant’s output. If the tool requires authorization, the agent will ask the user to authorize the tool.
from langgraph.errors import NodeInterrupt
try:
for chunk in graph.stream(user_input, config, stream_mode="values"):
chunk["messages"][-1].pretty_print()
except NodeInterrupt as exc:
print(f"\nNodeInterrupt occurred: {exc}")
print("Please authorize the tool or update the request, then re-run.")
Tips for selecting tools
- Relevance: Pick only the tools you need. Avoid using all tools at once.
- Avoid conflicts: Be mindful of duplicate or overlapping functionality.
Next steps
Now that you have integrated Arcade tools into your LangGraph agent, you can:
- Experiment with different toolkits, such as “Math” or “Search.”
- Customize the agent’s prompts for specific tasks.
- Try out other language models and compare their performance.
Enjoy exploring Arcade and building powerful AI-enabled Python applications!