Skip to content
This repository was archived by the owner on Feb 11, 2026. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ Here are the currently supported quickstarts:
| Quickstart Name | Location | Description | Usage Options |
|----------------|----------|-------------|---------------|
| [Deep Research](deep_research/README.md) | `deep_research/` | A research agent that conducts multi-step web research using Tavily for URL discovery, fetches full webpage content, and coordinates work through parallel sub-agents and strategic reflection | **Jupyter Notebook** or **LangGraph Server** |
| [Developer](developer/README.md) | `developer/` | A software developer agent that will break down a coding task into a series of steps
and execute on them, using web search via `Tavily` to help find the best tooling and practices. | **Jupyter Notebook** or **LangGraph Server** |

## Built-In Deepagent Components

Expand Down
2 changes: 1 addition & 1 deletion deep_research/research_agent.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -2043,7 +2043,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.1"
"version": "3.12.11"
}
},
"nbformat": 4,
Expand Down
12 changes: 12 additions & 0 deletions developer/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# API Keys for Developer Agent Example
# Copy this file to .env and fill in your actual API keys

# Anthropic API Key (for Claude Sonnet 4.5)
ANTHROPIC_API_KEY=your_anthropic_api_key_here

# Tavily API Key (for web search)
TAVILY_API_KEY=your_tavily_api_key_here

# LangSmith API Key (required for LangGraph local server)
# Get your key at: https://smith.langchain.com/settings
LANGSMITH_API_KEY=your_langsmith_api_key_here
1 change: 1 addition & 0 deletions developer/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
agent_workspace
100 changes: 100 additions & 0 deletions developer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# 🚀 Developer Agent

## 🚀 Quickstart

**Prerequisites**: Install [uv](https://docs.astral.sh/uv/) package manager:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

Ensure you are in the `developer` directory:
```bash
cd developer
```

Install packages:
```bash
uv sync
```

Set your API keys in your environment:

```bash
export ANTHROPIC_API_KEY=your_anthropic_api_key_here # Required for Claude model - or you could use any LLM model youw ant
export TAVILY_API_KEY=your_tavily_api_key_here # Required for web search ([get one here](https://www.tavily.com/)) with a generous free tier
export LANGSMITH_API_KEY=your_langsmith_api_key_here # [LangSmith API key](https://smith.langchain.com/settings) (free to sign up)
```

## Usage Options

You can run this quickstart in two ways:

### Option 1: Jupyter Notebook

Run the interactive notebook to step through building the agent:

```bash
uv run jupyter notebook develoer_agent.ipynb
```

### Option 2: LangGraph Server

Run a local [LangGraph server](https://langchain-ai.github.io/langgraph/tutorials/langgraph-platform/local-server/) with a web interface:

```bash
langgraph dev
```

LangGraph server will open a new browser window with the Studio interface, which you can submit your requirements for an application to:

<img width="2869" height="1512" alt="Screenshot 2025-11-17 at 11 42 59 AM" src="https://github.com/user-attachments/assets/03090057-c199-42fe-a0f7-769704c2124b" />

You can also connect the LangGraph server to a [UI specifically designed for deepagents](https://github.com/langchain-ai/deep-agents-ui):

```bash
$ git clone https://github.com/langchain-ai/deepagents-ui.git
$ cd deepagents-ui
$ yarn install
$ yarn dev
```

Then follow the instructions in the [deepagents-ui README](https://github.com/langchain-ai/deepagents-ui?tab=readme-ov-file#connecting-to-a-langgraph-server) to connect the UI to the running LangGraph server.

This provides a user-friendly chat interface and visualization of files in state.

<img width="2039" height="1495" alt="Screenshot 2025-11-17 at 1 11 27 PM" src="https://github.com/user-attachments/assets/d559876b-4c90-46fb-8e70-c16c93793fa8" />


### Custom Model

By default, `deepagents` uses `"claude-sonnet-4-5-20250929"`. You can customize this by passing any [LangChain model object](https://python.langchain.com/docs/integrations/chat/). See the Deepagents package [README](https://github.com/langchain-ai/deepagents?tab=readme-ov-file#model) for more details.

```python
from langchain.chat_models import init_chat_model
from deepagents import create_deep_agent

# Using Claude
model = init_chat_model(model="anthropic:claude-sonnet-4-5-20250929", temperature=0.0)

# Using Gemini
from langchain_google_genai import ChatGoogleGenerativeAI
model = ChatGoogleGenerativeAI(model="gemini-3-pro-preview")

agent = create_deep_agent(
model=model,
)
```

### Custom Instructions

The agent uses custom instructions defined in `developer/developer_agent/prompts.py` that complement (rather than duplicate) the default middleware instructions. You can modify these in any way you want.


### Custom Tools

The deep research agent adds the following custom tools beyond the built-in deepagent tools. You can also use your own tools, including via MCP servers. See the Deepagents package [README](https://github.com/langchain-ai/deepagents?tab=readme-ov-file#mcp) for more details.

| Tool Name | Description |
|-----------|-------------|
| `tavily_search` | Web search tool that uses Tavily purely as a URL discovery engine. Performs searches using Tavily API to find relevant URLs, fetches full webpage content via HTTP with proper User-Agent headers (avoiding 403 errors), and returns the complete content without summarization to preserve all information for the agent's analysis.
| `fetch_webpage_content` | Fetches the content at a webpage and converts it to a human and LLM-friendy markdown format.
35 changes: 35 additions & 0 deletions developer/agent.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import os
import asyncio

from deepagents import create_deep_agent
from deepagents.backends import FilesystemBackend
from langchain.chat_models import init_chat_model

from developer_agent import DEVELOPER_SYSTEM_PROMPT, tavily_search, fetch_webpage_content

WORKSPACE_DIR = "agent_workspace"


# Model Claude 4.5 - can replace with whichever you like
model = init_chat_model(model="anthropic:claude-sonnet-4-5-20250929", temperature=0.0)


def initialize_backend():
# Check if agent_workspace folder exists, create it if it doesn't
if not os.path.exists(WORKSPACE_DIR):
os.makedirs(WORKSPACE_DIR)
# Create a FileSystem backend for our agent to do its work in
return FilesystemBackend(
root_dir=WORKSPACE_DIR,
virtual_mode=True)


async def agent():
backend = await asyncio.to_thread(initialize_backend)
agent = create_deep_agent(
model=model,
backend=backend,
system_prompt=DEVELOPER_SYSTEM_PROMPT,
tools=[tavily_search, fetch_webpage_content],
)
return agent
Loading