2.8 KiB
2.8 KiB
Что реализовано
- Добавлен пакет
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‑адрес сервера. - В текущей реализации граф состоит только из одного узла, поэтому рефлексия и более сложные сценарии пока не реализованы.