diff --git a/README.md b/README.md index 89de68f..5057b1e 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,26 @@ -# LangGraph Reflection & Rewriting Demo +# Self‑Correcting Agent -This project demonstrates a simple LangGraph state machine that includes: -- **Reflection node** – logs the current state. -- **Rewriting node** – transforms the input string to uppercase. -- **End node** – logs the final state. +This repository demonstrates a minimal setup for a self‑correcting agent using **langgraph** and **langchain‑openai**. +The project includes: + +- `package.json` – declares the required dependencies and a start script. +- `src/index.js` – imports the libraries, creates an OpenAI LLM instance, and runs a simple prompt. ## Setup ```bash +# Install dependencies npm install -npm run build + +# Run the example npm start ``` -The output will show the state at each node and the final transformed result. +> **Note**: To get a real response from the OpenAI API, set the `OPENAI_API_KEY` environment variable before running the script. -## Project Structure +```bash +export OPENAI_API_KEY=your_api_key_here +npm start +``` -- `src/langgraph.ts` – Defines the state type, node functions, and constructs the graph. -- `src/index.ts` – Entry point that runs the graph with an example input. -- `package.json` – Project metadata and dependencies. -- `tsconfig.json` – TypeScript compiler configuration. - -No JavaScript files are present; the entire project is written in TypeScript. \ No newline at end of file +The script will log the loaded modules and the response from the LLM. \ No newline at end of file diff --git a/package.json b/package.json index fc2e65f..a7811f4 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,14 @@ { - "name": "langgraph-reflection-rewrite", + "name": "self-correcting-agent", "version": "1.0.0", - "main": "dist/index.js", + "description": "Self‑correcting agent example using langgraph and langchain‑openai", + "main": "src/index.js", + "type": "module", "scripts": { - "build": "tsc", - "start": "node dist/index.js" + "start": "node src/index.js" }, "dependencies": { - "langgraph": "^0.1.0" - }, - "devDependencies": { - "typescript": "^5.0.0" + "langgraph": "latest", + "langchain-openai": "latest" } } \ No newline at end of file diff --git a/src/index.js b/src/index.js index 7f3f955..f0e0f1f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,18 +1,20 @@ -import Graph from './graph.js'; +import * as langgraph from 'langgraph'; +import { OpenAI } from 'langchain-openai'; -const g = new Graph(); +console.log('langgraph module loaded:', typeof langgraph); +console.log('OpenAI class loaded:', typeof OpenAI); -g.addNode('A'); -g.addNode('B'); -g.addNode('C'); +const llm = new OpenAI({ + apiKey: process.env.OPENAI_API_KEY || '', + modelName: 'gpt-3.5-turbo', +}); -g.addEdge('A', 'B'); -g.addEdge('B', 'C'); - -console.log('Before reflexive:'); -console.log(g.getAdjacencyList()); - -g.reflexive(); - -console.log('After reflexive:'); -console.log(g.getAdjacencyList()); \ No newline at end of file +(async () => { + const prompt = 'Hello, world!'; + try { + const response = await llm.invoke(prompt); + console.log('LLM response:', response); + } catch (error) { + console.error('Error invoking LLM:', error); + } +})(); \ No newline at end of file