docs/content/docs/providers/langchain.mdx
The LangChain provider transforms Composio tools into LangChain's StructuredTool format with built-in execution.
<Steps> <Step> **Install**<Tabs groupId="language" items={["Python", "TypeScript"]} persist> <Tab value="Python">
pip install composio composio_langchain langchain langchain_openai
COMPOSIO_API_KEY=xxxxxxxxx
OPENAI_API_KEY=xxxxxxxxx
<Tabs groupId="language" items={["Python", "TypeScript"]} persist> <Tab value="Python">
from composio import Composio
from composio_langchain import LangchainProvider
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
composio = Composio(provider=LangchainProvider())
llm = ChatOpenAI(model="gpt-5.2")
# Create a session for your user
session = composio.create(user_id="user_123")
tools = session.tools()
agent = create_agent(tools=tools, model=llm)
result = agent.invoke({"messages": [("user", "Send an email to [email protected] with the subject 'Hello' and body 'Hello from Composio!'")]})
print(result["messages"][-1].content)
const composio = new Composio({ provider: new LangchainProvider(), });
// Create a session for your user const session = await composio.create("user_123"); const tools = await session.tools();
const toolNode = new ToolNode(tools);
const model = new ChatOpenAI({ model: 'gpt-5.2', temperature: 0, }).bindTools(tools);
function shouldContinue({ messages }: typeof MessagesAnnotation.State) { const lastMessage = messages[messages.length - 1] as AIMessage; if (lastMessage.tool_calls?.length) { return 'tools'; } return 'end'; }
async function callModel(state: typeof MessagesAnnotation.State) { const response = await model.invoke(state.messages); return { messages: [response] }; }
const workflow = new StateGraph(MessagesAnnotation) .addNode('agent', callModel) .addEdge('start', 'agent') .addNode('tools', toolNode) .addEdge('tools', 'agent') .addConditionalEdges('agent', shouldContinue);
const app = workflow.compile();
const finalState = await app.invoke({ messages: [new HumanMessage("Send an email to [email protected] with the subject 'Hello' and body 'Hello from Composio!'")], }); console.log(finalState.messages[finalState.messages.length - 1].content);
</Tab>
</Tabs>
</Step>
</Steps>