From f100c1dd93d304ea01fcbe3284d6c83a5bbfcc42 Mon Sep 17 00:00:00 2001 From: harvey_xiang Date: Wed, 10 Dec 2025 10:25:44 +0800 Subject: [PATCH 1/3] feat: timer false --- src/memos/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memos/utils.py b/src/memos/utils.py index a29eaf99d..cb50aab8d 100644 --- a/src/memos/utils.py +++ b/src/memos/utils.py @@ -80,7 +80,7 @@ def wrapper(*args, **kwargs): return decorator(func) -def timed(func=None, *, log=True, log_prefix=""): +def timed(func=None, *, log=False, log_prefix=""): def decorator(fn): def wrapper(*args, **kwargs): start = time.perf_counter() From c91b8722c7879d14e2bbf651ec163d31331a9545 Mon Sep 17 00:00:00 2001 From: harvey_xiang Date: Wed, 7 Jan 2026 11:25:10 +0800 Subject: [PATCH 2/3] feat: add openai token log --- src/memos/llms/openai.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/memos/llms/openai.py b/src/memos/llms/openai.py index ea488329d..3444f1f25 100644 --- a/src/memos/llms/openai.py +++ b/src/memos/llms/openai.py @@ -1,4 +1,5 @@ import json +import time from collections.abc import Generator @@ -46,9 +47,16 @@ def generate(self, messages: MessageList, **kwargs) -> str: "extra_body": kwargs.get("extra_body", self.config.extra_body), "tools": kwargs.get("tools", NOT_GIVEN), } + start_time = time.perf_counter() logger.info(f"OpenAI LLM Request body: {request_body}") + response = self.client.chat.completions.create(**request_body) - logger.info(f"Response from OpenAI: {response.model_dump_json()}") + + cost_time = time.perf_counter() - start_time + logger.info( + f"Request body: {request_body}, Response from OpenAI: {response.model_dump_json()}, Cost time: {cost_time}" + ) + tool_calls = getattr(response.choices[0].message, "tool_calls", None) if isinstance(tool_calls, list) and len(tool_calls) > 0: return self.tool_call_parser(tool_calls) @@ -59,8 +67,8 @@ def generate(self, messages: MessageList, **kwargs) -> str: if self.config.remove_think_prefix: return remove_thinking_tags(response_content) if reasoning_content: - return reasoning_content + (response_content or "") - return response_content or "" + return reasoning_content + response_content + return response_content @timed_with_status( log_prefix="OpenAI LLM Stream", @@ -151,7 +159,7 @@ def generate(self, messages: MessageList, **kwargs) -> str: if self.config.remove_think_prefix: return remove_thinking_tags(response_content) else: - return response_content or "" + return response_content def generate_stream(self, messages: MessageList, **kwargs) -> Generator[str, None, None]: """Stream response from Azure OpenAI LLM with optional reasoning support.""" From b60e26711c747af8f5a43a0344eeaadb5ec966d1 Mon Sep 17 00:00:00 2001 From: harvey_xiang Date: Wed, 7 Jan 2026 11:28:34 +0800 Subject: [PATCH 3/3] fix: format error --- src/memos/llms/openai.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/memos/llms/openai.py b/src/memos/llms/openai.py index 3444f1f25..f49f1d7d1 100644 --- a/src/memos/llms/openai.py +++ b/src/memos/llms/openai.py @@ -67,8 +67,8 @@ def generate(self, messages: MessageList, **kwargs) -> str: if self.config.remove_think_prefix: return remove_thinking_tags(response_content) if reasoning_content: - return reasoning_content + response_content - return response_content + return reasoning_content + (response_content or "") + return response_content or "" @timed_with_status( log_prefix="OpenAI LLM Stream", @@ -159,7 +159,7 @@ def generate(self, messages: MessageList, **kwargs) -> str: if self.config.remove_think_prefix: return remove_thinking_tags(response_content) else: - return response_content + return response_content or "" def generate_stream(self, messages: MessageList, **kwargs) -> Generator[str, None, None]: """Stream response from Azure OpenAI LLM with optional reasoning support."""