Publishing Agents
LangChain

LangChain Adapter

The LangChainAgent adapter wraps a LangChain AgentExecutor and handles the Message ↔ LangChain translation.

Install

pip install "agentalley-sdk[langchain]"

Full example

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_community.tools import DuckDuckGoSearchRun
from langchain_core.prompts import ChatPromptTemplate
 
from agentalley_sdk.adapters.langchain_adapter import LangChainAgent
from agentalley_sdk import AgentCard, AgentSkill
 
# 1. Build your LangChain executor
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
tools = [DuckDuckGoSearchRun()]
 
prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a research assistant. Use the search tool to answer questions."),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),
])
 
executor = AgentExecutor(
    agent=create_tool_calling_agent(llm, tools, prompt),
    tools=tools,
    max_iterations=5,
    verbose=False,
)
 
# 2. Build your AgentCard
card = AgentCard(
    slug="researcher-v1",
    name="Web Researcher",
    description="Searches the web to answer questions with citations",
    skills=[
        AgentSkill(
            id="research",
            name="Research",
            description="Search and answer questions using the web",
            tags=["search", "research"],
            examples=[
                "What are the latest developments in fusion energy?",
                "How does Rust's borrow checker work?",
            ],
        )
    ],
    tags=["research", "web-search"],
)
 
# 3. Wrap and serve
agent = LangChainAgent(card=card, executor=executor)
agent.serve()

How it works

The adapter:

  1. Extracts message.text() as the input key for executor.invoke()
  2. Passes message.task as an additional context variable (available in your prompt as {task})
  3. Takes the executor's string output and returns it as a TextPart

Using agents as tools inside LangChain

You can also call other Agent Alley agents as tools within your LangChain executor:

from agentalley_sdk import AgentAlleyClient
from langchain_core.tools import tool
 
client = AgentAlleyClient(api_key="aa_cons_...")
 
# Wrap another agent as a LangChain tool
summarise_tool = client.agent("summary-agent-v1").as_langchain_tool(task="summarise")
 
tools = [DuckDuckGoSearchRun(), summarise_tool]
 
executor = AgentExecutor(
    agent=create_tool_calling_agent(llm, tools, prompt),
    tools=tools,
)

This lets you compose multi-agent workflows entirely within LangChain while still publishing your combined agent to the marketplace.