[{"data":1,"prerenderedAt":2874},["ShallowReactive",2],{"\u002Fusecase\u002Fhome_assistant":3,"surround-\u002Fusecase\u002Fhome_assistant":2859},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":2852,"description":321,"extension":2853,"links":6,"meta":2854,"navigation":6,"path":2855,"seo":2856,"stem":2857,"__hash__":2858},"docs\u002Fen\u002Fusecase\u002Fhome_assistant.md","Building a Home Life Assistant with Memory",null,{"type":8,"value":9,"toc":2839},"minimark",[10,15,24,37,40,43,48,54,98,100,104,107,127,129,133,136,205,208,220,223,265,267,271,277,302,304,308,312,315,342,344,348,2793,2795,2799,2835],[11,12,14],"h2",{"id":13},"_1-overview","1. Overview",[16,17,18,19,23],"p",{},"When developing a home life assistant product, developers often encounter a problem: ",[20,21,22],"strong",{},"once the dialogue context ends, user information is lost",".",[25,26,27,31,34],"ul",{},[28,29,30],"li",{},"User casually assigns a to-do (“Take the kids to the zoo on Saturday”)",[28,32,33],{},"User expresses a habit (“When reminding, first list the key points, then give one action suggestion”)",[28,35,36],{},"User introduces family information (“My wife is Xiaoyun, the child is 6 years old”)",[16,38,39],{},"If the assistant cannot remember this information, it will appear “heartless”: the next day when the user asks, “What plans do I have for the weekend?”, the assistant will have no idea what they are referring to.",[41,42],"br",{},[44,45,47],"h3",{"id":46},"_11-why-not-traditional-rag","1.1 Why not traditional RAG?",[16,49,50,51,53],{},"Many people’s first thought is: can we use RAG (Retrieval-Augmented Generation)?",[41,52],{},"\nBut the characteristics of traditional RAG determine that it is not suitable for this kind of “personalized assistant” scenario:",[55,56,57,70],"table",{},[58,59,60],"thead",{},[61,62,63,67],"tr",{},[64,65,66],"th",{},"Traditional RAG",[64,68,69],{},"MemOS",[71,72,73,82,90],"tbody",{},[61,74,75,79],{},[76,77,78],"td",{},"Relies on static knowledge bases, requiring manual document maintenance",[76,80,81],{},"Information generated during dialogue can be directly written in, no extra maintenance needed",[61,83,84,87],{},[76,85,86],{},"Can only mechanically return fragments, does not learn preferences",[76,88,89],{},"Automatically forms to-do items, preferences, and profiles from conversations",[61,91,92,95],{},[76,93,94],{},"Focuses on “common knowledge”, unsuitable for personal information",[76,96,97],{},"Designed for individualized scenarios, supports long-term tracking and invocation",[41,99],{},[44,101,103],{"id":102},"_12-why-not-build-your-own-solution","1.2 Why not build your own solution?",[16,105,106],{},"Of course, you could try to store this information yourself, but this brings several challenges:",[25,108,109,115,121],{},[28,110,111,114],{},[20,112,113],{},"Complex storage and retrieval logic",": must distinguish dialogue content, long-term memory, preferences, and facts, and ensure they can be retrieved as needed.",[28,116,117,120],{},[20,118,119],{},"Troublesome integration with LLMs",": not only storing data, but also embedding relevant information into the prompt before generating responses.",[28,122,123,126],{},[20,124,125],{},"Poor scalability",": as features increase (to-dos, preferences, profiles), the code becomes increasingly hard to maintain.",[41,128],{},[44,130,132],{"id":131},"_13-why-use-memos","1.3 Why use MemOS?",[16,134,135],{},"When making a technical choice, you can intuitively compare three approaches:",[55,137,138,154],{},[58,139,140],{},[61,141,142,145,148,151],{},[64,143,144],{},"Approach",[64,146,147],{},"Characteristics",[64,149,150],{},"Limitations",[64,152,153],{},"Advantages of MemOS",[71,155,156,169,183],{},[61,157,158,160,163,166],{},[76,159,66],{},[76,161,162],{},"Retrieves documents from a vector database and appends them into the prompt",[76,164,165],{},"Requires manual static document maintenance; cannot store personal to-dos\u002Fpreferences; only mechanically returns fragments",[76,167,168],{},"Automatically captures key information from dialogues, supports personalization and dynamic updates",[61,170,171,174,177,180],{},[76,172,173],{},"Self-built storage solution",[76,175,176],{},"Custom tables\u002Fcache to save dialogue information",[76,178,179],{},"Complex logic: must distinguish dialogues\u002Flong-term memory\u002Fpreferences\u002Fprofiles; still need to manually build prompt before model calls; poor scalability",[76,181,182],{},"MemOS encapsulates storage + retrieval + prompt injection, reducing developer burden",[61,184,185,187,199,202],{},[76,186,69],{},[76,188,189,190,194,195,198],{},"Only two interfaces: ",[191,192,193],"code",{},"addMessage"," for writing, ",[191,196,197],{},"searchMemory"," for retrieval",[76,200,201],{},"——",[76,203,204],{},"Supports long-term tracking, preference retention, and profile integration; ready-to-use and easily extendable",[16,206,207],{},"Only two API calls are needed:",[25,209,210,215],{},[28,211,212,214],{},[191,213,193],{},": writes user or assistant messages into the system",[28,216,217,219],{},[191,218,197],{},": retrieves relevant memories before model response and injects them into the prompt",[16,221,222],{},"With this, the assistant can truly appear “with memory”:",[25,224,225,238,252],{},[28,226,227,230],{},[20,228,229],{},"Track to-dos",[25,231,232,235],{},[28,233,234],{},"User says “Take the kids to the zoo on Saturday”",[28,236,237],{},"A few days later asks “What plans do I have for the weekend?” → Assistant can answer accurately",[28,239,240,243,244],{},[20,241,242],{},"Maintain preferences"," (future versions will support more fine-grained instruction completion)",[25,245,246,249],{},[28,247,248],{},"User says “When reminding, first list three key points + one short suggestion”",[28,250,251],{},"Later asks “Help me plan next week’s housework distribution” → Assistant outputs in the preferred style",[28,253,254,257],{},[20,255,256],{},"Incorporate profiles",[25,258,259,262],{},[28,260,261],{},"User says “My wife is Xiaoyun, the child is 6 years old”",[28,263,264],{},"Later asks “Arrange a weekend activity for the family?” → Suggests a family-friendly activity plan",[41,266],{},[44,268,270],{"id":269},"_14-what-does-this-case-demonstrate","1.4 What does this case demonstrate?",[16,272,273,274,276],{},"We will use MemOS cloud service to quickly implement a home life assistant “that remembers the user.”",[41,275],{},"\nWhen running the example script, developers will see complete logs:",[25,278,279,288,291,294],{},[28,280,281,282,284,285,287],{},"Requests\u002Fresponses for each ",[191,283,193],{}," and ",[191,286,197],{}," call",[28,289,290],{},"Matched memory entries",[28,292,293],{},"Concatenated and full instructions  ← TODO: coming soon",[28,295,296,297,301],{},"Model responses (if LLM is not connected, a message will indicate ",[298,299,300],"span",{},"LLM not connected",")",[41,303],{},[11,305,307],{"id":306},"_2-example","2. Example",[44,309,311],{"id":310},"_21-environment-setup","2.1 Environment Setup",[16,313,314],{},"Install required dependencies with pip:",[316,317,322],"pre",{"className":318,"code":319,"language":320,"meta":321,"style":321},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pip install MemoryOS -U\n","shell","",[191,323,324],{"__ignoreMap":321},[298,325,328,332,336,339],{"class":326,"line":327},"line",1,[298,329,331],{"class":330},"sBMFI","pip",[298,333,335],{"class":334},"sfazB"," install",[298,337,338],{"class":334}," MemoryOS",[298,340,341],{"class":334}," -U\n",[41,343],{},[44,345,347],{"id":346},"_22-full-code","2.2 Full Code",[316,349,353],{"className":350,"code":351,"language":352,"meta":321,"style":321},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import os\nimport uuid\nfrom openai import OpenAI\nfrom memos.api.client import MemOSClient\n\nos.environ[\"MEMOS_API_KEY\"] = \"mpg-xx\" # Get MemOS_API_KEY from cloud service console\nos.environ[\"OPENAI_API_KEY\"] = \"sk-xx\" # Replace with your own API_KEY\n\nconversation_counter = 0\n\ndef generate_conversation_id():\n    global conversation_counter\n    conversation_counter += 1\n    return f\"conversation_{conversation_counter:03d}\"\n\nclass HomeAssistant:    \n    def __init__(self):\n        self.memos_client = MemOSClient(api_key=os.getenv(\"MEMOS_API_KEY\"))\n        self.openai_client = OpenAI(api_key=os.getenv(\"OPENAI_API_KEY\"))\n    \n    def search_memory(self, query, user_id, conversation_id):\n        \"\"\"Search relevant memories based on query\"\"\"\n        response = self.memos_client.search_memory(query, user_id, conversation_id)\n\n        return [memory_detail.memory_value for memory_detail in response.data.memory_detail_list]\n\n    def add_message(self, messages, user_id, conversation_id):\n        \"\"\"Add messages to MemOS so they can be processed into memories\"\"\"\n        self.memos_client.add_message(messages, user_id, conversation_id)\n\n    def get_message(self, user_id, conversation_id):\n        \"\"\"Retrieve the raw messages stored in MemOS (for debugging\u002Finspection)\"\"\"\n        response = self.memos_client.get_message(user_id, conversation_id)\n        \n        return response.data.message_detail_list\n\n    def build_system_prompt(self, memories):\n        \"\"\"Builds a system prompt containing formatted memories\"\"\"\n        base_prompt = \"\"\"\n          You are a knowledgeable and considerate home life assistant.\n          You can leverage conversation memories to provide more personalized responses.\n          Use these memories to understand the user’s context, preferences, and past interactions.\n          If memory content is provided, naturally reference it when relevant, but do not explicitly state you have memory functions.\n        \"\"\"\n\n        if memories:\n            # Format memories as a numbered list\n            formatted_memories = \"## Memories:\\n\"\n            for i, memory in enumerate(memories, 1):\n                formatted_memories += f\"{i}. {memory}\\n\"\n            \n            return f\"{base_prompt}\\n\\n{formatted_memories}\"\n        else:\n            return base_prompt\n        \n\n    def chat(self, query, user_id, conversation_id):\n        \"\"\"Main chat function handling memory-integrated conversation\"\"\"\n        # 1. Search relevant memories\n        memories = self.search_memory(query, user_id, conversation_id)\n        \n        # Build system prompt including memories\n        system_prompt = self.build_system_prompt(memories)\n        \n        # 2. Use OpenAI to generate response\n        response = self.openai_client.chat.completions.create(\n            model=\"gpt-4o\",\n            messages=[\n                {\"role\": \"system\", \"content\": system_prompt},\n                {\"role\": \"user\", \"content\": query}\n            ]\n        )\n        answer = response.choices[0].message.content\n\n        # 3. Save dialogue into memory\n        messages = [\n            {\"role\": \"user\", \"content\": query},\n            {\"role\": \"assistant\", \"content\": answer}\n        ]\n        self.memos_client.add_message(messages, user_id, conversation_id)\n        \n        return answer\n\nai_assistant = HomeAssistant()\nuser_id = \"memos_home_management_user_123\"\n\ndef demo_questions():\n    return [\n      \"What plans do I have for the weekend?\",\n      \"Help me plan next week’s housework distribution\"\n    ]\n\ndef pre_configured_conversations():\n    \"\"\"Return pre-configured dialogue pairs\"\"\"\n    return [\n        {\n            \"user\": \"Take the kids to the zoo on Saturday, please remember it.\",\n        },\n        {\n            \"user\": \"For future reminders or plans, please first list three key points, then add one short suggestion.\",\n        }\n    ]\n\ndef execute_pre_conversations():\n    \"\"\"Execute pre-configured dialogues\"\"\"\n    conversations = pre_configured_conversations()\n    conversation_id = generate_conversation_id()\n\n    print(f\"\\n🔄 Executing pre-configured dialogues（conversation_id={conversation_id}）...\")\n    print(\"=\" * 60)\n    \n    for i, conv in enumerate(conversations, 1):\n        print(f\"\\n💬 Dialogue {i}\")\n        print(f\"👤 User: {conv['user']}\")\n        \n        # Execute dialogue\n        answer = ai_assistant.chat(conv['user'], user_id, conversation_id)\n        print(f\"🤖 Assistant: {answer}\")\n        print(\"-\" * 40)\n    \n    print(\"\\n✅ Pre-configured dialogues completed!\")\n    print(\"=\" * 60)\n\ndef main():    \n    print(\"🏠 Welcome to the example of MemOS applied in a home assistant!\")\n    print(\"💡 With the power of MemOS, your product can deliver a real butler-like experience! 😊 \\n\")\n    \n    # Ask whether to execute pre-configured dialogues first\n    while True:\n        pre_chat = input(\"🤔 Would you like to execute the pre-configured dialogues first? This will consume 2 add calls and 2 search calls. Proceed? (y\u002Fn): \").strip().lower()\n        \n        if pre_chat in ['y', 'yes']:\n            execute_pre_conversations()\n            break\n        elif pre_chat in ['n', 'no']:\n            print(\"📝 Starting a new dialogue...\")\n            break\n        else:\n            print(\"⚠️  Please enter 'y' for yes or 'n' for no\")\n\n    print(\"\\n⚡️ Each question you enter next will take place in a brand-new conversation (with a new conversation ID). MemOS will automatically recall your historical behavioral memories across conversations to provide you with continuous and personalized service.\")\n    print(\"\\n🎯 Here are some sample questions you can continue to ask the assistant:\")\n    for i, question in enumerate(demo_questions(), 1):\n      print(f\"  {i}. {question}\")\n\n    while True:\n        user_query = input(\"\\n🤔 Please enter your question (or type 'exit' to quit): \").strip()\n        \n        if user_query.lower() in ['quit', 'exit', 'q']:\n            print(\"👋 Thank you for using the home assistant!\")\n            break\n        \n        if not user_query:\n            continue\n        \n        print(\"🤖 Processing...\")\n        conversation_id = generate_conversation_id()\n        answer = ai_assistant.chat(user_query, user_id, conversation_id)\n        print(f\"\\n💬 conversation_id: {conversation_id}\\n💡 [Assistant]: {answer}\\n\")\n        print(\"-\" * 60)\n\n\nif __name__ == \"__main__\":\n    main()\n","python",[191,354,355,365,373,387,411,418,459,491,496,509,514,528,537,549,576,581,596,615,657,694,699,729,741,777,782,824,829,856,866,895,900,922,932,961,967,983,988,1007,1017,1028,1034,1040,1046,1052,1058,1063,1074,1080,1098,1129,1162,1168,1197,1205,1213,1218,1223,1249,1259,1265,1293,1298,1304,1325,1330,1336,1367,1385,1394,1433,1468,1474,1480,1511,1516,1522,1533,1567,1602,1608,1635,1640,1648,1653,1666,1681,1686,1696,1703,1716,1726,1732,1737,1747,1758,1765,1771,1792,1798,1803,1823,1829,1834,1839,1849,1859,1871,1883,1888,1918,1939,1944,1972,1999,2033,2038,2044,2081,2104,2125,2130,2148,2167,2172,2185,2201,2219,2224,2230,2239,2273,2278,2310,2318,2324,2354,2371,2376,2383,2399,2404,2422,2440,2468,2500,2505,2512,2539,2544,2591,2607,2612,2617,2629,2635,2640,2656,2668,2696,2735,2754,2759,2764,2785],{"__ignoreMap":321},[298,356,357,361],{"class":326,"line":327},[298,358,360],{"class":359},"s7zQu","import",[298,362,364],{"class":363},"sTEyZ"," os\n",[298,366,368,370],{"class":326,"line":367},2,[298,369,360],{"class":359},[298,371,372],{"class":363}," uuid\n",[298,374,376,379,382,384],{"class":326,"line":375},3,[298,377,378],{"class":359},"from",[298,380,381],{"class":363}," openai ",[298,383,360],{"class":359},[298,385,386],{"class":363}," OpenAI\n",[298,388,390,392,395,398,401,403,406,408],{"class":326,"line":389},4,[298,391,378],{"class":359},[298,393,394],{"class":363}," memos",[298,396,23],{"class":397},"sMK4o",[298,399,400],{"class":363},"api",[298,402,23],{"class":397},[298,404,405],{"class":363},"client ",[298,407,360],{"class":359},[298,409,410],{"class":363}," MemOSClient\n",[298,412,414],{"class":326,"line":413},5,[298,415,417],{"emptyLinePlaceholder":416},true,"\n",[298,419,421,424,426,430,433,436,439,441,444,447,450,453,455],{"class":326,"line":420},6,[298,422,423],{"class":363},"os",[298,425,23],{"class":397},[298,427,429],{"class":428},"swJcz","environ",[298,431,432],{"class":397},"[",[298,434,435],{"class":397},"\"",[298,437,438],{"class":334},"MEMOS_API_KEY",[298,440,435],{"class":397},[298,442,443],{"class":397},"]",[298,445,446],{"class":397}," =",[298,448,449],{"class":397}," \"",[298,451,452],{"class":334},"mpg-xx",[298,454,435],{"class":397},[298,456,458],{"class":457},"sHwdD"," # Get MemOS_API_KEY from cloud service console\n",[298,460,462,464,466,468,470,472,475,477,479,481,483,486,488],{"class":326,"line":461},7,[298,463,423],{"class":363},[298,465,23],{"class":397},[298,467,429],{"class":428},[298,469,432],{"class":397},[298,471,435],{"class":397},[298,473,474],{"class":334},"OPENAI_API_KEY",[298,476,435],{"class":397},[298,478,443],{"class":397},[298,480,446],{"class":397},[298,482,449],{"class":397},[298,484,485],{"class":334},"sk-xx",[298,487,435],{"class":397},[298,489,490],{"class":457}," # Replace with your own API_KEY\n",[298,492,494],{"class":326,"line":493},8,[298,495,417],{"emptyLinePlaceholder":416},[298,497,499,502,505],{"class":326,"line":498},9,[298,500,501],{"class":363},"conversation_counter ",[298,503,504],{"class":397},"=",[298,506,508],{"class":507},"sbssI"," 0\n",[298,510,512],{"class":326,"line":511},10,[298,513,417],{"emptyLinePlaceholder":416},[298,515,517,521,525],{"class":326,"line":516},11,[298,518,520],{"class":519},"spNyl","def",[298,522,524],{"class":523},"s2Zo4"," generate_conversation_id",[298,526,527],{"class":397},"():\n",[298,529,531,534],{"class":326,"line":530},12,[298,532,533],{"class":519},"    global",[298,535,536],{"class":363}," conversation_counter\n",[298,538,540,543,546],{"class":326,"line":539},13,[298,541,542],{"class":363},"    conversation_counter ",[298,544,545],{"class":397},"+=",[298,547,548],{"class":507}," 1\n",[298,550,552,555,558,561,564,567,570,573],{"class":326,"line":551},14,[298,553,554],{"class":359},"    return",[298,556,557],{"class":519}," f",[298,559,560],{"class":334},"\"conversation_",[298,562,563],{"class":507},"{",[298,565,566],{"class":363},"conversation_counter",[298,568,569],{"class":519},":03d",[298,571,572],{"class":507},"}",[298,574,575],{"class":334},"\"\n",[298,577,579],{"class":326,"line":578},15,[298,580,417],{"emptyLinePlaceholder":416},[298,582,584,587,590,593],{"class":326,"line":583},16,[298,585,586],{"class":519},"class",[298,588,589],{"class":330}," HomeAssistant",[298,591,592],{"class":397},":",[298,594,595],{"class":363},"    \n",[298,597,599,602,605,608,612],{"class":326,"line":598},17,[298,600,601],{"class":519},"    def",[298,603,604],{"class":523}," __init__",[298,606,607],{"class":397},"(",[298,609,611],{"class":610},"s5tWE","self",[298,613,614],{"class":397},"):\n",[298,616,618,621,623,626,628,631,633,637,639,641,643,646,648,650,652,654],{"class":326,"line":617},18,[298,619,620],{"class":363},"        self",[298,622,23],{"class":397},[298,624,625],{"class":428},"memos_client",[298,627,446],{"class":397},[298,629,630],{"class":523}," MemOSClient",[298,632,607],{"class":397},[298,634,636],{"class":635},"sHdIc","api_key",[298,638,504],{"class":397},[298,640,423],{"class":523},[298,642,23],{"class":397},[298,644,645],{"class":523},"getenv",[298,647,607],{"class":397},[298,649,435],{"class":397},[298,651,438],{"class":334},[298,653,435],{"class":397},[298,655,656],{"class":397},"))\n",[298,658,660,662,664,667,669,672,674,676,678,680,682,684,686,688,690,692],{"class":326,"line":659},19,[298,661,620],{"class":363},[298,663,23],{"class":397},[298,665,666],{"class":428},"openai_client",[298,668,446],{"class":397},[298,670,671],{"class":523}," OpenAI",[298,673,607],{"class":397},[298,675,636],{"class":635},[298,677,504],{"class":397},[298,679,423],{"class":523},[298,681,23],{"class":397},[298,683,645],{"class":523},[298,685,607],{"class":397},[298,687,435],{"class":397},[298,689,474],{"class":334},[298,691,435],{"class":397},[298,693,656],{"class":397},[298,695,697],{"class":326,"line":696},20,[298,698,595],{"class":363},[298,700,702,704,707,709,711,714,717,719,722,724,727],{"class":326,"line":701},21,[298,703,601],{"class":519},[298,705,706],{"class":523}," search_memory",[298,708,607],{"class":397},[298,710,611],{"class":610},[298,712,713],{"class":397},",",[298,715,716],{"class":635}," query",[298,718,713],{"class":397},[298,720,721],{"class":635}," user_id",[298,723,713],{"class":397},[298,725,726],{"class":635}," conversation_id",[298,728,614],{"class":397},[298,730,732,735,738],{"class":326,"line":731},22,[298,733,734],{"class":359},"        \"\"\"",[298,736,737],{"class":457},"Search relevant memories based on query",[298,739,740],{"class":359},"\"\"\"\n",[298,742,744,747,749,752,754,756,758,761,763,766,768,770,772,774],{"class":326,"line":743},23,[298,745,746],{"class":363},"        response ",[298,748,504],{"class":397},[298,750,751],{"class":363}," self",[298,753,23],{"class":397},[298,755,625],{"class":428},[298,757,23],{"class":397},[298,759,760],{"class":523},"search_memory",[298,762,607],{"class":397},[298,764,765],{"class":523},"query",[298,767,713],{"class":397},[298,769,721],{"class":523},[298,771,713],{"class":397},[298,773,726],{"class":523},[298,775,776],{"class":397},")\n",[298,778,780],{"class":326,"line":779},24,[298,781,417],{"emptyLinePlaceholder":416},[298,783,785,788,791,794,796,799,802,805,808,811,813,816,818,821],{"class":326,"line":784},25,[298,786,787],{"class":359},"        return",[298,789,790],{"class":397}," [",[298,792,793],{"class":363},"memory_detail",[298,795,23],{"class":397},[298,797,798],{"class":428},"memory_value",[298,800,801],{"class":359}," for",[298,803,804],{"class":363}," memory_detail ",[298,806,807],{"class":359},"in",[298,809,810],{"class":363}," response",[298,812,23],{"class":397},[298,814,815],{"class":428},"data",[298,817,23],{"class":397},[298,819,820],{"class":428},"memory_detail_list",[298,822,823],{"class":397},"]\n",[298,825,827],{"class":326,"line":826},26,[298,828,417],{"emptyLinePlaceholder":416},[298,830,832,834,837,839,841,843,846,848,850,852,854],{"class":326,"line":831},27,[298,833,601],{"class":519},[298,835,836],{"class":523}," add_message",[298,838,607],{"class":397},[298,840,611],{"class":610},[298,842,713],{"class":397},[298,844,845],{"class":635}," messages",[298,847,713],{"class":397},[298,849,721],{"class":635},[298,851,713],{"class":397},[298,853,726],{"class":635},[298,855,614],{"class":397},[298,857,859,861,864],{"class":326,"line":858},28,[298,860,734],{"class":359},[298,862,863],{"class":457},"Add messages to MemOS so they can be processed into memories",[298,865,740],{"class":359},[298,867,869,871,873,875,877,880,882,885,887,889,891,893],{"class":326,"line":868},29,[298,870,620],{"class":363},[298,872,23],{"class":397},[298,874,625],{"class":428},[298,876,23],{"class":397},[298,878,879],{"class":523},"add_message",[298,881,607],{"class":397},[298,883,884],{"class":523},"messages",[298,886,713],{"class":397},[298,888,721],{"class":523},[298,890,713],{"class":397},[298,892,726],{"class":523},[298,894,776],{"class":397},[298,896,898],{"class":326,"line":897},30,[298,899,417],{"emptyLinePlaceholder":416},[298,901,903,905,908,910,912,914,916,918,920],{"class":326,"line":902},31,[298,904,601],{"class":519},[298,906,907],{"class":523}," get_message",[298,909,607],{"class":397},[298,911,611],{"class":610},[298,913,713],{"class":397},[298,915,721],{"class":635},[298,917,713],{"class":397},[298,919,726],{"class":635},[298,921,614],{"class":397},[298,923,925,927,930],{"class":326,"line":924},32,[298,926,734],{"class":359},[298,928,929],{"class":457},"Retrieve the raw messages stored in MemOS (for debugging\u002Finspection)",[298,931,740],{"class":359},[298,933,935,937,939,941,943,945,947,950,952,955,957,959],{"class":326,"line":934},33,[298,936,746],{"class":363},[298,938,504],{"class":397},[298,940,751],{"class":363},[298,942,23],{"class":397},[298,944,625],{"class":428},[298,946,23],{"class":397},[298,948,949],{"class":523},"get_message",[298,951,607],{"class":397},[298,953,954],{"class":523},"user_id",[298,956,713],{"class":397},[298,958,726],{"class":523},[298,960,776],{"class":397},[298,962,964],{"class":326,"line":963},34,[298,965,966],{"class":363},"        \n",[298,968,970,972,974,976,978,980],{"class":326,"line":969},35,[298,971,787],{"class":359},[298,973,810],{"class":363},[298,975,23],{"class":397},[298,977,815],{"class":428},[298,979,23],{"class":397},[298,981,982],{"class":428},"message_detail_list\n",[298,984,986],{"class":326,"line":985},36,[298,987,417],{"emptyLinePlaceholder":416},[298,989,991,993,996,998,1000,1002,1005],{"class":326,"line":990},37,[298,992,601],{"class":519},[298,994,995],{"class":523}," build_system_prompt",[298,997,607],{"class":397},[298,999,611],{"class":610},[298,1001,713],{"class":397},[298,1003,1004],{"class":635}," memories",[298,1006,614],{"class":397},[298,1008,1010,1012,1015],{"class":326,"line":1009},38,[298,1011,734],{"class":359},[298,1013,1014],{"class":457},"Builds a system prompt containing formatted memories",[298,1016,740],{"class":359},[298,1018,1020,1023,1025],{"class":326,"line":1019},39,[298,1021,1022],{"class":363},"        base_prompt ",[298,1024,504],{"class":397},[298,1026,1027],{"class":397}," \"\"\"\n",[298,1029,1031],{"class":326,"line":1030},40,[298,1032,1033],{"class":334},"          You are a knowledgeable and considerate home life assistant.\n",[298,1035,1037],{"class":326,"line":1036},41,[298,1038,1039],{"class":334},"          You can leverage conversation memories to provide more personalized responses.\n",[298,1041,1043],{"class":326,"line":1042},42,[298,1044,1045],{"class":334},"          Use these memories to understand the user’s context, preferences, and past interactions.\n",[298,1047,1049],{"class":326,"line":1048},43,[298,1050,1051],{"class":334},"          If memory content is provided, naturally reference it when relevant, but do not explicitly state you have memory functions.\n",[298,1053,1055],{"class":326,"line":1054},44,[298,1056,1057],{"class":397},"        \"\"\"\n",[298,1059,1061],{"class":326,"line":1060},45,[298,1062,417],{"emptyLinePlaceholder":416},[298,1064,1066,1069,1071],{"class":326,"line":1065},46,[298,1067,1068],{"class":359},"        if",[298,1070,1004],{"class":363},[298,1072,1073],{"class":397},":\n",[298,1075,1077],{"class":326,"line":1076},47,[298,1078,1079],{"class":457},"            # Format memories as a numbered list\n",[298,1081,1083,1086,1088,1090,1093,1096],{"class":326,"line":1082},48,[298,1084,1085],{"class":363},"            formatted_memories ",[298,1087,504],{"class":397},[298,1089,449],{"class":397},[298,1091,1092],{"class":334},"## Memories:",[298,1094,1095],{"class":363},"\\n",[298,1097,575],{"class":397},[298,1099,1101,1104,1107,1109,1112,1114,1117,1119,1122,1124,1127],{"class":326,"line":1100},49,[298,1102,1103],{"class":359},"            for",[298,1105,1106],{"class":363}," i",[298,1108,713],{"class":397},[298,1110,1111],{"class":363}," memory ",[298,1113,807],{"class":359},[298,1115,1116],{"class":523}," enumerate",[298,1118,607],{"class":397},[298,1120,1121],{"class":523},"memories",[298,1123,713],{"class":397},[298,1125,1126],{"class":507}," 1",[298,1128,614],{"class":397},[298,1130,1132,1135,1137,1139,1141,1143,1146,1148,1151,1153,1156,1158,1160],{"class":326,"line":1131},50,[298,1133,1134],{"class":363},"                formatted_memories ",[298,1136,545],{"class":397},[298,1138,557],{"class":519},[298,1140,435],{"class":334},[298,1142,563],{"class":507},[298,1144,1145],{"class":363},"i",[298,1147,572],{"class":507},[298,1149,1150],{"class":334},". ",[298,1152,563],{"class":507},[298,1154,1155],{"class":363},"memory",[298,1157,572],{"class":507},[298,1159,1095],{"class":363},[298,1161,575],{"class":334},[298,1163,1165],{"class":326,"line":1164},51,[298,1166,1167],{"class":363},"            \n",[298,1169,1171,1174,1176,1178,1180,1183,1185,1188,1190,1193,1195],{"class":326,"line":1170},52,[298,1172,1173],{"class":359},"            return",[298,1175,557],{"class":519},[298,1177,435],{"class":334},[298,1179,563],{"class":507},[298,1181,1182],{"class":363},"base_prompt",[298,1184,572],{"class":507},[298,1186,1187],{"class":363},"\\n\\n",[298,1189,563],{"class":507},[298,1191,1192],{"class":363},"formatted_memories",[298,1194,572],{"class":507},[298,1196,575],{"class":334},[298,1198,1200,1203],{"class":326,"line":1199},53,[298,1201,1202],{"class":359},"        else",[298,1204,1073],{"class":397},[298,1206,1208,1210],{"class":326,"line":1207},54,[298,1209,1173],{"class":359},[298,1211,1212],{"class":363}," base_prompt\n",[298,1214,1216],{"class":326,"line":1215},55,[298,1217,966],{"class":363},[298,1219,1221],{"class":326,"line":1220},56,[298,1222,417],{"emptyLinePlaceholder":416},[298,1224,1226,1228,1231,1233,1235,1237,1239,1241,1243,1245,1247],{"class":326,"line":1225},57,[298,1227,601],{"class":519},[298,1229,1230],{"class":523}," chat",[298,1232,607],{"class":397},[298,1234,611],{"class":610},[298,1236,713],{"class":397},[298,1238,716],{"class":635},[298,1240,713],{"class":397},[298,1242,721],{"class":635},[298,1244,713],{"class":397},[298,1246,726],{"class":635},[298,1248,614],{"class":397},[298,1250,1252,1254,1257],{"class":326,"line":1251},58,[298,1253,734],{"class":359},[298,1255,1256],{"class":457},"Main chat function handling memory-integrated conversation",[298,1258,740],{"class":359},[298,1260,1262],{"class":326,"line":1261},59,[298,1263,1264],{"class":457},"        # 1. Search relevant memories\n",[298,1266,1268,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291],{"class":326,"line":1267},60,[298,1269,1270],{"class":363},"        memories ",[298,1272,504],{"class":397},[298,1274,751],{"class":363},[298,1276,23],{"class":397},[298,1278,760],{"class":523},[298,1280,607],{"class":397},[298,1282,765],{"class":523},[298,1284,713],{"class":397},[298,1286,721],{"class":523},[298,1288,713],{"class":397},[298,1290,726],{"class":523},[298,1292,776],{"class":397},[298,1294,1296],{"class":326,"line":1295},61,[298,1297,966],{"class":363},[298,1299,1301],{"class":326,"line":1300},62,[298,1302,1303],{"class":457},"        # Build system prompt including memories\n",[298,1305,1307,1310,1312,1314,1316,1319,1321,1323],{"class":326,"line":1306},63,[298,1308,1309],{"class":363},"        system_prompt ",[298,1311,504],{"class":397},[298,1313,751],{"class":363},[298,1315,23],{"class":397},[298,1317,1318],{"class":523},"build_system_prompt",[298,1320,607],{"class":397},[298,1322,1121],{"class":523},[298,1324,776],{"class":397},[298,1326,1328],{"class":326,"line":1327},64,[298,1329,966],{"class":363},[298,1331,1333],{"class":326,"line":1332},65,[298,1334,1335],{"class":457},"        # 2. Use OpenAI to generate response\n",[298,1337,1339,1341,1343,1345,1347,1349,1351,1354,1356,1359,1361,1364],{"class":326,"line":1338},66,[298,1340,746],{"class":363},[298,1342,504],{"class":397},[298,1344,751],{"class":363},[298,1346,23],{"class":397},[298,1348,666],{"class":428},[298,1350,23],{"class":397},[298,1352,1353],{"class":428},"chat",[298,1355,23],{"class":397},[298,1357,1358],{"class":428},"completions",[298,1360,23],{"class":397},[298,1362,1363],{"class":523},"create",[298,1365,1366],{"class":397},"(\n",[298,1368,1370,1373,1375,1377,1380,1382],{"class":326,"line":1369},67,[298,1371,1372],{"class":635},"            model",[298,1374,504],{"class":397},[298,1376,435],{"class":397},[298,1378,1379],{"class":334},"gpt-4o",[298,1381,435],{"class":397},[298,1383,1384],{"class":397},",\n",[298,1386,1388,1391],{"class":326,"line":1387},68,[298,1389,1390],{"class":635},"            messages",[298,1392,1393],{"class":397},"=[\n",[298,1395,1397,1400,1402,1405,1407,1409,1411,1414,1416,1418,1420,1423,1425,1427,1430],{"class":326,"line":1396},69,[298,1398,1399],{"class":397},"                {",[298,1401,435],{"class":397},[298,1403,1404],{"class":334},"role",[298,1406,435],{"class":397},[298,1408,592],{"class":397},[298,1410,449],{"class":397},[298,1412,1413],{"class":334},"system",[298,1415,435],{"class":397},[298,1417,713],{"class":397},[298,1419,449],{"class":397},[298,1421,1422],{"class":334},"content",[298,1424,435],{"class":397},[298,1426,592],{"class":397},[298,1428,1429],{"class":523}," system_prompt",[298,1431,1432],{"class":397},"},\n",[298,1434,1436,1438,1440,1442,1444,1446,1448,1451,1453,1455,1457,1459,1461,1463,1465],{"class":326,"line":1435},70,[298,1437,1399],{"class":397},[298,1439,435],{"class":397},[298,1441,1404],{"class":334},[298,1443,435],{"class":397},[298,1445,592],{"class":397},[298,1447,449],{"class":397},[298,1449,1450],{"class":334},"user",[298,1452,435],{"class":397},[298,1454,713],{"class":397},[298,1456,449],{"class":397},[298,1458,1422],{"class":334},[298,1460,435],{"class":397},[298,1462,592],{"class":397},[298,1464,716],{"class":523},[298,1466,1467],{"class":397},"}\n",[298,1469,1471],{"class":326,"line":1470},71,[298,1472,1473],{"class":397},"            ]\n",[298,1475,1477],{"class":326,"line":1476},72,[298,1478,1479],{"class":397},"        )\n",[298,1481,1483,1486,1488,1490,1492,1495,1497,1500,1503,1506,1508],{"class":326,"line":1482},73,[298,1484,1485],{"class":363},"        answer ",[298,1487,504],{"class":397},[298,1489,810],{"class":363},[298,1491,23],{"class":397},[298,1493,1494],{"class":428},"choices",[298,1496,432],{"class":397},[298,1498,1499],{"class":507},"0",[298,1501,1502],{"class":397},"].",[298,1504,1505],{"class":428},"message",[298,1507,23],{"class":397},[298,1509,1510],{"class":428},"content\n",[298,1512,1514],{"class":326,"line":1513},74,[298,1515,417],{"emptyLinePlaceholder":416},[298,1517,1519],{"class":326,"line":1518},75,[298,1520,1521],{"class":457},"        # 3. Save dialogue into memory\n",[298,1523,1525,1528,1530],{"class":326,"line":1524},76,[298,1526,1527],{"class":363},"        messages ",[298,1529,504],{"class":397},[298,1531,1532],{"class":397}," [\n",[298,1534,1536,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565],{"class":326,"line":1535},77,[298,1537,1538],{"class":397},"            {",[298,1540,435],{"class":397},[298,1542,1404],{"class":334},[298,1544,435],{"class":397},[298,1546,592],{"class":397},[298,1548,449],{"class":397},[298,1550,1450],{"class":334},[298,1552,435],{"class":397},[298,1554,713],{"class":397},[298,1556,449],{"class":397},[298,1558,1422],{"class":334},[298,1560,435],{"class":397},[298,1562,592],{"class":397},[298,1564,716],{"class":363},[298,1566,1432],{"class":397},[298,1568,1570,1572,1574,1576,1578,1580,1582,1585,1587,1589,1591,1593,1595,1597,1600],{"class":326,"line":1569},78,[298,1571,1538],{"class":397},[298,1573,435],{"class":397},[298,1575,1404],{"class":334},[298,1577,435],{"class":397},[298,1579,592],{"class":397},[298,1581,449],{"class":397},[298,1583,1584],{"class":334},"assistant",[298,1586,435],{"class":397},[298,1588,713],{"class":397},[298,1590,449],{"class":397},[298,1592,1422],{"class":334},[298,1594,435],{"class":397},[298,1596,592],{"class":397},[298,1598,1599],{"class":363}," answer",[298,1601,1467],{"class":397},[298,1603,1605],{"class":326,"line":1604},79,[298,1606,1607],{"class":397},"        ]\n",[298,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633],{"class":326,"line":1610},80,[298,1612,620],{"class":363},[298,1614,23],{"class":397},[298,1616,625],{"class":428},[298,1618,23],{"class":397},[298,1620,879],{"class":523},[298,1622,607],{"class":397},[298,1624,884],{"class":523},[298,1626,713],{"class":397},[298,1628,721],{"class":523},[298,1630,713],{"class":397},[298,1632,726],{"class":523},[298,1634,776],{"class":397},[298,1636,1638],{"class":326,"line":1637},81,[298,1639,966],{"class":363},[298,1641,1643,1645],{"class":326,"line":1642},82,[298,1644,787],{"class":359},[298,1646,1647],{"class":363}," answer\n",[298,1649,1651],{"class":326,"line":1650},83,[298,1652,417],{"emptyLinePlaceholder":416},[298,1654,1656,1659,1661,1663],{"class":326,"line":1655},84,[298,1657,1658],{"class":363},"ai_assistant ",[298,1660,504],{"class":397},[298,1662,589],{"class":523},[298,1664,1665],{"class":397},"()\n",[298,1667,1669,1672,1674,1676,1679],{"class":326,"line":1668},85,[298,1670,1671],{"class":363},"user_id ",[298,1673,504],{"class":397},[298,1675,449],{"class":397},[298,1677,1678],{"class":334},"memos_home_management_user_123",[298,1680,575],{"class":397},[298,1682,1684],{"class":326,"line":1683},86,[298,1685,417],{"emptyLinePlaceholder":416},[298,1687,1689,1691,1694],{"class":326,"line":1688},87,[298,1690,520],{"class":519},[298,1692,1693],{"class":523}," demo_questions",[298,1695,527],{"class":397},[298,1697,1699,1701],{"class":326,"line":1698},88,[298,1700,554],{"class":359},[298,1702,1532],{"class":397},[298,1704,1706,1709,1712,1714],{"class":326,"line":1705},89,[298,1707,1708],{"class":397},"      \"",[298,1710,1711],{"class":334},"What plans do I have for the weekend?",[298,1713,435],{"class":397},[298,1715,1384],{"class":397},[298,1717,1719,1721,1724],{"class":326,"line":1718},90,[298,1720,1708],{"class":397},[298,1722,1723],{"class":334},"Help me plan next week’s housework distribution",[298,1725,575],{"class":397},[298,1727,1729],{"class":326,"line":1728},91,[298,1730,1731],{"class":397},"    ]\n",[298,1733,1735],{"class":326,"line":1734},92,[298,1736,417],{"emptyLinePlaceholder":416},[298,1738,1740,1742,1745],{"class":326,"line":1739},93,[298,1741,520],{"class":519},[298,1743,1744],{"class":523}," pre_configured_conversations",[298,1746,527],{"class":397},[298,1748,1750,1753,1756],{"class":326,"line":1749},94,[298,1751,1752],{"class":359},"    \"\"\"",[298,1754,1755],{"class":457},"Return pre-configured dialogue pairs",[298,1757,740],{"class":359},[298,1759,1761,1763],{"class":326,"line":1760},95,[298,1762,554],{"class":359},[298,1764,1532],{"class":397},[298,1766,1768],{"class":326,"line":1767},96,[298,1769,1770],{"class":397},"        {\n",[298,1772,1774,1777,1779,1781,1783,1785,1788,1790],{"class":326,"line":1773},97,[298,1775,1776],{"class":397},"            \"",[298,1778,1450],{"class":334},[298,1780,435],{"class":397},[298,1782,592],{"class":397},[298,1784,449],{"class":397},[298,1786,1787],{"class":334},"Take the kids to the zoo on Saturday, please remember it.",[298,1789,435],{"class":397},[298,1791,1384],{"class":397},[298,1793,1795],{"class":326,"line":1794},98,[298,1796,1797],{"class":397},"        },\n",[298,1799,1801],{"class":326,"line":1800},99,[298,1802,1770],{"class":397},[298,1804,1806,1808,1810,1812,1814,1816,1819,1821],{"class":326,"line":1805},100,[298,1807,1776],{"class":397},[298,1809,1450],{"class":334},[298,1811,435],{"class":397},[298,1813,592],{"class":397},[298,1815,449],{"class":397},[298,1817,1818],{"class":334},"For future reminders or plans, please first list three key points, then add one short suggestion.",[298,1820,435],{"class":397},[298,1822,1384],{"class":397},[298,1824,1826],{"class":326,"line":1825},101,[298,1827,1828],{"class":397},"        }\n",[298,1830,1832],{"class":326,"line":1831},102,[298,1833,1731],{"class":397},[298,1835,1837],{"class":326,"line":1836},103,[298,1838,417],{"emptyLinePlaceholder":416},[298,1840,1842,1844,1847],{"class":326,"line":1841},104,[298,1843,520],{"class":519},[298,1845,1846],{"class":523}," execute_pre_conversations",[298,1848,527],{"class":397},[298,1850,1852,1854,1857],{"class":326,"line":1851},105,[298,1853,1752],{"class":359},[298,1855,1856],{"class":457},"Execute pre-configured dialogues",[298,1858,740],{"class":359},[298,1860,1862,1865,1867,1869],{"class":326,"line":1861},106,[298,1863,1864],{"class":363},"    conversations ",[298,1866,504],{"class":397},[298,1868,1744],{"class":523},[298,1870,1665],{"class":397},[298,1872,1874,1877,1879,1881],{"class":326,"line":1873},107,[298,1875,1876],{"class":363},"    conversation_id ",[298,1878,504],{"class":397},[298,1880,524],{"class":523},[298,1882,1665],{"class":397},[298,1884,1886],{"class":326,"line":1885},108,[298,1887,417],{"emptyLinePlaceholder":416},[298,1889,1891,1894,1896,1899,1901,1903,1906,1908,1911,1913,1916],{"class":326,"line":1890},109,[298,1892,1893],{"class":523},"    print",[298,1895,607],{"class":397},[298,1897,1898],{"class":519},"f",[298,1900,435],{"class":334},[298,1902,1095],{"class":363},[298,1904,1905],{"class":334},"🔄 Executing pre-configured dialogues（conversation_id=",[298,1907,563],{"class":507},[298,1909,1910],{"class":523},"conversation_id",[298,1912,572],{"class":507},[298,1914,1915],{"class":334},"）...\"",[298,1917,776],{"class":397},[298,1919,1921,1923,1925,1927,1929,1931,1934,1937],{"class":326,"line":1920},110,[298,1922,1893],{"class":523},[298,1924,607],{"class":397},[298,1926,435],{"class":397},[298,1928,504],{"class":334},[298,1930,435],{"class":397},[298,1932,1933],{"class":397}," *",[298,1935,1936],{"class":507}," 60",[298,1938,776],{"class":397},[298,1940,1942],{"class":326,"line":1941},111,[298,1943,595],{"class":363},[298,1945,1947,1950,1952,1954,1957,1959,1961,1963,1966,1968,1970],{"class":326,"line":1946},112,[298,1948,1949],{"class":359},"    for",[298,1951,1106],{"class":363},[298,1953,713],{"class":397},[298,1955,1956],{"class":363}," conv ",[298,1958,807],{"class":359},[298,1960,1116],{"class":523},[298,1962,607],{"class":397},[298,1964,1965],{"class":523},"conversations",[298,1967,713],{"class":397},[298,1969,1126],{"class":507},[298,1971,614],{"class":397},[298,1973,1975,1978,1980,1982,1984,1986,1989,1991,1993,1995,1997],{"class":326,"line":1974},113,[298,1976,1977],{"class":523},"        print",[298,1979,607],{"class":397},[298,1981,1898],{"class":519},[298,1983,435],{"class":334},[298,1985,1095],{"class":363},[298,1987,1988],{"class":334},"💬 Dialogue ",[298,1990,563],{"class":507},[298,1992,1145],{"class":523},[298,1994,572],{"class":507},[298,1996,435],{"class":334},[298,1998,776],{"class":397},[298,2000,2002,2004,2006,2008,2011,2013,2016,2018,2021,2023,2025,2027,2029,2031],{"class":326,"line":2001},114,[298,2003,1977],{"class":523},[298,2005,607],{"class":397},[298,2007,1898],{"class":519},[298,2009,2010],{"class":334},"\"👤 User: ",[298,2012,563],{"class":507},[298,2014,2015],{"class":523},"conv",[298,2017,432],{"class":397},[298,2019,2020],{"class":397},"'",[298,2022,1450],{"class":334},[298,2024,2020],{"class":397},[298,2026,443],{"class":397},[298,2028,572],{"class":507},[298,2030,435],{"class":334},[298,2032,776],{"class":397},[298,2034,2036],{"class":326,"line":2035},115,[298,2037,966],{"class":363},[298,2039,2041],{"class":326,"line":2040},116,[298,2042,2043],{"class":457},"        # Execute dialogue\n",[298,2045,2047,2049,2051,2054,2056,2058,2060,2062,2064,2066,2068,2070,2073,2075,2077,2079],{"class":326,"line":2046},117,[298,2048,1485],{"class":363},[298,2050,504],{"class":397},[298,2052,2053],{"class":363}," ai_assistant",[298,2055,23],{"class":397},[298,2057,1353],{"class":523},[298,2059,607],{"class":397},[298,2061,2015],{"class":523},[298,2063,432],{"class":397},[298,2065,2020],{"class":397},[298,2067,1450],{"class":334},[298,2069,2020],{"class":397},[298,2071,2072],{"class":397},"],",[298,2074,721],{"class":523},[298,2076,713],{"class":397},[298,2078,726],{"class":523},[298,2080,776],{"class":397},[298,2082,2084,2086,2088,2090,2093,2095,2098,2100,2102],{"class":326,"line":2083},118,[298,2085,1977],{"class":523},[298,2087,607],{"class":397},[298,2089,1898],{"class":519},[298,2091,2092],{"class":334},"\"🤖 Assistant: ",[298,2094,563],{"class":507},[298,2096,2097],{"class":523},"answer",[298,2099,572],{"class":507},[298,2101,435],{"class":334},[298,2103,776],{"class":397},[298,2105,2107,2109,2111,2113,2116,2118,2120,2123],{"class":326,"line":2106},119,[298,2108,1977],{"class":523},[298,2110,607],{"class":397},[298,2112,435],{"class":397},[298,2114,2115],{"class":334},"-",[298,2117,435],{"class":397},[298,2119,1933],{"class":397},[298,2121,2122],{"class":507}," 40",[298,2124,776],{"class":397},[298,2126,2128],{"class":326,"line":2127},120,[298,2129,595],{"class":363},[298,2131,2133,2135,2137,2139,2141,2144,2146],{"class":326,"line":2132},121,[298,2134,1893],{"class":523},[298,2136,607],{"class":397},[298,2138,435],{"class":397},[298,2140,1095],{"class":363},[298,2142,2143],{"class":334},"✅ Pre-configured dialogues completed!",[298,2145,435],{"class":397},[298,2147,776],{"class":397},[298,2149,2151,2153,2155,2157,2159,2161,2163,2165],{"class":326,"line":2150},122,[298,2152,1893],{"class":523},[298,2154,607],{"class":397},[298,2156,435],{"class":397},[298,2158,504],{"class":334},[298,2160,435],{"class":397},[298,2162,1933],{"class":397},[298,2164,1936],{"class":507},[298,2166,776],{"class":397},[298,2168,2170],{"class":326,"line":2169},123,[298,2171,417],{"emptyLinePlaceholder":416},[298,2173,2175,2177,2180,2183],{"class":326,"line":2174},124,[298,2176,520],{"class":519},[298,2178,2179],{"class":523}," main",[298,2181,2182],{"class":397},"():",[298,2184,595],{"class":363},[298,2186,2188,2190,2192,2194,2197,2199],{"class":326,"line":2187},125,[298,2189,1893],{"class":523},[298,2191,607],{"class":397},[298,2193,435],{"class":397},[298,2195,2196],{"class":334},"🏠 Welcome to the example of MemOS applied in a home assistant!",[298,2198,435],{"class":397},[298,2200,776],{"class":397},[298,2202,2204,2206,2208,2210,2213,2215,2217],{"class":326,"line":2203},126,[298,2205,1893],{"class":523},[298,2207,607],{"class":397},[298,2209,435],{"class":397},[298,2211,2212],{"class":334},"💡 With the power of MemOS, your product can deliver a real butler-like experience! 😊 ",[298,2214,1095],{"class":363},[298,2216,435],{"class":397},[298,2218,776],{"class":397},[298,2220,2222],{"class":326,"line":2221},127,[298,2223,595],{"class":363},[298,2225,2227],{"class":326,"line":2226},128,[298,2228,2229],{"class":457},"    # Ask whether to execute pre-configured dialogues first\n",[298,2231,2233,2236],{"class":326,"line":2232},129,[298,2234,2235],{"class":359},"    while",[298,2237,2238],{"class":397}," True:\n",[298,2240,2242,2245,2247,2250,2252,2254,2257,2259,2262,2265,2268,2271],{"class":326,"line":2241},130,[298,2243,2244],{"class":363},"        pre_chat ",[298,2246,504],{"class":397},[298,2248,2249],{"class":523}," input",[298,2251,607],{"class":397},[298,2253,435],{"class":397},[298,2255,2256],{"class":334},"🤔 Would you like to execute the pre-configured dialogues first? This will consume 2 add calls and 2 search calls. Proceed? (y\u002Fn): ",[298,2258,435],{"class":397},[298,2260,2261],{"class":397},").",[298,2263,2264],{"class":523},"strip",[298,2266,2267],{"class":397},"().",[298,2269,2270],{"class":523},"lower",[298,2272,1665],{"class":397},[298,2274,2276],{"class":326,"line":2275},131,[298,2277,966],{"class":363},[298,2279,2281,2283,2286,2288,2290,2292,2295,2297,2299,2302,2305,2307],{"class":326,"line":2280},132,[298,2282,1068],{"class":359},[298,2284,2285],{"class":363}," pre_chat ",[298,2287,807],{"class":397},[298,2289,790],{"class":397},[298,2291,2020],{"class":397},[298,2293,2294],{"class":334},"y",[298,2296,2020],{"class":397},[298,2298,713],{"class":397},[298,2300,2301],{"class":397}," '",[298,2303,2304],{"class":334},"yes",[298,2306,2020],{"class":397},[298,2308,2309],{"class":397},"]:\n",[298,2311,2313,2316],{"class":326,"line":2312},133,[298,2314,2315],{"class":523},"            execute_pre_conversations",[298,2317,1665],{"class":397},[298,2319,2321],{"class":326,"line":2320},134,[298,2322,2323],{"class":359},"            break\n",[298,2325,2327,2330,2332,2334,2336,2338,2341,2343,2345,2347,2350,2352],{"class":326,"line":2326},135,[298,2328,2329],{"class":359},"        elif",[298,2331,2285],{"class":363},[298,2333,807],{"class":397},[298,2335,790],{"class":397},[298,2337,2020],{"class":397},[298,2339,2340],{"class":334},"n",[298,2342,2020],{"class":397},[298,2344,713],{"class":397},[298,2346,2301],{"class":397},[298,2348,2349],{"class":334},"no",[298,2351,2020],{"class":397},[298,2353,2309],{"class":397},[298,2355,2357,2360,2362,2364,2367,2369],{"class":326,"line":2356},136,[298,2358,2359],{"class":523},"            print",[298,2361,607],{"class":397},[298,2363,435],{"class":397},[298,2365,2366],{"class":334},"📝 Starting a new dialogue...",[298,2368,435],{"class":397},[298,2370,776],{"class":397},[298,2372,2374],{"class":326,"line":2373},137,[298,2375,2323],{"class":359},[298,2377,2379,2381],{"class":326,"line":2378},138,[298,2380,1202],{"class":359},[298,2382,1073],{"class":397},[298,2384,2386,2388,2390,2392,2395,2397],{"class":326,"line":2385},139,[298,2387,2359],{"class":523},[298,2389,607],{"class":397},[298,2391,435],{"class":397},[298,2393,2394],{"class":334},"⚠️  Please enter 'y' for yes or 'n' for no",[298,2396,435],{"class":397},[298,2398,776],{"class":397},[298,2400,2402],{"class":326,"line":2401},140,[298,2403,417],{"emptyLinePlaceholder":416},[298,2405,2407,2409,2411,2413,2415,2418,2420],{"class":326,"line":2406},141,[298,2408,1893],{"class":523},[298,2410,607],{"class":397},[298,2412,435],{"class":397},[298,2414,1095],{"class":363},[298,2416,2417],{"class":334},"⚡️ Each question you enter next will take place in a brand-new conversation (with a new conversation ID). MemOS will automatically recall your historical behavioral memories across conversations to provide you with continuous and personalized service.",[298,2419,435],{"class":397},[298,2421,776],{"class":397},[298,2423,2425,2427,2429,2431,2433,2436,2438],{"class":326,"line":2424},142,[298,2426,1893],{"class":523},[298,2428,607],{"class":397},[298,2430,435],{"class":397},[298,2432,1095],{"class":363},[298,2434,2435],{"class":334},"🎯 Here are some sample questions you can continue to ask the assistant:",[298,2437,435],{"class":397},[298,2439,776],{"class":397},[298,2441,2443,2445,2447,2449,2452,2454,2456,2458,2461,2464,2466],{"class":326,"line":2442},143,[298,2444,1949],{"class":359},[298,2446,1106],{"class":363},[298,2448,713],{"class":397},[298,2450,2451],{"class":363}," question ",[298,2453,807],{"class":359},[298,2455,1116],{"class":523},[298,2457,607],{"class":397},[298,2459,2460],{"class":523},"demo_questions",[298,2462,2463],{"class":397},"(),",[298,2465,1126],{"class":507},[298,2467,614],{"class":397},[298,2469,2471,2474,2476,2478,2481,2483,2485,2487,2489,2491,2494,2496,2498],{"class":326,"line":2470},144,[298,2472,2473],{"class":523},"      print",[298,2475,607],{"class":397},[298,2477,1898],{"class":519},[298,2479,2480],{"class":334},"\"  ",[298,2482,563],{"class":507},[298,2484,1145],{"class":523},[298,2486,572],{"class":507},[298,2488,1150],{"class":334},[298,2490,563],{"class":507},[298,2492,2493],{"class":523},"question",[298,2495,572],{"class":507},[298,2497,435],{"class":334},[298,2499,776],{"class":397},[298,2501,2503],{"class":326,"line":2502},145,[298,2504,417],{"emptyLinePlaceholder":416},[298,2506,2508,2510],{"class":326,"line":2507},146,[298,2509,2235],{"class":359},[298,2511,2238],{"class":397},[298,2513,2515,2518,2520,2522,2524,2526,2528,2531,2533,2535,2537],{"class":326,"line":2514},147,[298,2516,2517],{"class":363},"        user_query ",[298,2519,504],{"class":397},[298,2521,2249],{"class":523},[298,2523,607],{"class":397},[298,2525,435],{"class":397},[298,2527,1095],{"class":363},[298,2529,2530],{"class":334},"🤔 Please enter your question (or type 'exit' to quit): ",[298,2532,435],{"class":397},[298,2534,2261],{"class":397},[298,2536,2264],{"class":523},[298,2538,1665],{"class":397},[298,2540,2542],{"class":326,"line":2541},148,[298,2543,966],{"class":363},[298,2545,2547,2549,2552,2554,2556,2559,2562,2564,2566,2569,2571,2573,2575,2578,2580,2582,2584,2587,2589],{"class":326,"line":2546},149,[298,2548,1068],{"class":359},[298,2550,2551],{"class":363}," user_query",[298,2553,23],{"class":397},[298,2555,2270],{"class":523},[298,2557,2558],{"class":397},"()",[298,2560,2561],{"class":397}," in",[298,2563,790],{"class":397},[298,2565,2020],{"class":397},[298,2567,2568],{"class":334},"quit",[298,2570,2020],{"class":397},[298,2572,713],{"class":397},[298,2574,2301],{"class":397},[298,2576,2577],{"class":334},"exit",[298,2579,2020],{"class":397},[298,2581,713],{"class":397},[298,2583,2301],{"class":397},[298,2585,2586],{"class":334},"q",[298,2588,2020],{"class":397},[298,2590,2309],{"class":397},[298,2592,2594,2596,2598,2600,2603,2605],{"class":326,"line":2593},150,[298,2595,2359],{"class":523},[298,2597,607],{"class":397},[298,2599,435],{"class":397},[298,2601,2602],{"class":334},"👋 Thank you for using the home assistant!",[298,2604,435],{"class":397},[298,2606,776],{"class":397},[298,2608,2610],{"class":326,"line":2609},151,[298,2611,2323],{"class":359},[298,2613,2615],{"class":326,"line":2614},152,[298,2616,966],{"class":363},[298,2618,2620,2622,2625,2627],{"class":326,"line":2619},153,[298,2621,1068],{"class":359},[298,2623,2624],{"class":397}," not",[298,2626,2551],{"class":363},[298,2628,1073],{"class":397},[298,2630,2632],{"class":326,"line":2631},154,[298,2633,2634],{"class":359},"            continue\n",[298,2636,2638],{"class":326,"line":2637},155,[298,2639,966],{"class":363},[298,2641,2643,2645,2647,2649,2652,2654],{"class":326,"line":2642},156,[298,2644,1977],{"class":523},[298,2646,607],{"class":397},[298,2648,435],{"class":397},[298,2650,2651],{"class":334},"🤖 Processing...",[298,2653,435],{"class":397},[298,2655,776],{"class":397},[298,2657,2659,2662,2664,2666],{"class":326,"line":2658},157,[298,2660,2661],{"class":363},"        conversation_id ",[298,2663,504],{"class":397},[298,2665,524],{"class":523},[298,2667,1665],{"class":397},[298,2669,2671,2673,2675,2677,2679,2681,2683,2686,2688,2690,2692,2694],{"class":326,"line":2670},158,[298,2672,1485],{"class":363},[298,2674,504],{"class":397},[298,2676,2053],{"class":363},[298,2678,23],{"class":397},[298,2680,1353],{"class":523},[298,2682,607],{"class":397},[298,2684,2685],{"class":523},"user_query",[298,2687,713],{"class":397},[298,2689,721],{"class":523},[298,2691,713],{"class":397},[298,2693,726],{"class":523},[298,2695,776],{"class":397},[298,2697,2699,2701,2703,2705,2707,2709,2712,2714,2716,2718,2720,2723,2725,2727,2729,2731,2733],{"class":326,"line":2698},159,[298,2700,1977],{"class":523},[298,2702,607],{"class":397},[298,2704,1898],{"class":519},[298,2706,435],{"class":334},[298,2708,1095],{"class":363},[298,2710,2711],{"class":334},"💬 conversation_id: ",[298,2713,563],{"class":507},[298,2715,1910],{"class":523},[298,2717,572],{"class":507},[298,2719,1095],{"class":363},[298,2721,2722],{"class":334},"💡 [Assistant]: ",[298,2724,563],{"class":507},[298,2726,2097],{"class":523},[298,2728,572],{"class":507},[298,2730,1095],{"class":363},[298,2732,435],{"class":334},[298,2734,776],{"class":397},[298,2736,2738,2740,2742,2744,2746,2748,2750,2752],{"class":326,"line":2737},160,[298,2739,1977],{"class":523},[298,2741,607],{"class":397},[298,2743,435],{"class":397},[298,2745,2115],{"class":334},[298,2747,435],{"class":397},[298,2749,1933],{"class":397},[298,2751,1936],{"class":507},[298,2753,776],{"class":397},[298,2755,2757],{"class":326,"line":2756},161,[298,2758,417],{"emptyLinePlaceholder":416},[298,2760,2762],{"class":326,"line":2761},162,[298,2763,417],{"emptyLinePlaceholder":416},[298,2765,2767,2770,2773,2776,2778,2781,2783],{"class":326,"line":2766},163,[298,2768,2769],{"class":359},"if",[298,2771,2772],{"class":363}," __name__ ",[298,2774,2775],{"class":397},"==",[298,2777,449],{"class":397},[298,2779,2780],{"class":334},"__main__",[298,2782,435],{"class":397},[298,2784,1073],{"class":397},[298,2786,2788,2791],{"class":326,"line":2787},164,[298,2789,2790],{"class":523},"    main",[298,2792,1665],{"class":397},[41,2794],{},[44,2796,2798],{"id":2797},"_23-code-explanation","2.3 Code Explanation",[2800,2801,2802,2805,2811,2814,2821],"ol",{},[28,2803,2804],{},"Set your MemOS API key and OpenAI key in environment variables",[28,2806,2807,2808],{},"Instantiate ",[191,2809,2810],{},"HomeAssistant",[28,2812,2813],{},"Choose whether to run pre-configured dialogues (consumes 2 add calls and 2 search calls)",[28,2815,2816,2817,2820],{},"Use the ",[191,2818,2819],{},"main()"," function to interact with the assistant in a dialogue loop",[28,2822,2823,2824,2826,2827,2830,2831,2834],{},"The assistant calls ",[191,2825,1353],{},", first performing ",[191,2828,2829],{},"search"," to retrieve memories, then using OpenAI for conversation, and finally performing ",[191,2832,2833],{},"add"," to store the memory",[2836,2837,2838],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s5tWE, html code.shiki .s5tWE{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":321,"searchDepth":367,"depth":367,"links":2840},[2841,2847],{"id":13,"depth":367,"text":14,"children":2842},[2843,2844,2845,2846],{"id":46,"depth":375,"text":47},{"id":102,"depth":375,"text":103},{"id":131,"depth":375,"text":132},{"id":269,"depth":375,"text":270},{"id":306,"depth":367,"text":307,"children":2848},[2849,2850,2851],{"id":310,"depth":375,"text":311},{"id":346,"depth":375,"text":347},{"id":2797,"depth":375,"text":2798},"With the support of MemOS, a home assistant can connect daily chores and long-term plans, quickly understanding and responding to the user’s real needs.","md",{},"\u002Fen\u002Fusecase\u002Fhome_assistant",{"title":5,"description":321},"en\u002Fusecase\u002Fhome_assistant","uClwRXkP3TGqnYpPojVAkOj6Uj2izv87fz3dBEdAUUo",[2860,2868],{"title":2861,"path":2862,"stem":2863,"icon":2864,"framework":6,"module":6,"class":2865,"target":-1,"active":2866,"defaultOpen":2866,"children":-1,"description":2867},"Writing Assistant","\u002Fusecase\u002Fwritting_assistant","usecase\u002Fwritting_assistant","i-ri-edit-line",[],false,"With MemOS, your product will automatically remember the user's writing habits and context, making the creative process more coherent and effortless.",{"title":2869,"path":2870,"stem":2871,"icon":2872,"framework":6,"module":6,"class":2873,"target":-1,"active":2866,"defaultOpen":2866,"children":-1,"description":-1},"Claude MCP","\u002Fusecase\u002Fframeworks\u002Fclaude_mcp","usecase\u002Fframeworks\u002Fclaude_mcp","i-ri-brain-line",[],1775811151942]