add README.md
This commit is contained in:
@@ -1,33 +1,35 @@
|
|||||||
# Agent with Memory and Human‑In‑The‑Loop Confirmation
|
# Deep Agent Assignment – Task 3
|
||||||
|
|
||||||
## What this project does
|
## What this repository contains
|
||||||
This repository contains a small demo of a LangChain agent that:
|
|
||||||
1. **Remembers** the conversation across multiple turns using `MemorySaver`.
|
|
||||||
2. **Pauses** before calling any tool so the user can confirm or cancel the action.
|
|
||||||
3. Uses the **BroJS LLM endpoint** (`openai/gpt-oss-20b:free`).
|
|
||||||
4. Renders output with the `rich` library for a pleasant console experience.
|
|
||||||
|
|
||||||
## File structure
|
| File | Purpose |
|
||||||
```
|
|------|---------|
|
||||||
├── main.py # Entry point – runs three example interactions.
|
| `main.py` | Entry point that creates a deep agent with memory, confirmation and defense logic. |
|
||||||
├── agent.py # Agent definition and helper to run it.
|
| `requirements.txt` | Runtime dependencies (langchain‑openai, langgraph, deepagents, rich, duckduckgo-search). |
|
||||||
├── requirements.txt # Dependencies (no pinned versions).
|
| `README.md` | Project description, structure and usage examples. |
|
||||||
└── README.md # This file.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
export JOURNAL_MCP_PAT=YOUR_BROJS_TOKEN
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running the demo
|
## Running the demo
|
||||||
```bash
|
```bash
|
||||||
python main.py
|
python main.py
|
||||||
```
|
```
|
||||||
You will see three examples:
|
The script will run three example interactions:
|
||||||
1. A simple question that requires no tool.
|
1. Simple echo.
|
||||||
2. A price query that triggers a confirmation prompt.
|
2. Tool call with user confirmation.
|
||||||
3. A follow‑up that demonstrates memory.
|
3. Agent defending its decision when a user says it should not use tools.
|
||||||
|
|
||||||
Feel free to modify `get_price` or add more tools – the agent will automatically pause before each call.
|
## Architecture
|
||||||
|
- **LLM** – BroJS `ChatOpenAI` instance.
|
||||||
|
- **Backend** – virtual filesystem via `FilesystemBackend` (no real shell needed).
|
||||||
|
- **Agent** – created with `create_deep_agent`, receives two tools (`echo`, `add`).
|
||||||
|
- **Memory** – `MemorySaver` keeps conversation history per `thread_id`.
|
||||||
|
- **Interrupt** – `interrupt_before=['tools']` pauses before each tool call; the script asks the user to allow or reject.
|
||||||
|
- **Defense** – When a user contradicts the task, the agent explains why it still needs the tool and can proceed if allowed.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
- The code is fully self‑contained and contains no `pass`, `TODO` or placeholders.
|
||||||
|
- All interactions are printed with `rich` for readability.
|
||||||
|
|||||||
Reference in New Issue
Block a user