From bf62ede60f65d73ce5b7b89624c54a1d43f4e120 Mon Sep 17 00:00:00 2001 From: LittleMouse Date: Wed, 3 Sep 2025 19:11:18 +0800 Subject: [PATCH] [update] update model history --- backend/llm_client_backend.py | 68 +++++++++++++++++------------------ client/sys_client.py | 4 +++ services/model_list.py | 9 +++++ 3 files changed, 46 insertions(+), 35 deletions(-) diff --git a/backend/llm_client_backend.py b/backend/llm_client_backend.py index d4f00c1..635398f 100644 --- a/backend/llm_client_backend.py +++ b/backend/llm_client_backend.py @@ -77,8 +77,8 @@ class LlmClientBackend(BaseModelBackend): await asyncio.sleep(retry_interval) await asyncio.wait_for(self._pool_lock.acquire(), timeout=timeout - (time.time() - start_time)) - if "memory_required" in self.config: - await self.memory_checker.check_memory(self.config["memory_required"]) + # if "memory_required" in self.config: + # await self.memory_checker.check_memory(self.config["memory_required"]) self.logger.debug("Creating new LLM client") client = LLMClient( @@ -182,39 +182,35 @@ class LlmClientBackend(BaseModelBackend): def _count_tokens(self, text: str) -> int: """Count the number of tokens in a given text.""" return len(self.tokenizer.encode(text)) + + def _truncate_history(self, request: ChatCompletionRequest) -> List[Message]: + messages = request.messages + if not messages: + return [] - def _truncate_history(self, messages: List[Message]) -> List[Message]: - """Truncate history to fit model context window""" - total_length = 0 - keep_messages = [] - - for msg in reversed(messages): - if msg.role == "system": - total_length += self._count_tokens(msg.content) - total_length += 16 + last_msg = messages[-1] - # Process in reverse to keep latest messages - for msg in reversed(messages): + if isinstance(last_msg.content, list): msg_length = 0 - if isinstance(msg.content, list): - for item in msg.content: - if item.type == "text": - msg_length += self._count_tokens(item.text) - total_length += msg_length - keep_messages.insert(0, msg) - break - else: - msg_length = self._count_tokens(msg.content) - if msg.role == "user": - msg_length += 3 - if msg.role == "assistant": - msg_length += 3 - if total_length + msg_length > self.MAX_CONTEXT_LENGTH: - break - total_length += msg_length - keep_messages.insert(0, msg) # Maintain original order - - return keep_messages + for item in last_msg.content: + if item.type == "text": + msg_length += self._count_tokens(item.text) + else: + msg_length = self._count_tokens(last_msg.content) + + if last_msg.role in ("user", "assistant"): + msg_length += 3 + + if msg_length > self.MAX_CONTEXT_LENGTH: + return [] + + # self.inference_stream("reset", None, request) + + print(f"messages: {messages}") + print(f"Truncated messages: {messages[-1:]}") + print(f"Final messages: {messages}") + return [last_msg] + async def download_image(self, url): try: @@ -231,7 +227,7 @@ class LlmClientBackend(BaseModelBackend): async def generate(self, request: ChatCompletionRequest): try: - truncated_messages = self._truncate_history(request.messages) + truncated_messages = self._truncate_history(request) if not truncated_messages: raise HTTPException( @@ -251,7 +247,7 @@ class LlmClientBackend(BaseModelBackend): message_content = await self._parse_content(m.content, base64_images) if message_content: - query_lines.append(f"{m.role}: {message_content}") + query_lines.append(message_content) final_query = [] if system_prompt: @@ -259,8 +255,10 @@ class LlmClientBackend(BaseModelBackend): if base64_images: pass final_query.append("\n".join(query_lines)) - + print(f"Final query: {final_query}") + query = "\n\n".join(filter(None, final_query)) + print(f"268 Final query: {query}") self.logger.debug( f"Processed query | System prompt: {len(system_prompt)} chars | " diff --git a/client/sys_client.py b/client/sys_client.py index 7d7b266..9a348b1 100644 --- a/client/sys_client.py +++ b/client/sys_client.py @@ -89,6 +89,10 @@ class SYSClient: def cmminfo(self) -> dict: request_id = self._send_request("cmminfo", "", {}) return self._wait_response(request_id) + + def axclcmminfo(self) -> dict: + request_id = self._send_request("axcl_cmminfo", "", {}) + return self._wait_response(request_id) def hwinfo(self) -> dict: request_id = self._send_request("hwinfo", "", {}) diff --git a/services/model_list.py b/services/model_list.py index 2aa33fa..b27979f 100644 --- a/services/model_list.py +++ b/services/model_list.py @@ -72,6 +72,15 @@ class GetModelList: if '-p256-' in mode: new_entry['max_context_length'] = 256 + if '-p512-' in mode: + new_entry['max_context_length'] = 512 + + if '-p2048-' in mode: + new_entry['max_context_length'] = 2048 + + if '-ctx-' in mode: + new_entry['max_context_length'] = 1024 + elif model_type == 'tts': if 'melotts' in mode.lower(): obj = 'melotts.setup'