aboutsummaryrefslogtreecommitdiff
path: root/packages/docs-test/tests/python/user_profiles.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/docs-test/tests/python/user_profiles.py')
-rw-r--r--packages/docs-test/tests/python/user_profiles.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/packages/docs-test/tests/python/user_profiles.py b/packages/docs-test/tests/python/user_profiles.py
new file mode 100644
index 00000000..f34c1499
--- /dev/null
+++ b/packages/docs-test/tests/python/user_profiles.py
@@ -0,0 +1,102 @@
+import os
+import time
+from dotenv import load_dotenv
+from supermemory import Supermemory
+
+load_dotenv()
+
+client = Supermemory()
+USER_ID = "docs-test-profiles-py"
+
+
+def test_basic_profile():
+ """Test basic profile retrieval"""
+ print("=== Basic Profile ===")
+
+ profile = client.profile(
+ container_tag=USER_ID,
+ q="What are my preferences?",
+ )
+
+ print(f"✓ Static profile: {len(profile.profile.static)} items")
+ print(f"✓ Dynamic profile: {len(profile.profile.dynamic)} items")
+ print(f"✓ Search results: {len(profile.search_results.results)} items")
+
+
+def test_profile_with_memories():
+ """Test profile with memory context"""
+ print("\n=== Profile with Memory Context ===")
+
+ # Add some memories
+ client.add(
+ content="User prefers dark mode for all applications",
+ container_tag=USER_ID,
+ )
+ client.add(
+ content="User is learning TypeScript and Rust",
+ container_tag=USER_ID,
+ )
+
+ # Wait for indexing
+ time.sleep(2)
+
+ # Get profile with search
+ profile = client.profile(
+ container_tag=USER_ID,
+ q="What programming languages does the user know?",
+ )
+
+ print("✓ Profile retrieved with memories")
+ print(f" Static: {profile.profile.static[:2]}")
+ print(f" Dynamic: {profile.profile.dynamic[:2]}")
+
+
+def get_memory(r):
+ if hasattr(r, 'memory'):
+ return r.memory
+ return r.get('memory', '') if isinstance(r, dict) else str(r)
+
+
+def test_building_context():
+ """Test building LLM context"""
+ print("\n=== Building LLM Context ===")
+
+ conversation = [{"role": "user", "content": "What theme should I use for my IDE?"}]
+
+ profile = client.profile(
+ container_tag=USER_ID,
+ q=conversation[-1]["content"],
+ )
+
+ context = f"""User Profile:
+{chr(10).join(profile.profile.static)}
+
+Recent Context:
+{chr(10).join(profile.profile.dynamic)}
+
+Relevant Memories:
+{chr(10).join(get_memory(r) for r in profile.search_results.results)}"""
+
+ print(f"✓ Built context: {len(context)} chars")
+
+ messages = [
+ {"role": "system", "content": f"Use this context about the user:\n{context}"},
+ *conversation,
+ ]
+ print(f"✓ Messages ready for LLM: {len(messages)} messages")
+
+
+def main():
+ print("User Profiles Tests")
+ print("===================\n")
+
+ test_basic_profile()
+ test_profile_with_memories()
+ test_building_context()
+
+ print("\n===================")
+ print("✅ All user profile tests passed!")
+
+
+if __name__ == "__main__":
+ main()