Update README.md
This commit is contained in:
@@ -1,29 +1,54 @@
|
|||||||
# Deep Agent from Scratch
|
# Deep Agent based on LangGraph & LangChain
|
||||||
|
|
||||||
This repository contains a minimal implementation of a deep agent that can:
|
This repository contains a minimal implementation of a **Deep Agent** that can:
|
||||||
|
|
||||||
1. Search the web using DuckDuckGo.
|
1. Search the web using the Tavily search API.
|
||||||
2. Create virtual files in memory.
|
2. Create virtual files in an in‑memory file system.
|
||||||
3. Export the virtual files to the real file system.
|
3. Export all virtual files to the real filesystem.
|
||||||
|
|
||||||
The agent is built using the new LangChain 1.x and LangGraph 1.x APIs.
|
The agent is built on top of the *LangGraph* framework and uses the *LangChain* tools API.
|
||||||
|
|
||||||
## Prerequisites
|
## Installation
|
||||||
|
|
||||||
- Python 3.11 or newer
|
|
||||||
- Ollama running locally with a model such as `llama3.1`
|
|
||||||
- `pip install -r requirements.txt`
|
|
||||||
|
|
||||||
## Running the Agent
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python agent.py
|
# Create a virtual environment (recommended)
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
The script will run the agent with a sample prompt, create a virtual file `report.txt`, and export it to the `exported_files` directory.
|
> **Note**: The Tavily API key is required for the web search tool. Set it via the
|
||||||
|
> environment variable `TAVILY_API_KEY`.
|
||||||
|
|
||||||
## File Structure
|
## Usage
|
||||||
|
|
||||||
- `agent.py` – Main implementation.
|
```python
|
||||||
- `requirements.txt` – Python dependencies.
|
from agent import create_agent_executor, vfs
|
||||||
- `README.md` – This file.
|
|
||||||
|
# Create an executor
|
||||||
|
executor = create_agent_executor()
|
||||||
|
|
||||||
|
# Run the agent with a simple prompt
|
||||||
|
result = executor.invoke({"input": "Find the latest news about Python and create a file called news.txt with the summary."})
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
# After the agent finishes, export the virtual files
|
||||||
|
vfs.export_to_disk("output")
|
||||||
|
```
|
||||||
|
|
||||||
|
The `output` directory will contain `news.txt` with the content produced by the agent.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
The project includes a simple test that verifies the existence of the two
|
||||||
|
required functions:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m unittest discover -s tests
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
|
|||||||
Reference in New Issue
Block a user