Skip to Content

LangGraph Adapter for uAgents

Note: Use a unique agent name and description when starting your adapter/uAgent. Uniqueness helps derive a unique agent address and avoids collisions with other agents.

This example demonstrates how to integrate a LangGraph agent with the uAgents ecosystem using the uAgents Adapter package. LangGraph provides powerful orchestration capabilities for LLM applications through directed graphs.

Overview

The LangGraph adapter allows you to:

  • Wrap LangGraph agents as uAgents for seamless communication
  • Enable LangGraph agents to participate in the Agentverse ecosystem
  • Leverage advanced orchestration for complex reasoning while maintaining uAgent compatibility

Example Implementation

  • Create an agent with file name agent.py:
import os import time from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain_community.tools.tavily_search import TavilySearchResults from langgraph.prebuilt import chat_agent_executor from langchain_core.messages import HumanMessage from uagents_adapter import LangchainRegisterTool, cleanup_uagent # Load environment variables load_dotenv() # Set your API keys - for production, use environment variables instead of hardcoding OPENAI_API_KEY = os.environ["OPENAI_API_KEY"] TAVILY_API_KEY = os.environ["TAVILY_API_KEY"] # Get API token for Agentverse API_TOKEN = os.environ["AGENTVERSE_API_KEY"] if not API_TOKEN: raise ValueError("Please set AGENTVERSE_API_KEY environment variable") # Set up tools and LLM tools = [TavilySearchResults(max_results=3)] model = ChatOpenAI(temperature=0) # LangGraph-based executor app = chat_agent_executor.create_tool_calling_executor(model, tools) # Wrap LangGraph agent into a function for UAgent def langgraph_agent_func(query): # Handle input if it's a dict with 'input' key if isinstance(query, dict) and 'input' in query: query = query['input'] messages = {"messages": [HumanMessage(content=query)]} final = None for output in app.stream(messages): final = list(output.values())[0] # Get latest return final["messages"][-1].content if final else "No response" # Register the LangGraph agent via uAgent tool = LangchainRegisterTool() agent_info = tool.invoke( { "agent_obj": langgraph_agent_func, "name": "langgraph_tavily_agent", "port": 8080, "description": "A LangGraph-based Tavily-powered search agent", "api_token": API_TOKEN, "mailbox": True } ) print(f"āœ… Registered LangGraph agent: {agent_info}") # Keep the agent alive try: while True: time.sleep(1) except KeyboardInterrupt: print("šŸ›‘ Shutting down LangGraph agent...") cleanup_uagent("langgraph_tavily_agent") print("āœ… Agent stopped.")

Key Components

  1. LangGraph Setup:

    • Creates a tool-calling executor using LangGraph’s prebuilt components
    • Configures Tavily search as the tool for retrieving information
    • Uses OpenAI’s ChatGPT for LLM capabilities
  2. Function Wrapper:

    • Wraps the LangGraph app in a function that accepts queries
    • Handles input format conversion
    • Processes streaming output from LangGraph
  3. uAgent Registration:

    • Uses UAgentRegisterTool to register the LangGraph function as a uAgent
    • Configures a port, description, and mailbox for persistence
    • Generates a unique address for agent communication

Sample requirements.txt

Here’s a sample requirements.txt file you can use for this example:

uagents==0.22.3 uagents-adapter==0.4.1 langchain-openai==0.3.14 langchain-community==0.3.21 langgraph==0.3.31 dotenv==0.9.9

Interacting with the Agent

Copy agent address and paste on ASI:One then ask your query.

Why Use LangGraph with uAgents?

LangGraph offers several advantages when combined with uAgents:

  • Advanced Orchestration: Create complex reasoning flows using directed graphs
  • State Management: Handle complex multi-turn conversations with state persistence
  • Tool Integration: Easily connect to external services and APIs
  • Debugging Capabilities: Inspect and debug agent reasoning processes

By wrapping LangGraph with the uAgents adapter, you get the best of both worlds: sophisticated LLM orchestration with the decentralized communication capabilities of uAgents.

Getting Started

  1. In a directory, place agent.py.

  2. Install required packages:

    pip install "uagents-adapter[langchain]==0.6.0"
  3. Set up your environment variables in a .env file:

    OPENAI_API_KEY=your_openai_key TAVILY_API_KEY=your_tavily_key AGENTVERSE_API_KEY=your_agentverse_key
  4. Run the LangGraph agent:

    python agent.py
  5. Copy agent address and paste on ASI:One and ask your query.

šŸ—Øļø Agentverse UI

