From 490a5c8507f9af7b102093f4d37538f93032421e Mon Sep 17 00:00:00 2001 From: Gloomer Date: Wed, 13 May 2026 00:07:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D1=81=D0=BE=D1=85?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D1=87=D0=B0=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/agent/__pycache__/agent.cpython-310.pyc | Bin 5381 -> 5697 bytes core/agent/agent.py | 17 ++++++++++++----- .../flaskui/__pycache__/flask.cpython-310.pyc | Bin 1765 -> 1765 bytes core/flaskui/flask.py | 3 ++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/core/agent/__pycache__/agent.cpython-310.pyc b/core/agent/__pycache__/agent.cpython-310.pyc index e006a52356e74aaa58343e2ddc91e8585c7f1193..7206d64a660f15daa97ebeac340d0f63e1e03292 100644 GIT binary patch delta 524 zcmZXQy-UMD6u|FYa+kC=)wUuou1ZwU$+4sC7qQW5k@6>(4ygaaoL z>*lDAx;O~_0}kpUIQd5?zN>XIM}F_UU*5|lchLUO=@c9%Oz@gNH8RiF&P&9gl-_(_^E=B~OyY zP|1=^TD=4(tT_T?qZ9kB3)?d!c;*?c0N|UehDr8kiXrXx!Q)v|q;cnP1!pnVRU=Om z*GdVF-zCO0hBdl1x)3d566r?7s5X|y?@#J%N-ZQh$|;==Xe1G?{qH>VqkhDKv$~nf zEeStZFXRJXOrv{c#X{E43r9Cq5!JRnC<=dht=7BZ-=Pfp5Og;TCfKzV1`e$hf$PiW nHnk}?C{VD!Is1)KhRxKZ>ON8CGkTXoU@j@ooidryAOx`Bi#TW(vaF;QB diff --git a/core/agent/agent.py b/core/agent/agent.py index c519050..4367d0e 100644 --- a/core/agent/agent.py +++ b/core/agent/agent.py @@ -97,17 +97,15 @@ User`s name: {self.user_name} summary = self.llm.generate_stream(messages) - # сохраняем summary self.summary = summary - # 🔥 очищаем историю (оставляем последние 2-4 сообщения) try: self.chat_history = self.chat_history[-2:] except IndexError: pass def save_memory(self): - # Используем абсолютный путь от корня проекта + # абсолютный путь от корня проекта project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) memory_dir = os.path.join(project_root, "data", "memory") os.makedirs(memory_dir, exist_ok=True) @@ -123,7 +121,7 @@ User`s name: {self.user_name} json.dump(data, f, ensure_ascii=False, indent=2) def load_memory(self): - # Используем абсолютный путь от корня проекта + # абсолютный путь от корня проекта project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) path = os.path.join(project_root, "data", "memory", f"{self.character.id}.json") @@ -188,6 +186,7 @@ User`s name: {self.user_name} def stream_responce(self, user_input, temperature=None, max_tokens=None): #В ollamaapi нужно будет создать новый метод чисто на стриминг, пока что закомментил строки с цельным ответом messages = self.build_messages(user_input) + full_response = "" if temperature is not None: self.character.temperature = temperature if max_tokens is not None: @@ -199,6 +198,12 @@ User`s name: {self.user_name} max_tokens=self.character.max_tokens ) + for token in response: + + full_response += token + + yield token + # сохраняем историю self.chat_history.append({ "role": "user", @@ -207,11 +212,13 @@ User`s name: {self.user_name} self.chat_history.append({ "role": "assistant", - "content": response + "content": full_response }) if len(self.chat_history) > 20: self.summarize_history() + + self.save_memory() return response diff --git a/core/flaskui/__pycache__/flask.cpython-310.pyc b/core/flaskui/__pycache__/flask.cpython-310.pyc index dafa56ceed75b5210302f98651b5cdd437e72e76..ae67c2f415cc940b5955e0974e07aa1b2a82b2eb 100644 GIT binary patch delta 35 pcmaFL`;?bApO=@50SN9*X3i4d$UB#n(Q@-@R#Qe+E-pqEW&ou)2hIQh delta 35 pcmaFL`;?bApO=@50SLsJn6pGT^3G*twAj3w)s&HylZ%ms832-Q2Jrv@ diff --git a/core/flaskui/flask.py b/core/flaskui/flask.py index b9434b4..f1a6abf 100644 --- a/core/flaskui/flask.py +++ b/core/flaskui/flask.py @@ -49,9 +49,10 @@ def stream(): def generate(): for content in agent.stream_responce(last_prompt): yield f"data: {content}\n\n" - agent.save_memory() + return Response(generate(), mimetype="text/event-stream") + #список персонажей @ui.route("/characters", methods=["GET"]) def get_characters():