Download code_release/code/vendor/patches/LightMem.patch from clinical-agent-memory-bench/meme-bench: direct link, hf CLI and curl.
- Browser
- Download file 3.99 kB
-
https://huggingface.co/spaces/clinical-agent-memory-bench/meme-bench/resolve/main/code_release/code/vendor/patches/LightMem.patch
- Command line
-
hf download hf://spaces/clinical-agent-memory-bench/meme-bench/code_release/code/vendor/patches/LightMem.patch
-
curl -L -o LightMem.patch https://huggingface.co/spaces/clinical-agent-memory-bench/meme-bench/resolve/main/code_release/code/vendor/patches/LightMem.patch
3.99 kB
| --- a/LightMem/src/lightmem/factory/memory_buffer/sensory_memory.py | |
| +++ b/LightMem/src/lightmem/factory/memory_buffer/sensory_memory.py | |
| self.token_count: int = 0 | |
| def _recount_tokens(self) -> None: | |
| - self.token_count = sum(len(self.tokenizer.encode(m["content"])) for m in self.buffer if m["role"]=="user") | |
| + self.token_count = sum(len(self.tokenizer.encode(m["content"])) | |
| + for m in (self.buffer or []) | |
| + if m and m.get("role") == "user") | |
| def add_messages(self, messages: List[Dict], segmenter, text_embedder) -> None: | |
| all_segments = [] | |
| 2. Fine-grained adjustment based on semantic similarity. | |
| """ | |
| segments = [] | |
| - buffer_texts = [m["content"] for m in self.buffer if m["role"] == "user"] | |
| + buffer_texts = [m["content"] for m in (self.buffer or []) | |
| + if m and m.get("role") == "user"] | |
| boundaries = segmenter.propose_cut(buffer_texts) | |
| if not boundaries: | |
| --- a/LightMem/src/lightmem/factory/memory_buffer/short_term_memory.py | |
| +++ b/LightMem/src/lightmem/factory/memory_buffer/short_term_memory.py | |
| } | |
| allowed_roles = role_map.get(messages_use, []) | |
| - text_list = [msg["content"] for msg in messages if msg["role"] in allowed_roles] | |
| + text_list = [msg["content"] for msg in (messages or []) | |
| + if msg and msg.get("role") in allowed_roles] | |
| text = " ".join(text_list) | |
| --- a/LightMem/src/lightmem/memory/lightmem.py | |
| +++ b/LightMem/src/lightmem/memory/lightmem.py | |
| self.logger.info(f"[{call_id}] Extraction triggered {extract_trigger_num} times, extract_list length: {len(extract_list)}") | |
| extract_list, timestamps_list, weekday_list, speaker_list, topic_id_map = assign_sequence_numbers_with_timestamps(extract_list, offset_ms=500, topic_id_mapping=topic_id_mapping) | |
| self.logger.debug(f"[{call_id}] Extract list sample: {json.dumps(extract_list)}") | |
| - max_source_ids = [sum(1 for seg in batch for msg in seg if msg.get("role") == "user") - 1 for batch in extract_list] | |
| + max_source_ids = [sum(1 for seg in batch for msg in (seg or []) | |
| + if msg and msg.get("role") == "user") - 1 | |
| + for batch in extract_list] | |
| self.logger.info(f"[{call_id}] Batch max_source_ids: {max_source_ids}") | |
| if self.config.metadata_generate and self.config.text_summary: | |
| self.logger.info(f"[{call_id}] Starting metadata generation") | |
| --- a/LightMem/src/lightmem/memory/utils.py | |
| +++ b/LightMem/src/lightmem/memory/utils.py | |
| for segments in extract_list: | |
| for seg in segments: | |
| - for message in seg: | |
| + for message in (seg or []): | |
| + if not message: | |
| + continue | |
| session_time = message.get('session_time', '') | |
| message_refs.append((message, session_time)) | |
| for segments in extract_list: | |
| for seg in segments: | |
| - for message in seg: | |
| + for message in (seg or []): | |
| + if not message: | |
| + continue | |
| message["sequence_number"] = current_index | |
| timestamps_list.append(message["time_stamp"]) | |
| weekday_list.append(message["weekday"]) | |
| for api_idx, api_call_segments in enumerate(extract_list): | |
| for topic_idx, topic_segment in enumerate(api_call_segments): | |
| tid = topic_id_mapping[api_idx][topic_idx] | |
| - for msg in topic_segment: | |
| + for msg in (topic_segment or []): | |
| + if not msg: | |
| + continue | |
| seq = msg.get("sequence_number") | |
| sequence_to_topic[seq] = tid | |