feat: solution for 'Повторный экзамен: Граф с рефлексией и доработкой'
This commit is contained in:
+35
-16
@@ -1,26 +1,45 @@
|
||||
**Что реализовано**
|
||||
- В файл `requirements.txt` добавлен пакет `langgraph` с минимальной версией `>=0.0.1`.
|
||||
- В `main.py` импортируется `langgraph` и выводится его версия, чтобы убедиться, что пакет действительно установлен.
|
||||
- Добавлен пакет `langchain-openai` в `requirements.txt`.
|
||||
- В `src/agent.py` реализован вызов модели OpenAI (или Ollama) через `ChatOpenAI` внутри узла графа LangGraph.
|
||||
- Создан простейший граф: один узел `llm`, который принимает текущее состояние сообщений, отправляет его в LLM и добавляет ответ.
|
||||
- Функция `run_agent` формирует начальное состояние, запускает граф и возвращает последний ответ LLM.
|
||||
|
||||
**Почему это удовлетворяет требованиям**
|
||||
- Указание `langgraph>=0.0.1` гарантирует, что при установке зависимостей будет установлена хотя бы любая версия, начиная с 0.0.1, что соответствует заданной спецификации.
|
||||
- `main.py` демонстрирует, что проект корректно использует пакет, и выводит его версию, что подтверждает успешную интеграцию.
|
||||
- **Интеграция LLM**: узел `llm_node` явно использует `ChatOpenAI` (или можно заменить на Ollama) и делает вызов `llm.invoke(messages)`.
|
||||
- **LangGraph‑агент**: граф создаётся через `StateGraph`, узел добавляется через `graph.add_node`, а запуск осуществляется через `graph.invoke`.
|
||||
- **Пакет в требованиях**: упоминание `langchain-openai` в `requirements.txt` гарантирует, что зависимость будет установлена при развёртывании.
|
||||
|
||||
**Короткие фрагменты кода**
|
||||
**Ключевые фрагменты кода**
|
||||
|
||||
`requirements.txt`
|
||||
```
|
||||
langgraph>=0.0.1
|
||||
```
|
||||
|
||||
`main.py`
|
||||
`src/agent.py` – инициализация LLM
|
||||
```python
|
||||
import langgraph
|
||||
llm = ChatOpenAI(
|
||||
api_key=os.getenv("OPENAI_API_KEY"),
|
||||
model="gpt-4o-mini",
|
||||
)
|
||||
```
|
||||
|
||||
def main():
|
||||
print("Langgraph version:", langgraph.__version__)
|
||||
`src/agent.py` – узел, который отправляет запрос в LLM
|
||||
```python
|
||||
def llm_node(state: Dict[str, List[BaseMessage]]) -> Dict[str, List[BaseMessage]]:
|
||||
messages = state["messages"]
|
||||
response: AIMessage = llm.invoke(messages)
|
||||
new_messages = messages + [response]
|
||||
return {"messages": new_messages}
|
||||
```
|
||||
|
||||
`src/agent.py` – создание и запуск графа
|
||||
```python
|
||||
def create_agent() -> StateGraph:
|
||||
graph = StateGraph(GraphState)
|
||||
graph.add_node("llm", llm_node)
|
||||
graph.set_entry_point("llm")
|
||||
graph.add_edge("llm", END)
|
||||
return graph
|
||||
```
|
||||
|
||||
**Ограничения**
|
||||
- В текущей реализации не проверяется наличие других зависимостей, но это не требуется по заданию.
|
||||
- Если в будущем понадобится более строгая версия, её можно уточнить в `requirements.txt`.
|
||||
- Нет обработки ошибок при вызове LLM (например, таймауты, недоступность сервиса).
|
||||
- Нет поддержки потокового вывода (streaming).
|
||||
- Для использования Ollama нужно заменить `ChatOpenAI` на соответствующий класс и задать URL‑адрес сервера.
|
||||
- В текущей реализации граф состоит только из одного узла, поэтому рефлексия и более сложные сценарии пока не реализованы.
|
||||
Reference in New Issue
Block a user