feat: solution for 'Экзамен: Самокорректирующийся агент'

This commit is contained in:
2026-06-30 16:45:22 +03:00
parent 9ff9612bbb
commit 2bd56fb1bc
3 changed files with 39 additions and 37 deletions
+15 -14
View File
@@ -1,25 +1,26 @@
# LangGraph Reflection & Rewriting Demo
# SelfCorrecting 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 selfcorrecting agent using **langgraph** and **langchainopenai**.
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.
The script will log the loaded modules and the response from the LLM.
+7 -8
View File
@@ -1,15 +1,14 @@
{
"name": "langgraph-reflection-rewrite",
"name": "self-correcting-agent",
"version": "1.0.0",
"main": "dist/index.js",
"description": "Selfcorrecting agent example using langgraph and langchainopenai",
"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"
}
}
+17 -15
View File
@@ -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());
(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);
}
})();