LangChain chat model wrapper for Claude Code Agent SDK
Project description
langchain-claude-code
LangChain chat model wrapper for the Claude Code Agent SDK. Use Claude Code as a drop-in LangChain BaseChatModel with full tool support, streaming, and LangGraph compatibility.
Prerequisites
Claude Code CLI (required):
npm install -g @anthropic-ai/claude-code
Installation
pip install langchain-claude-code
With example dependencies:
pip install langchain-claude-code[examples]
Authentication
Option 1: API Key (for Anthropic API users)
from langchain_claude_code import ClaudeCodeChatModel
model = ClaudeCodeChatModel(api_key="sk-ant-...")
Or set the environment variable:
export ANTHROPIC_API_KEY="sk-ant-..."
Option 2: OAuth Token (for Claude Max subscribers)
from langchain_claude_code import ClaudeCodeChatModel
model = ClaudeCodeChatModel(oauth_token="...")
Or set the environment variable:
export CLAUDE_CODE_OAUTH_TOKEN="..."
Quick Start
Basic Usage
import asyncio
from langchain_claude_code import ClaudeCodeChatModel
from langchain_core.messages import HumanMessage
async def main():
model = ClaudeCodeChatModel(model="sonnet")
response = await model.ainvoke([HumanMessage(content="What is 2 + 2?")])
print(response.content)
asyncio.run(main())
With Tool Binding
from langchain_claude_code import ClaudeCodeChatModel
from langchain_community.tools.ddg_search.tool import DuckDuckGoSearchTool
model = ClaudeCodeChatModel(model="haiku")
model = model.bind_tools([DuckDuckGoSearchTool()])
response = await model.ainvoke([
HumanMessage(content="Search for the latest news about AI")
])
Using Claude Code's Built-in Tools
from langchain_claude_code import ClaudeCodeChatModel, ClaudeTool
model = ClaudeCodeChatModel(
model="sonnet",
allowed_tools=[
ClaudeTool.WEB_SEARCH,
ClaudeTool.WEB_FETCH,
ClaudeTool.BASH,
ClaudeTool.READ,
ClaudeTool.WRITE,
],
)
Streaming
async for chunk in model.astream([HumanMessage(content="Write a poem")]):
print(chunk.content, end="", flush=True)
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
model |
str |
"opus" |
Model to use: opus, sonnet, haiku |
permission_mode |
str |
"default" |
Permission mode: default, acceptEdits, plan, bypassPermissions |
allowed_tools |
list |
[] |
List of allowed Claude Code tools |
disallowed_tools |
list |
[] |
List of disallowed tools |
system_prompt |
str |
None |
Custom system prompt |
max_turns |
int |
None |
Maximum conversation turns |
max_budget_usd |
float |
None |
Maximum budget in USD |
cwd |
str |
None |
Working directory for file operations |
api_key |
str |
None |
Anthropic API key |
oauth_token |
str |
None |
Claude Code OAuth token |
Permission Modes
| Mode | Description |
|---|---|
default |
Prompts for confirmation on potentially dangerous operations |
acceptEdits |
Automatically accepts file edits without confirmation |
plan |
Planning mode - generates plans without executing |
bypassPermissions |
Bypasses all permission checks (use with caution) |
Security Note: When using
acceptEditsorbypassPermissions, Claude Code will modify your filesystem without confirmation. Use these modes only in sandboxed environments or when you trust the input.
Available Tools
from langchain_claude_code import ClaudeTool
# File operations
ClaudeTool.READ
ClaudeTool.WRITE
ClaudeTool.EDIT
ClaudeTool.GLOB
ClaudeTool.GREP
# Shell
ClaudeTool.BASH
ClaudeTool.BASH_OUTPUT
# Web
ClaudeTool.WEB_SEARCH
ClaudeTool.WEB_FETCH
# Other
ClaudeTool.TASK
ClaudeTool.TODO_WRITE
Examples
See the examples/ directory for complete examples:
bind_tools_example.py- Using LangChain tools with Claude Codedeepagents_example.py- Integration with DeepAgents/LangGraph
License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_claude_code-0.1.0.tar.gz.
File metadata
- Download URL: langchain_claude_code-0.1.0.tar.gz
- Upload date:
- Size: 184.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
959273ee091374e087a657846a0258c287e0dbd7c4c0c8361875bc53e6babadb
|
|
| MD5 |
a0c6fadd8eec8028d953aa0539f40925
|
|
| BLAKE2b-256 |
e56b0d4ecd906dd70a8f018cf555360e71718e48e4c8856994c9a53cac423297
|
File details
Details for the file langchain_claude_code-0.1.0-py3-none-any.whl.
File metadata
- Download URL: langchain_claude_code-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f98d851654793e1d8cf3cc42aa5a33ff32b46e5f491ba8ff51d08b3279b507a
|
|
| MD5 |
4cb5d0bf3d16ae063a6610b06bb7727e
|
|
| BLAKE2b-256 |
b7bdaef448681b6ebc1bca59fd9a67019f5225caec1ea17a1809930eec5491a3
|