MCPcopy Create free account
hub / github.com/AQ-MedAI/MedMemoryBench / query

Method query

methods/memos_agent.py:353–454  ·  view source on GitHub ↗

Query using MemOS's official search() method. Uses MemOS's native vector search for retrieval, then generates response. Args: question: User question to answer. system_message: Optional system prompt. **kwargs: Additional arguments (unused

(
        self,
        question: str,
        system_message: Optional[str] = None,
        **kwargs,
    )

Source from the content-addressed store, hash-verified

351 )
352
353 def query(
354 self,
355 question: str,
356 system_message: Optional[str] = None,
357 **kwargs,
358 ) -> AgentResponse:
359 """Query using MemOS's official search() method.
360
361 Uses MemOS's native vector search for retrieval, then generates response.
362
363 Args:
364 question: User question to answer.
365 system_message: Optional system prompt.
366 **kwargs: Additional arguments (unused).
367
368 Returns:
369 AgentResponse with answer and retrieval details.
370 """
371 context_id = self._get_context_id()
372 memory_system = self._get_memory_system(context_id)
373
374 # Truncate question
375 bounded_question = self._truncate_to_tokens(question, self.max_question_tokens)
376
377 start_time = time.time()
378
379 # Use MemOS's official search() method
380 # Request exactly retrieve_num results (no over-fetching)
381 memory_items = memory_system.search(bounded_question, top_k=self.retrieve_num)
382
383 search_time = time.time() - start_time
384
385 # Calculate token budget for memory context
386 system_tokens = self._llm_client.count_tokens(system_message) if system_message else 0
387 reserved_tokens = self.max_tokens + 500
388 available_tokens = max(self.max_context_tokens - reserved_tokens - system_tokens, 0)
389 question_tokens = self._llm_client.count_tokens(bounded_question)
390 memory_budget = max(available_tokens - question_tokens, 0)
391 memory_budget = min(memory_budget, self.max_memory_tokens)
392
393 # Build memory context with truncation
394 retrieved_memories: List[Dict[str, Any]] = []
395 memory_blocks: List[str] = []
396 used_tokens = 0
397
398 for item in memory_items:
399 mem_text = str(getattr(item, "memory", "") or "").strip()
400 if not mem_text:
401 continue
402
403 mem_tokens = self._llm_client.count_tokens(mem_text)
404 if used_tokens + mem_tokens > memory_budget:
405 # Truncate this memory to fit remaining budget
406 remaining = memory_budget - used_tokens
407 if remaining > 100:
408 truncated = self._truncate_to_tokens(mem_text, remaining)
409 memory_blocks.append(truncated)
410 retrieved_memories.append({

Callers

nothing calls this directly

Calls 10

_get_context_idMethod · 0.95
_get_memory_systemMethod · 0.95
_truncate_to_tokensMethod · 0.95
format_messagesFunction · 0.90
AgentResponseClass · 0.85
searchMethod · 0.65
count_tokensMethod · 0.45
model_dumpMethod · 0.45
joinMethod · 0.45
chatMethod · 0.45

Tested by

no test coverage detected