diff options
Diffstat (limited to 'packages/docs-test/tests/python/user_profiles.py')
| -rw-r--r-- | packages/docs-test/tests/python/user_profiles.py | 102 |
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() |