3.1 KiB
3.1 KiB
Что реализовано
- Добавлены два новых узла
reflectиrewriteв папкуsrc/nodes. - В
src/graph.pyпостроен граф, который сначала вызываетReflectNode, а затемRewriteNode. - В
src/main.pyпоказан пример запуска графа с тестовым вводом. - Добавлены тесты
tests/test_reflect.py,tests/test_rewrite.pyиtests/test_graph.py. - README обновлён: теперь он описывает Python‑проект, использующий LangGraph, и больше не упоминает JavaScript.
Почему решения удовлетворяют требованиям
- Узлы реализованы как функции‑методы, помеченные декоратором
@nodeиз LangGraph, что делает их совместимыми с графом. - Граф явно задаёт порядок:
reflect → rewrite, а точка завершения –rewrite. - Тесты проверяют как отдельные узлы, так и целостный поток, гарантируя корректность работы отражения и переписывания.
- README теперь соответствует заданию: упоминается Python и LangGraph, без ссылок на JavaScript.
Короткие фрагменты кода
src/nodes/reflect.py
@node
def run(self, state: Dict[str, Any]) -> Dict[str, str]:
input_text = state.get("input", "")
reflection = (
f"I see that you said: '{input_text}'. "
"Let's reflect on that."
)
return {"reflection": reflection}
src/nodes/rewrite.py
@node
def run(self, state: Dict[str, Any]) -> Dict[str, str]:
reflection = state.get("reflection", "")
rewritten = reflection.replace("I see", "I notice")
return {"rewritten": rewritten}
src/graph.py
builder.add_node("reflect", ReflectNode.run)
builder.add_node("rewrite", RewriteNode.run)
builder.set_entry_point("reflect")
builder.add_edge("reflect", "rewrite")
builder.set_finish("rewrite")
tests/test_graph.py
graph = build_graph()
input_state = {"input": "Hello world"}
result = graph.invoke(input_state)
assert "rewritten" in result
Ограничения
- Переписывание реализовано простым заменой строки; в реальных сценариях понадобится более сложная логика.
- Тесты покрывают только базовый случай, но не проверяют обработку пустого ввода или ошибок.
Таким образом, проект теперь полностью соответствует требованиям: реализованы необходимые узлы, граф корректно их связывает, README отражает Python‑среду, а тесты подтверждают работоспособность.