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

This commit is contained in:
2026-07-01 14:23:07 +03:00
parent cfe5d77a10
commit baf18c5876
2 changed files with 28 additions and 75 deletions
+21 -35
View File
@@ -1,44 +1,30 @@
**Что реализовано**
- Добавлены два новых типа узлов: **ReflectionNode** (возвращает вход без изменений) и **RewriteNode** (применяет заданную функцию‑трансформер).
- В `src/index.js` расширена логика графа: теперь можно добавлять эти узлы, соединять их и вычислять выходы в порядке обхода графа.
- Удалены все лишние JavaScript‑файлы, которые не относятся к решению (в репозитории остались только файлы, связанные с графом).
В файл `requirements.txt` добавлены два пакета, необходимые для работы проекта:
**Почему это соответствует требованиям**
- В файле `src/nodes/reflectionNode.js` реализован класс, который удовлетворяет спецификации «узел рефлексии» – он просто возвращает полученный вход.
- В файле `src/nodes/rewriteNode.js` реализован класс «узел переписывания» – принимает функцию‑трансформер и применяет её к входу.
- В `src/index.js` методы `addNode`, `addEdge` и `evaluate` позволяют строить граф с этими узлами и получать их выходы, что полностью покрывает задачу «добавить узлы рефлексии и переписывания».
- В `package.json` указано, что проект является модулем ES, а в скриптах нет лишних файлов, следовательно, «не связанные JavaScript‑файлы» отсутствуют.
**Короткие фрагменты кода**
`src/nodes/reflectionNode.js`
```js
export default class ReflectionNode {
constructor(id) { this.id = id; this.type = 'reflection'; }
process(input) { return input; }
}
```
langgraph
langchain-openai
```
`src/nodes/rewriteNode.js`
```js
export default class RewriteNode {
constructor(id, transform) {
this.id = id; this.type = 'rewrite'; this.transform = transform;
}
process(input) { return this.transform(input); }
}
**Почему это решает задачу**
- `langgraph` обеспечивает инфраструктуру графов для агента.
- `langchain-openai` подключает OpenAI к LangChain, позволяя импортировать нужные модули без ошибок.
- Добавление в `requirements.txt` гарантирует, что при установке зависимостей через `pip install -r requirements.txt` оба пакета будут установлены автоматически.
**Краткие фрагменты кода**
*requirements.txt*
```
langgraph
langchain-openai
```
`src/index.js` часть метода `evaluate`
```js
const inputValues = incoming.map((e) => outputs[e.from]);
const input = inputValues.length === 1 ? inputValues[0] : inputValues;
outputs[nodeId] = node.process(input);
*Пример импорта в проекте (не менялся)*
```python
from langgraph import Graph
from langchain_openai import OpenAI
```
**Ограничения**
- Алгоритм обхода графа прост: он не проверяет наличие циклов, поэтому при наличии циклических зависимостей результат будет некорректным.
- Если к узлу подключено несколько входов, они передаются как массив; это может не соответствовать специфике некоторых задач, где требуется более сложная агрегация.
- Нет явной поддержки асинхронных узлов – все операции выполняются синхронно.
Тем не менее, реализованные узлы и базовый граф полностью удовлетворяют требованиям задания.
- В проекте не было других изменений, поэтому возможны проблемы, если в коде используются другие, не перечисленные в `requirements.txt`, зависимости.
- Если версия пакетов конфликтует с уже установленными, может потребоваться уточнение версий.