MCPcopy Create free account
hub / github.com/BAI-LAB/MemoryOS / get_response

Method get_response

memoryos-pypi/memoryos.py:246–342  ·  view source on GitHub ↗

Generates a response to the user's query, incorporating memory and context.

(self, query: str, relationship_with_user="friend", style_hint="", user_conversation_meta_data: dict = None)

Source from the content-addressed store, hash-verified

244 self._trigger_profile_and_knowledge_update_if_needed()
245
246 def get_response(self, query: str, relationship_with_user="friend", style_hint="", user_conversation_meta_data: dict = None) -> str:
247 """
248 Generates a response to the user's query, incorporating memory and context.
249 """
250 print(f"Memoryos: Generating response for query: '{query[:50]}...'")
251
252 # 1. Retrieve context
253 retrieval_results = self.retriever.retrieve_context(
254 user_query=query,
255 user_id=self.user_id
256 # Using default thresholds from Retriever class for now
257 )
258 retrieved_pages = retrieval_results["retrieved_pages"]
259 retrieved_user_knowledge = retrieval_results["retrieved_user_knowledge"]
260 retrieved_assistant_knowledge = retrieval_results["retrieved_assistant_knowledge"]
261
262 # 2. Get short-term history
263 short_term_history = self.short_term_memory.get_all()
264 history_text = "\n".join([
265 f"User: {qa.get('user_input', '')}\nAssistant: {qa.get('agent_response', '')} (Time: {qa.get('timestamp', '')})"
266 for qa in short_term_history
267 ])
268
269 # 3. Format retrieved mid-term pages (retrieval_queue equivalent)
270 retrieval_text = "\n".join([
271 f"【Historical Memory】\nUser: {page.get('user_input', '')}\nAssistant: {page.get('agent_response', '')}\nTime: {page.get('timestamp', '')}\nConversation chain overview: {page.get('meta_info','N/A')}"
272 for page in retrieved_pages
273 ])
274
275 # 4. Get user profile
276 user_profile_text = self.user_long_term_memory.get_raw_user_profile(self.user_id)
277 if not user_profile_text or user_profile_text.lower() == "none":
278 user_profile_text = "No detailed profile available yet."
279
280 # 5. Format retrieved user knowledge for background
281 user_knowledge_background = ""
282 if retrieved_user_knowledge:
283 user_knowledge_background = "\n【Relevant User Knowledge Entries】\n"
284 for kn_entry in retrieved_user_knowledge:
285 user_knowledge_background += f"- {kn_entry['knowledge']} (Recorded: {kn_entry['timestamp']})\n"
286
287 background_context = f"【User Profile】\n{user_profile_text}\n{user_knowledge_background}"
288
289 # 6. Format retrieved Assistant Knowledge (from assistant's LTM)
290 # Use retrieved assistant knowledge instead of all assistant knowledge
291 assistant_knowledge_text_for_prompt = "【Assistant Knowledge Base】\n"
292 if retrieved_assistant_knowledge:
293 for ak_entry in retrieved_assistant_knowledge:
294 assistant_knowledge_text_for_prompt += f"- {ak_entry['knowledge']} (Recorded: {ak_entry['timestamp']})\n"
295 else:
296 assistant_knowledge_text_for_prompt += "- No relevant assistant knowledge found for this query.\n"
297
298 # 7. Format user_conversation_meta_data (if provided)
299 meta_data_text_for_prompt = "【Current Conversation Metadata】\n"
300 if user_conversation_meta_data:
301 try:
302 meta_data_text_for_prompt += json.dumps(user_conversation_meta_data, ensure_ascii=False, indent=2)
303 except TypeError:

Callers 1

simple_demoFunction · 0.95

Calls 6

add_memoryMethod · 0.95
get_timestampFunction · 0.90
retrieve_contextMethod · 0.45
get_allMethod · 0.45
get_raw_user_profileMethod · 0.45
chat_completionMethod · 0.45

Tested by 1

simple_demoFunction · 0.76