75c67150d0
build / build (3.13) (push) Waiting to run
release-please / release-please (push) Waiting to run
release-please / build wheels (macos-aarch64) (push) Blocked by required conditions
release-please / build wheels (macos-x86_64) (push) Blocked by required conditions
release-please / build wheels (windows-x86_64) (push) Blocked by required conditions
release-please / build wheels (linux-aarch64) (push) Blocked by required conditions
release-please / build wheels (linux-x86_64) (push) Blocked by required conditions
release-please / build sdist (push) Blocked by required conditions
release-please / publish release artifacts (push) Blocked by required conditions
83 lines
3.1 KiB
Python
83 lines
3.1 KiB
Python
import os
|
|
|
|
from memu.app import MemoryService
|
|
|
|
|
|
async def main():
|
|
"""Test with PostgreSQL storage."""
|
|
api_key = os.environ.get("OPENAI_API_KEY")
|
|
# Default port 5432; use 5433 if 5432 is occupied
|
|
postgres_dsn = os.environ.get("POSTGRES_DSN", "postgresql+psycopg://postgres:postgres@127.0.0.1:5432/memu")
|
|
file_path = os.path.abspath("tests/example/example_conversation.json")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("[POSTGRES] Starting test...")
|
|
print(f"[POSTGRES] DSN: {postgres_dsn}")
|
|
print("=" * 60)
|
|
|
|
service = MemoryService(
|
|
llm_profiles={"default": {"api_key": api_key}},
|
|
database_config={
|
|
"metadata_store": {
|
|
"provider": "postgres",
|
|
"dsn": postgres_dsn,
|
|
"ddl_mode": "create",
|
|
},
|
|
# vector_index will auto-configure to pgvector
|
|
},
|
|
retrieve_config={"method": "rag"},
|
|
)
|
|
|
|
# Memorize
|
|
print("\n[POSTGRES] Memorizing...")
|
|
memory = await service.memorize(resource_url=file_path, modality="conversation", user={"user_id": "123"})
|
|
for cat in memory.get("categories", []):
|
|
print(f" - {cat.get('name')}: {(cat.get('summary') or '')[:80]}...")
|
|
|
|
queries = [
|
|
{"role": "user", "content": {"text": "Tell me about preferences"}},
|
|
{"role": "assistant", "content": {"text": "Sure, I'll tell you about their preferences"}},
|
|
{
|
|
"role": "user",
|
|
"content": {"text": "What are they"},
|
|
}, # This is the query that will be used to retrieve the memory, the context will be used for query rewriting
|
|
]
|
|
|
|
# RAG-based retrieval
|
|
print("\n[POSTGRES] RETRIEVED - RAG")
|
|
service.retrieve_config.method = "rag"
|
|
result_rag = await service.retrieve(queries=queries, where={"user_id": "123"})
|
|
print(" Categories:")
|
|
for cat in result_rag.get("categories", [])[:3]:
|
|
print(f" - {cat.get('name')}: {(cat.get('summary') or cat.get('description', ''))[:80]}...")
|
|
print(" Items:")
|
|
for item in result_rag.get("items", [])[:3]:
|
|
print(f" - [{item.get('memory_type')}] {item.get('summary', '')[:100]}...")
|
|
if result_rag.get("resources"):
|
|
print(" Resources:")
|
|
for res in result_rag.get("resources", [])[:3]:
|
|
print(f" - [{res.get('modality')}] {res.get('url', '')[:80]}...")
|
|
|
|
# LLM-based retrieval
|
|
print("\n[POSTGRES] RETRIEVED - LLM")
|
|
service.retrieve_config.method = "llm"
|
|
result_llm = await service.retrieve(queries=queries, where={"user_id": "123"})
|
|
print(" Categories:")
|
|
for cat in result_llm.get("categories", [])[:3]:
|
|
print(f" - {cat.get('name')}: {(cat.get('summary') or cat.get('description', ''))[:80]}...")
|
|
print(" Items:")
|
|
for item in result_llm.get("items", [])[:3]:
|
|
print(f" - [{item.get('memory_type')}] {item.get('summary', '')[:100]}...")
|
|
if result_llm.get("resources"):
|
|
print(" Resources:")
|
|
for res in result_llm.get("resources", [])[:3]:
|
|
print(f" - [{res.get('modality')}] {res.get('url', '')[:80]}...")
|
|
|
|
print("\n[POSTGRES] Test completed!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import asyncio
|
|
|
|
asyncio.run(main())
|