Skip to main content

When to use LangChain

  • You’re already using LangChain or LangGraph
  • You want pre-built agent patterns (ReAct, etc.)
  • You need LangChain’s ecosystem of integrations

Create an agent

rayai create-agent my_agent --framework langchain

Run LangChain tools on Ray

Wrap any LangChain tool to execute on Ray workers:
from langchain.agents import create_agent
from langchain_community.tools import DuckDuckGoSearchRun
from rayai.adapters import from_langchain_tool

# Wrap for Ray execution (returns a LangChain tool)
search = from_langchain_tool(DuckDuckGoSearchRun(), num_cpus=1)

# Use directly with LangChain agents (requires OPENAI_API_KEY env var)
agent = create_agent(model="openai:gpt-4o-mini", tools=[search])

Use Ray tools with LangChain

Wrap Ray tools for use with LangChain agents:
from langchain.agents import create_agent
from rayai import tool
from rayai.adapters import RayToolWrapper, AgentFramework

@tool(desc="Search the web", num_cpus=1)
def search_web(query: str) -> str:
    return f"Results for: {query}"

# Wrap for LangChain
wrapper = RayToolWrapper(framework=AgentFramework.LANGCHAIN)
lc_tools = wrapper.wrap_tools([search_web])

# Use with any LangChain agent (requires OPENAI_API_KEY env var)
agent = create_agent(model="openai:gpt-4o-mini", tools=lc_tools)

Cross-framework tools

Use tools from any framework with your LangChain agents. RayToolWrapper auto-detects the source framework and converts tools to LangChain-compatible BaseTool instances:
from langchain.agents import create_agent
from pydantic_ai import Tool as PydanticTool
from rayai.adapters import RayToolWrapper, AgentFramework

# Pydantic AI tool
def multiply(x: int, y: int) -> int:
    """Multiply two numbers."""
    return x * y

pydantic_tool = PydanticTool(multiply, name="multiply")

# Plain Python function
def greet(name: str) -> str:
    """Greet someone by name."""
    return f"Hello, {name}!"

# Convert ANY tools to LangChain format
wrapper = RayToolWrapper(framework=AgentFramework.LANGCHAIN)
lc_tools = wrapper.wrap_tools([pydantic_tool, greet], num_cpus=1)

# Use with LangChain agent - all tools execute on Ray (requires OPENAI_API_KEY env var)
agent = create_agent(model="openai:gpt-4o-mini", tools=lc_tools)
The wrapper auto-detects: Ray @tool functions, LangChain BaseTool, Pydantic AI Tool, and plain Python callables.

Next steps