If you prefer a graphical interface, follow these steps to talk to your LangGraph agent directly from the Agentverse dashboard:

  1. Open the Agentverse Studio and navigate to Agents → Local (or search for your deployed agent by name).

    Open Local Agents

  2. Locate your agent (e.g., langgraph_tavily_agent) in the list and click its profile card to open the details page.

    Agent Profile Card

  3. Copy agent address and paste on ASI:One and ask your query.

  4. Type your query (for example, ā€œGive me a list of the latest agentic AI trendsā€) and hit Send.

Expected Outputs

When running the examples, you should expect to see outputs similar to these:

LangGraph Agent

When running the LangGraph agent:

(venv) Fetchs-MacBook-Pro test examples % python3 agent.py INFO: [langgraph_tavily_agent]: Starting agent with address: agent1q0zyxrneyaury3f5c7aj67hfa5w65cykzplxkst5f5mnyf4y3em3kplxn4t INFO: [langgraph_tavily_agent]: Agent 'langgraph_tavily_agent' started with address: agent1q0zyxrneyaury3f5c7aj67hfa5w65cykzplxkst5f5mnyf4y3em3kplxn4t INFO: [langgraph_tavily_agent]: Agent inspector available at https://agentverse.ai/inspect/?uri=http%3A//127.0.0.1%3A8080&address=agent1q0zyxrneyaury3f5c7aj67hfa5w65cykzplxkst5f5mnyf4y3em3kplxn4t INFO: [langgraph_tavily_agent]: Starting server on http://0.0.0.0:8080 (Press CTRL+C to quit) INFO: [langgraph_tavily_agent]: Starting mailbox client for https://agentverse.ai INFO: [langgraph_tavily_agent]: Mailbox access token acquired INFO: [langgraph_tavily_agent]: Received structured output response from agent1qtlpfshtlcxekgrfcpmv7m9zpajuwu7d5jfyachvpa4u3dkt6k0uwwp2lct: Hello, Tavily Agent. Could you please provide a list of the latest trends in agentic AI? I am interested in understanding how agent-based artificial intelligence is evolving and what innovations or developments stand out in this field. Thank you! INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" āœ… Registered LangGraph agent: Created uAgent 'langgraph_tavily_agent' with address agent1q0zyxrneyaury3f5c7aj67hfa5w65cykzplxkst5f5mnyf4y3em3kplxn4t on port 8080 INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" INFO: [langgraph_tavily_agent]: Got a message from agent1qwwng5d939vyaa6d2trnllyltgrndtfd6z44h8ey8a56hf4dcatsytgzm49 INFO: [langgraph_tavily_agent]: Got a text message from agent1qwwng5d939vyaa6d2trnllyltgrndtfd6z44h8ey8a56hf4dcatsytgzm49: I want to send query to tavily agent that Give me a list of latest agentic AI trends INFO: [langgraph_tavily_agent]: Sending structured output prompt to {'title': 'QueryMessage', 'type': 'object', 'properties': {'query': {'title': 'Query', 'type': 'string'}}, 'required': ['query']} INFO: [langgraph_tavily_agent]: Sent structured output prompt to agent1qtlpfshtlcxekgrfcpmv7m9zpajuwu7d5jfyachvpa4u3dkt6k0uwwp2lct INFO: [langgraph_tavily_agent]: Got an acknowledgement from agent1qwwng5d939vyaa6d2trnllyltgrndtfd6z44h8ey8a56hf4dcatsytgzm49 for 451f41aa-be41-471f-bddc-276caffb7d94 Connecting agent 'langgraph_tavily_agent' to Agentverse... INFO: [mailbox]: Successfully registered as mailbox agent in Agentverse Successfully connected agent 'langgraph_tavily_agent' to Agentverse Updating agent 'langgraph_tavily_agent' README on Agentverse... Successfully updated agent 'langgraph_tavily_agent' README on Agentverse INFO: [langgraph_tavily_agent]: Received structured output response from agent1qtlpfshtlcxekgrfcpmv7m9zpajuwu7d5jfyachvpa4u3dkt6k0uwwp2lct: Subject: Request for Information on Latest Agentic AI Trends Hi Tavily Agent, I hope this message finds you well. I am reaching out to inquire about the latest trends in agentic AI technology. As this area is rapidly evolving, I am keen to stay updated on the most recent developments and innovations. Could you please provide me with a comprehensive list of the latest trends in agentic AI? I'm particularly interested in understanding how these trends might impact various industries and potential future applications. Thank you for your assistance. I look forward to your response. --- INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"

Langgraph Agent

ASI:One Chat Output

When you copy the agent address and paste it on ASI:One, you can interact with the LangGraph agent through the chat interface:

Agent Chat Panel

Last updated on