3636from memos .memories .textual .item import (
3737 TextualMemoryItem ,
3838)
39- from memos .templates .mos_prompts import MEMOS_PRODUCT_BASE_PROMPT , MEMOS_PRODUCT_ENHANCE_PROMPT
39+ from memos .templates .mos_prompts import (
40+ FURTHER_SUGGESTION_PROMPT ,
41+ MEMOS_PRODUCT_BASE_PROMPT ,
42+ MEMOS_PRODUCT_ENHANCE_PROMPT ,
43+ SUGGESTION_QUERY_PROMPT_EN ,
44+ SUGGESTION_QUERY_PROMPT_ZH ,
45+ )
4046from memos .types import MessageList
4147
4248
@@ -633,7 +639,19 @@ def user_register(
633639 except Exception as e :
634640 return {"status" : "error" , "message" : f"Failed to register user: { e !s} " }
635641
636- def get_suggestion_query (self , user_id : str , language : str = "zh" ) -> list [str ]:
642+ def _get_further_suggestion (self , message : MessageList | None = None ) -> list [str ]:
643+ """Get further suggestion prompt."""
644+ dialogue_info = "\n " .join ([f"{ msg ['role' ]} : { msg ['content' ]} " for msg in message [- 2 :]])
645+ further_suggestion_prompt = FURTHER_SUGGESTION_PROMPT .format (dialogue = dialogue_info )
646+ message_list = [{"role" : "system" , "content" : further_suggestion_prompt }]
647+ response = self .chat_llm .generate (message_list )
648+ clean_response = clean_json_response (response )
649+ response_json = json .loads (clean_response )
650+ return response_json ["query" ]
651+
652+ def get_suggestion_query (
653+ self , user_id : str , language : str = "zh" , message : MessageList | None = None
654+ ) -> list [str ]:
637655 """Get suggestion query from LLM.
638656 Args:
639657 user_id (str): User ID.
@@ -642,37 +660,13 @@ def get_suggestion_query(self, user_id: str, language: str = "zh") -> list[str]:
642660 Returns:
643661 list[str]: The suggestion query list.
644662 """
645-
663+ if message :
664+ further_suggestion = self ._get_further_suggestion (message )
665+ return further_suggestion
646666 if language == "zh" :
647- suggestion_prompt = """
648- 你是一个有用的助手,可以帮助用户生成建议查询。
649- 我将获取用户最近的一些记忆,
650- 你应该生成一些建议查询,这些查询应该是用户想要查询的内容,
651- 用户最近的记忆是:
652- {memories}
653- 请生成3个建议查询用中文,
654- 输出应该是json格式,键是"query",值是一个建议查询列表。
655-
656- 示例:
657- {{
658- "query": ["查询1", "查询2", "查询3"]
659- }}
660- """
667+ suggestion_prompt = SUGGESTION_QUERY_PROMPT_ZH
661668 else : # English
662- suggestion_prompt = """
663- You are a helpful assistant that can help users to generate suggestion query.
664- I will get some user recently memories,
665- you should generate some suggestion query, the query should be user what to query,
666- user recently memories is:
667- {memories}
668- if the user recently memories is empty, please generate 3 suggestion query in English,
669- output should be a json format, the key is "query", the value is a list of suggestion query.
670-
671- example:
672- {{
673- "query": ["query1", "query2", "query3"]
674- }}
675- """
669+ suggestion_prompt = SUGGESTION_QUERY_PROMPT_EN
676670 text_mem_result = super ().search ("my recently memories" , user_id = user_id , top_k = 3 )[
677671 "text_mem"
678672 ]
@@ -683,6 +677,7 @@ def get_suggestion_query(self, user_id: str, language: str = "zh") -> list[str]:
683677 message_list = [{"role" : "system" , "content" : suggestion_prompt .format (memories = memories )}]
684678 response = self .chat_llm .generate (message_list )
685679 clean_response = clean_json_response (response )
680+ print (f"clean_response: { clean_response } " )
686681 response_json = json .loads (clean_response )
687682 return response_json ["query" ]
688683
0 commit comments