feat: solution for 'Повторный экзамен #2: Граф с рефлексией на код'

This commit is contained in:
2026-06-30 11:31:06 +03:00
parent 0b52b24b4d
commit b09469b196
+39 -74
View File
@@ -1,38 +1,26 @@
# Graph with Reflection on Code
A lightweight Python project that demonstrates how to build a **LangGraph** workflow powered by **LangChain** and the **OpenAI** API.
The graph processes a piece of code, generates a reflection on it, and returns a concise summary.
This repository demonstrates how to build a conversational agent that can analyze and reflect on Python code using **LangGraph** and **LangChain OpenAI**. The agent can parse code, generate explanations, and answer questions about the code structure.
> **Repository**: <https://git.brojs.ru/kuzakhmetovartur/povtornyy-ekzamen-2-graf-s-refleksiey-na>
## Features
---
- **LangGraph**: Orchestrates the conversation flow and manages state across multiple turns.
- **LangChain OpenAI**: Provides language model capabilities via OpenAIs GPT-4 (or any compatible model).
- Code parsing and analysis using the `ast` module.
- Interactive CLI for asking questions about a Python file.
## 📌 Overview
## Getting Started
- **LangGraph** orchestrates the flow of data between nodes.
- **LangChain** provides the language model wrappers and utilities.
- **OpenAI** the LLM that performs code analysis and reflection.
### Prerequisites
The workflow consists of three main nodes:
- Python 3.10+
- An OpenAI API key. Set it in your environment:
1. **Input Node** receives raw code.
2. **Analysis Node** calls the OpenAI model to analyze the code.
3. **Reflection Node** generates a reflection and summary.
```bash
export OPENAI_API_KEY="your_api_key_here"
```
The graph is defined in `graph.py` and can be executed via the CLI or imported as a library.
---
## 🚀 Features
- **Code Analysis** extracts key functions, classes, and comments.
- **Reflection Generation** produces a humanreadable reflection on the code quality, style, and potential improvements.
- **Modular Design** each node can be replaced or extended independently.
- **OpenAI Integration** uses the `gpt-4o-mini` model by default (configurable).
---
## 🛠️ Installation
### Installation
```bash
# Clone the repository
@@ -41,76 +29,53 @@ cd povtornyy-ekzamen-2-graf-s-refleksiey-na
# Create a virtual environment (optional but recommended)
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
# Install dependencies
pip install -r requirements.txt
```
> **Requirements**
> - Python 3.10+
> - `langgraph`, `langchain`, `openai` (listed in `requirements.txt`)
> - An OpenAI API key set as the environment variable `OPENAI_API_KEY`.
`requirements.txt` contains:
---
```
langchain==0.2.0
langgraph==0.1.0
openai==1.0.0
```
## 📦 Usage
### Usage
### CommandLine
Run the main script and provide the path to a Python file you want to analyze:
```bash
python main.py --file path/to/your_code.py
python main.py path/to/your_script.py
```
The script will:
You will be prompted to ask questions about the code. The agent will respond using the OpenAI model and the conversation graph.
1. Load the file content.
2. Run it through the LangGraph workflow.
3. Print the reflection and summary to the console.
### Example
### Programmatic
```python
from graph import CodeReflectionGraph
graph = CodeReflectionGraph()
result = graph.run(code="def hello():\n print('Hello, world!')")
print(result["reflection"])
```bash
$ python main.py example.py
Enter your question (or type 'exit' to quit): What does the `add` function do?
The `add` function takes two numbers, `a` and `b`, and returns their sum.
```
---
## 📁 Project Structure
## Project Structure
```
povtornyy-ekzamen-2-graf-s-refleksiey-na/
├── graph.py # LangGraph workflow definition
├── main.py # CLI entry point
├── requirements.txt # Python dependencies
├── README.md # This file
└── tests/
└── test_graph.py # Unit tests
├── main.py # Entry point
├── code_analyzer.py # Code parsing utilities
├── graph.py # LangGraph definition
├── requirements.txt
└── README.md
```
---
## License
## 🤝 Contributing
Feel free to open issues or submit pull requests.
Please follow the existing coding style and add tests for new features.
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
---
## 📄 License
MIT License see the [LICENSE](LICENSE) file for details.
---
## 📞 Contact
- **Author**: Artur Kuzakhmetov
- **Email**: artur.kuzakhmetov@example.com
---
END
*This project was developed as part of a coursework assignment. It showcases the integration of LangGraph and LangChain OpenAI for code analysis and reflection.*