Skip to main content

LangChain chat model wrapper for Claude Code Agent SDK

Project description

langchain-claude-code

PyPI version License: MIT Python 3.11+

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 acceptEdits or bypassPermissions, 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 Code
  • deepagents_example.py - Integration with DeepAgents/LangGraph

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_claude_code-0.1.0.tar.gz (184.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_claude_code-0.1.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

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

Hashes for langchain_claude_code-0.1.0.tar.gz
Algorithm Hash digest
SHA256 959273ee091374e087a657846a0258c287e0dbd7c4c0c8361875bc53e6babadb
MD5 a0c6fadd8eec8028d953aa0539f40925
BLAKE2b-256 e56b0d4ecd906dd70a8f018cf555360e71718e48e4c8856994c9a53cac423297

See more details on using hashes here.

File details

Details for the file langchain_claude_code-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_claude_code-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f98d851654793e1d8cf3cc42aa5a33ff32b46e5f491ba8ff51d08b3279b507a
MD5 4cb5d0bf3d16ae063a6610b06bb7727e
BLAKE2b-256 b7bdaef448681b6ebc1bca59fd9a67019f5225caec1ea17a1809930eec5491a3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page