94 lines
2.6 KiB
Python
94 lines
2.6 KiB
Python
"""
|
|
Example of using memory-poc as a library in another project.
|
|
|
|
This demonstrates how to:
|
|
1. Import and use the memory system directly
|
|
2. Import and extend the FastAPI app
|
|
3. Mount the memory app as a sub-application
|
|
"""
|
|
import asyncio
|
|
from memora.web import app, memory
|
|
|
|
|
|
async def example_memory_usage():
|
|
"""Example of using the memory system directly."""
|
|
# Initialize memory system
|
|
await memory.initialize()
|
|
|
|
try:
|
|
# Store some memories
|
|
await memory.put_async(
|
|
agent_id="example_agent",
|
|
content="Example memory content",
|
|
context="test context"
|
|
)
|
|
|
|
# Search for memories
|
|
results, trace = await memory.search_async(
|
|
agent_id="example_agent",
|
|
query="example",
|
|
top_k=5
|
|
)
|
|
|
|
print(f"Found {len(results)} results")
|
|
for result in results:
|
|
print(f" - {result['text']} (score: {result['score']:.4f})")
|
|
|
|
# Use think functionality
|
|
think_result = await memory.think_async(
|
|
agent_id="example_agent",
|
|
query="What do you know?",
|
|
thinking_budget=50
|
|
)
|
|
|
|
print(f"\nThink result: {think_result['text']}")
|
|
if think_result.get('new_opinions'):
|
|
print(f"New opinions formed: {len(think_result['new_opinions'])}")
|
|
|
|
finally:
|
|
# Clean up
|
|
await memory.close()
|
|
|
|
|
|
def example_fastapi_extension():
|
|
"""Example of extending the FastAPI app with custom endpoints."""
|
|
from fastapi import FastAPI
|
|
|
|
# Option 1: Add endpoints directly to the imported app
|
|
@app.get("/api/custom")
|
|
async def custom_endpoint():
|
|
return {"message": "Custom endpoint added to memory-poc app"}
|
|
|
|
# Option 2: Mount as sub-application
|
|
main_app = FastAPI(title="My Application")
|
|
|
|
@main_app.get("/")
|
|
async def root():
|
|
return {"message": "My main application"}
|
|
|
|
# Mount the memory app at /memory
|
|
main_app.mount("/memory", app)
|
|
|
|
# Now you can access:
|
|
# - / -> your main app
|
|
# - /memory/ -> memory visualization
|
|
# - /memory/api/graph -> memory graph API
|
|
# - /memory/api/search -> memory search API
|
|
|
|
return main_app
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# Example 1: Use memory system directly
|
|
print("=" * 80)
|
|
print("Example 1: Direct memory system usage")
|
|
print("=" * 80)
|
|
asyncio.run(example_memory_usage())
|
|
|
|
# Example 2: FastAPI extension
|
|
print("\n" + "=" * 80)
|
|
print("Example 2: FastAPI app extension")
|
|
print("=" * 80)
|
|
extended_app = example_fastapi_extension()
|
|
print("FastAPI app extended successfully")
|
|
print("To run: uvicorn library_usage_example:extended_app --reload")
|