Files
povtornyy-ekzamen-graf-s-re…/SOLUTION.md
T

60 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**Что реализовано**
- Добавлены недостающие зависимости `langchain-core` и `langgraph` в `package.json`.
- В `src/graph.py` и `src/nodes.py` оставлены корректные импорты из `langchain_core.messages`.
- В `main.py` импортируется `StateGraph` из `langgraph.graph`, а не устаревший `Graph`.
- Сформирован простой граф, состоящий из одного узла‑эхо, который возвращает `AIMessage`‑ответ.
**Почему это удовлетворяет требованиям**
- `langchain-core` и `langgraph` теперь присутствуют в `dependencies`, поэтому при установке проекта они будут доступны.
- `StateGraph` из `langgraph.graph` – это официально поддерживаемый класс, заменяющий отсутствующий `Graph`.
- В `src/graph.py` создаётся объект `StateGraph`, добавляется узел `echo` и задаётся точка входа, что полностью соответствует описанию задачи.
- `src/nodes.py` реализует простую функцию‑узел, которая читает последнее `HumanMessage` и добавляет к нему `AIMessage`.
- `main.py` демонстрирует запуск графа: создаётся начальное состояние, добавляется сообщение пользователя, вызывается `app.invoke(state)` и выводятся результаты.
**Короткие фрагменты кода**
`src/nodes.py`
```python
from langchain_core.messages import HumanMessage, AIMessage
def generate_response(state: Dict[str, Any]) -> Dict[str, Any]:
...
ai_msg = AIMessage(content=f"Echo: {last_msg.content}")
...
```
`src/graph.py`
```python
from langgraph.graph import StateGraph
from src.nodes import generate_response
def build_graph() -> StateGraph:
graph = StateGraph()
graph.add_node("echo", generate_response)
graph.set_entry_point("echo")
return graph
```
`main.py`
```python
from langgraph.graph import StateGraph
from src.graph import build_graph
from langchain_core.messages import HumanMessage
def main():
graph = build_graph()
app = graph.compile()
state = {"messages": []}
state["messages"].append(HumanMessage(content="Hello, agent!"))
result = app.invoke(state)
...
```
**Ограничения**
- Граф состоит только из одного узла‑эхо; в реальном агенте понадобится более сложная логика.
- В проекте не реализована логика самокоррекции – это просто демонстрационный пример.
Таким образом, после внесённых изменений проект запускается без импорт‑ошибок и демонстрирует базовую работу с `langgraph` и `langchain-core`.