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

2.8 KiB
Raw Blame History

Что реализовано

  • Добавлен пакет langchain-openai в requirements.txt.
  • В src/agent.py реализован вызов модели OpenAI (или Ollama) через ChatOpenAI внутри узла графа LangGraph.
  • Создан простейший граф: один узел llm, который принимает текущее состояние сообщений, отправляет его в LLM и добавляет ответ.
  • Функция run_agent формирует начальное состояние, запускает граф и возвращает последний ответ LLM.

Почему это удовлетворяет требованиям

  • Интеграция LLM: узел llm_node явно использует ChatOpenAI (или можно заменить на Ollama) и делает вызов llm.invoke(messages).
  • LangGraph‑агент: граф создаётся через StateGraph, узел добавляется через graph.add_node, а запуск осуществляется через graph.invoke.
  • Пакет в требованиях: упоминание langchain-openai в requirements.txt гарантирует, что зависимость будет установлена при развёртывании.

Ключевые фрагменты кода

src/agent.py – инициализация LLM

llm = ChatOpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    model="gpt-4o-mini",
)

src/agent.py – узел, который отправляет запрос в LLM

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 – создание и запуск графа

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

Ограничения

  • Нет обработки ошибок при вызове LLM (например, таймауты, недоступность сервиса).
  • Нет поддержки потокового вывода (streaming).
  • Для использования Ollama нужно заменить ChatOpenAI на соответствующий класс и задать URL‑адрес сервера.
  • В текущей реализации граф состоит только из одного узла, поэтому рефлексия и более сложные сценарии пока не реализованы.