import asyncio
from zg_ai_sdk import create_agent
async def search_user_data(agent, search_term):
"""Search across user-related data"""
# Define keys to search
user_keys = [
'user_profile',
'user_preferences',
'user_settings',
'user_history',
'user_projects'
]
results = []
for key in user_keys:
data = await agent.recall(key)
if data and search_in_content(data, search_term):
results.append({
'key': key,
'data': data,
'relevance': calculate_relevance(data, search_term)
})
# Sort by relevance
results.sort(key=lambda x: x['relevance'], reverse=True)
return results
def search_in_content(data, term):
"""Check if term exists in data"""
term_lower = term.lower()
if isinstance(data, str):
return term_lower in data.lower()
elif isinstance(data, dict):
for key, value in data.items():
if (term_lower in str(key).lower() or
search_in_content(value, term)):
return True
elif isinstance(data, list):
return any(search_in_content(item, term) for item in data)
return False
def calculate_relevance(data, term):
"""Simple relevance scoring"""
if isinstance(data, str):
return data.lower().count(term.lower())
elif isinstance(data, dict):
return sum(calculate_relevance(value, term) for value in data.values())
elif isinstance(data, list):
return sum(calculate_relevance(item, term) for item in data)
return 0
async def main():
agent = await create_agent({
'name': 'Search Assistant',
'provider_address': '0xf07240Efa67755B5311bc75784a061eDB47165Dd',
'memory_bucket': 'search-demo',
'private_key': 'your-private-key'
})
# Store sample data
await agent.remember('user_profile', {
'name': 'Alice Johnson',
'skills': ['Python', 'Machine Learning', 'Data Science'],
'bio': 'Passionate about AI and Python development'
})
await agent.remember('user_projects', [
{'name': 'ML Pipeline', 'tech': 'Python, TensorFlow'},
{'name': 'Web Scraper', 'tech': 'Python, BeautifulSoup'},
{'name': 'Data Viz', 'tech': 'Python, Matplotlib'}
])
# Search for Python-related content
results = await search_user_data(agent, 'Python')
print("Search results for 'Python':")
for result in results:
print(f"Key: {result['key']}, Relevance: {result['relevance']}")
print(f"Data: {result['data']}")
print("---")
asyncio.run(main())