90 lines
2.2 KiB
Markdown
90 lines
2.2 KiB
Markdown
# LangGraph Research Brief Agent
|
||
|
||
This project demonstrates how to build a LangGraph agent that generates a short research brief for a given topic.
|
||
The agent:
|
||
|
||
1. Creates an outline of 4‑5 research steps.
|
||
2. For each step, performs a web search (via Tavily) and writes a concise note.
|
||
3. Synthesizes all notes into a coherent brief.
|
||
|
||
## Prerequisites
|
||
|
||
- Python 3.10+
|
||
- A **Tavily** API key (free tier available).
|
||
- An **OpenAI** API key (or any compatible LLM provider).
|
||
|
||
## Setup
|
||
|
||
```bash
|
||
# Clone the repository
|
||
git clone https://github.com/your-username/langgraph-research-brief.git
|
||
cd langgraph-research-brief
|
||
|
||
# Create a virtual environment (optional but recommended)
|
||
python -m venv venv
|
||
source venv/bin/activate # On Windows: venv\Scripts\activate
|
||
|
||
# Install dependencies
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
Create a `.env` file in the project root based on the example:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Edit `.env` and replace the placeholders with your actual keys:
|
||
|
||
```
|
||
OPENAI_API_KEY=sk-...
|
||
TAVILY_API_KEY=your_tavily_key
|
||
```
|
||
|
||
## Running the Agent
|
||
|
||
```bash
|
||
python src/main.py
|
||
```
|
||
|
||
You should see output similar to:
|
||
|
||
```
|
||
=== Outline ===
|
||
1. Identify the security requirements for MCP integration
|
||
2. Review LangChain's authentication mechanisms
|
||
3. Evaluate secure communication protocols
|
||
4. Test the integration in a sandbox environment
|
||
5. Document best practices and compliance checks
|
||
|
||
=== Notes ===
|
||
[Step 1] ... (5‑8 sentence note)
|
||
[Step 2] ... (5‑8 sentence note)
|
||
...
|
||
|
||
=== Final Brief ===
|
||
...
|
||
```
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
src/
|
||
├── main.py # Entry point
|
||
├── graph.py # LangGraph definition
|
||
├── nodes.py # Node implementations
|
||
├── state.py # TypedDict for state
|
||
├── .env.example # Environment variable template
|
||
requirements.txt
|
||
README.md
|
||
```
|
||
|
||
## Customization
|
||
|
||
- **Topic**: Change the `default_topic` variable in `src/main.py` to generate a brief on a different subject.
|
||
- **LLM**: Swap `ChatOpenAI` for another provider (e.g., Ollama) by adjusting the imports and initialization in `src/nodes.py`.
|
||
- **Search**: Replace `TavilySearchResults` with another search tool if desired.
|
||
|
||
## License
|
||
|
||
MIT License |