From fe7127b5845ad07c698752bbb26fca634e8430fc Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Thu, 28 May 2026 09:59:25 +0000 Subject: [PATCH] =?UTF-8?q?Stream-=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=20AI-?= =?UTF-8?q?=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=B0:=20client.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client.py | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/client.py diff --git a/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/client.py b/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/client.py new file mode 100644 index 0000000..abbd0b4 --- /dev/null +++ b/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/client.py @@ -0,0 +1,71 @@ +# client.py + +""" +Интерактивный CLI для взаимодействия с LangChain‑агентом. +Агент использует потоковый вывод через .stream(), чтобы ответы +появлялись в консоли по мере генерации. + +Требуемый стек: +- langchain.agents.create_agent +- @tool из langchain.tools +- rich.print (переименовано как rprint) +""" + +from langchain.agents import create_agent +from langchain.tools import tool +from rich import print as rprint + +# ------------------------------------------------------------------ +# Определяем инструмент. В реальном проекте здесь может быть любой +# полезный код, например запрос к API или обработка данных. +# Для демонстрации будем просто возвращать строку с аргументом. +# ------------------------------------------------------------------ +@tool("echo") +def echo_tool(message: str) -> str: + """ + Инструмент «echo» – повторяет переданное сообщение. + + Args: + message (str): Текст, который нужно вернуть. + + Returns: + str: Тот же текст, но обёрнутый в строку. + """ + return f"Echo: {message}" + +# ------------------------------------------------------------------ +# Создаём агент. В качестве LLM будем использовать встроенный +# LangChain‑LLM (например, OpenAI). Поскольку в условии не указано, +# что именно использовать, оставляем стандартный вариант. +# ------------------------------------------------------------------ +agent = create_agent( + tools=[echo_tool], + verbose=True # включаем логирование для отладки +) + +def main() -> None: + """ + Основной цикл CLI. Пользователь вводит запросы, + агент обрабатывает их и выводит ответ токен за токеном. + """ + rprint("[bold green]LangChain Stream Agent[/bold green]") + rprint("Введите ваш запрос (Ctrl+C для выхода):") + + try: + while True: + user_input = input("> ") + if not user_input.strip(): + continue + + # Запускаем потоковый вывод + stream = agent.stream(user_input) + + # Итерация по частям ответа и печать в реальном времени + for chunk in stream: + rprint(chunk, end="", justify="left") + except KeyboardInterrupt: + rprint("\n[bold red]Выход из программы[/bold red]") + return + +if __name__ == "__main__": + main() \ No newline at end of file