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

Method query

methods/mem0_agent.py:342–406  ·  view source on GitHub ↗

Query the agent.

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

Source from the content-addressed store, hash-verified

340 return memories
341
342 def query(
343 self,
344 question: str,
345 system_message: Optional[str] = None,
346 **kwargs
347 ) -> AgentResponse:
348 """Query the agent."""
349 # Retrieve relevant memories
350 retrieved_memories = self._retrieve(question)
351
352 # Bound question tokens first
353 full_question = f"{question}\n\nCurrent Time: {time.strftime('%Y-%m-%d %H:%M:%S')}"
354 full_question = self._truncate_to_tokens(full_question, self.max_question_tokens)
355
356 base_system = system_message or ""
357 reserved_tokens = self.max_tokens + 400
358 available_tokens = max(self.max_context_tokens - reserved_tokens, 0)
359 question_tokens = self._llm_client.count_tokens(full_question)
360 base_system_tokens = self._llm_client.count_tokens(base_system) if base_system else 0
361 memory_budget = max(available_tokens - question_tokens - base_system_tokens, 0)
362
363 # Build memory string
364 if retrieved_memories:
365 memory_lines: List[str] = []
366 used_tokens = 0
367 for entry in retrieved_memories:
368 line = f"- {entry['memory']}"
369 line_tokens = self._llm_client.count_tokens(line)
370 if used_tokens + line_tokens <= memory_budget:
371 memory_lines.append(line)
372 used_tokens += line_tokens
373 else:
374 break
375 memories_str = "\n".join(memory_lines)
376 # Build system message with retrieved content
377 memory_prompt = f"You are a helpful AI. Answer the question based on the following memories:\n{memories_str}\n"
378 if system_message:
379 full_system = f"{system_message}\n\n{memory_prompt}"
380 else:
381 full_system = memory_prompt
382 else:
383 full_system = system_message
384
385 messages = format_messages(full_question, full_system)
386
387 # Call LLM
388 response = self._llm_client.chat(messages)
389
390 # Build retrieved_memories format
391 formatted_memories = [
392 {"memory": m["memory"], "type": "mem0_retrieval", "score": m.get("score", 0)}
393 for m in retrieved_memories
394 ]
395
396 return AgentResponse(
397 output=response.content,
398 query_time=0.0,
399 retrieved_count=len(retrieved_memories),

Callers

nothing calls this directly

Calls 8

_retrieveMethod · 0.95
_truncate_to_tokensMethod · 0.95
format_messagesFunction · 0.90
AgentResponseClass · 0.85
count_tokensMethod · 0.45
joinMethod · 0.45
chatMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected