Add README.md
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# LangGraph CLI Agent
|
||||
|
||||
## Overview
|
||||
This repository contains a simple command‑line agent built with **LangGraph** and **LangChain OpenAI**. The agent:
|
||||
|
||||
1. **Plans** a user‑supplied task into 3‑6 discrete steps.
|
||||
2. **Executes** each step sequentially, collecting results.
|
||||
3. **Summarises** the outcome after all steps are finished.
|
||||
|
||||
The agent runs locally and can use either an OpenAI API key or a local Ollama model.
|
||||
|
||||
## Installation
|
||||
```bash
|
||||
# Create a virtual environment (recommended)
|
||||
python -m venv venv
|
||||
source venv/bin/activate # On Windows use `venv\Scripts\activate`
|
||||
|
||||
# Install dependencies
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
The `requirements.txt` file contains:
|
||||
```text
|
||||
langgraph>=1.0.0
|
||||
langchain-openai>=0.2.0
|
||||
langchain-ollama>=0.1.0
|
||||
```
|
||||
|
||||
## Configuration
|
||||
The agent automatically chooses an LLM provider:
|
||||
|
||||
| Environment Variable | Meaning | Default |
|
||||
|----------------------|---------|---------|
|
||||
| `OPENAI_API_KEY` | OpenAI API key | *None* |
|
||||
| `CHAT_MODEL` | Model name for local Ollama | `llama3` |
|
||||
| `OLLAMA_BASE_URL` | Base URL for local Ollama | `http://localhost:11434/v1` |
|
||||
|
||||
If `OPENAI_API_KEY` is set, the agent uses the OpenAI endpoint. Otherwise it falls back to the local Ollama model.
|
||||
|
||||
## Usage
|
||||
```bash
|
||||
python agent.py "Compare Python and JavaScript"
|
||||
```
|
||||
|
||||
Typical output:
|
||||
```
|
||||
===== PLAN =====
|
||||
1. Compare the syntax of Python and JavaScript.
|
||||
2. Discuss performance considerations.
|
||||
3. Evaluate ecosystem support.
|
||||
4. Summarise key differences.
|
||||
|
||||
===== RESULTS =====
|
||||
[Step 1] Python uses indentation for blocks, whereas JavaScript uses braces.
|
||||
[Step 2] JavaScript is generally faster in the browser, but Python excels in data science.
|
||||
[Step 3] Python has a richer scientific stack; JavaScript dominates web development.
|
||||
[Step 4] Python is best for backend and data work; JavaScript is essential for frontend.
|
||||
|
||||
===== SUMMARY =====
|
||||
Python offers strong support for scientific computing and backend tasks, while JavaScript remains the de‑facto language for web development. Both languages have robust ecosystems, but their strengths differ.
|
||||
```
|
||||
|
||||
## Development
|
||||
- **Graph**: The graph is defined in `agent.py` using `StateGraph`. The state is a `TypedDict` named `PlanningState`.
|
||||
- **Error handling**: All LLM calls are wrapped in try/except blocks. Parsing errors raise descriptive exceptions.
|
||||
- **Testing**: The project includes minimal unit tests for plan parsing and integration tests that run the graph on a sample task.
|
||||
|
||||
Feel free to extend the graph with more sophisticated nodes or to plug in different LLMs.
|
||||
Reference in New Issue
Block a user