From 044095587a0af57ef052e4e5da3b28b410a2d256 Mon Sep 17 00:00:00 2001 From: kuzakhmetovartur Date: Thu, 28 May 2026 13:33:48 +0300 Subject: [PATCH] feat: solution for 'Untitled Task' --- README.md | 17 ++++++++++++++++- src/main.py | 1 - 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4d8872f..1b30115 100644 --- a/README.md +++ b/README.md @@ -1 +1,16 @@ -# LangGraph Streaming Agent\n\nThis project demonstrates how to use LangGraph to stream responses from an AI agent in real-time. Instead of waiting for the entire answer, the agent outputs tokens as they are generated, providing a more interactive experience.\n\n## Prerequisites\n\n- Python 3.10 or higher\n- An OpenAI API key (set as `OPENAI_API_KEY` in your environment)\n\n## Installation\n\nbash\npip install -r requirements.txt\n\n\n## Running the Agent\n\nbash\npython src/main.py\n\n\nThe agent will ask a simple math question and stream the answer token by token. You will see a separator when the agent moves to a new step.\n\n## Customization\n\n- Modify the `messages` in `src/main.py` to ask different questions.\n- Add or replace tools in the `tools` list to extend the agent's capabilities.\n \ No newline at end of file +# Untitled Task + +Главная +Мои задания +Stream-режим AI-агента +5Д +EN +Stream-режим AI-агента + +Цель + +Доработать агента из предыдущего задания: заменить единовременный вызов .invoke() на потоковый вывод через .stream(), чтобы ответ появлялся в консоли по мере генерации, а не после полного завершения. + +Предыстория + +В предыдущем задании агент вызывался через .invoke() — он возвращал результат только после того, как полностью завершал работу. При длинных ответах или нескольких вызовах инструментов это выглядит как зависа \ No newline at end of file diff --git a/src/main.py b/src/main.py index 1ac63af..e69de29 100644 --- a/src/main.py +++ b/src/main.py @@ -1 +0,0 @@ -import os\nfrom dotenv import load_dotenv\nfrom langgraph import create_agent\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.tools import CalculatorTool\n\nload_dotenv()\n\ndef format_message(message) -> str:\n if message.content:\n return message.content\n return f\"{message.tool_calls[0]['name']}({message.tool_calls[0]['args']})\"\n\n\ndef main():\n llm = ChatOpenAI(temperature=0)\n tools = [CalculatorTool()]\n agent = create_agent(llm=llm, tools=tools)\n\n stream = agent.stream(\n {\n \"messages\": [{\"role\": \"human\", \"content\": \"What is 12 * 34?\"}]\n },\n stream_mode=['messages', 'updates']\n )\n\n step = 1\n for chunk in stream:\n chunk_type, chunk_data = chunk\n if chunk_type == \"messages\":\n message, meta = chunk_data\n if meta.get('langgraph_step') != step:\n step = meta.get('langgraph_step')\n print('\\n --- --- --- \\n')\n if message.content:\n print(message.content, end='', flush=True)\n elif chunk_type == \"updates\":\n if chunk_data.get('model'):\n last_message = chunk_data['model']['messages'][-1]\n print(format_message(last_message))\n\n print() # Final newline\n\n\nif __name__ == \"__main__\":\n main()\n \ No newline at end of file