Use this file to discover all available pages before exploring further.
Xata provides PostgreSQL with built-in full-text search, vector search, analytics, and file storage, perfect for AI agents that need comprehensive data capabilities.
from praisonaiagents import Agentagent = Agent( name="Xata Agent", instructions="You are an AI assistant with built-in search and analytics.", db={"database_url": "postgresql://ws:key@us-east-1.sql.xata.sh:5432/db:main?sslmode=require"})# Conversations automatically indexed for searchresult = agent.start("I'm working on a machine learning project with customer data")print(result)
3
Test Search Capabilities
# Later conversation - search works across all messagesresult = agent.start("Find our previous discussion about machine learning")print(result) # Agent can search conversation history# Built-in analytics track conversation patternsresult = agent.start("What topics do we discuss most frequently?")print(result) # Xata analytics can power these insights
# Required - includes workspace and API keyexport XATA_DATABASE_URL="postgresql://workspace:api_key@us-east-1.sql.xata.sh:5432/db:main?sslmode=require"# Optionalexport OPENAI_API_KEY="sk-..."
import osfrom praisonai import ManagedAgent, LocalManagedConfig from praisonai.db.adapter import XataDBfrom praisonaiagents import Agent# Phase 1: Create agent with Xatadb = XataDB(database_url=os.environ["XATA_DATABASE_URL"])managed = ManagedAgent( provider="local", db=db, config=LocalManagedConfig( model="gpt-4o-mini", name="Xata Analytics Agent", system="You are an AI assistant with powerful search and analytics capabilities." ))agent = Agent(name="User", backend=managed)# Build rich conversation dataconversations = [ "I'm working on a customer segmentation ML model using clustering", "The model will help target marketing campaigns more effectively", "I need to analyze purchase history and demographic data", "Performance metrics show 85% accuracy on test dataset", "Next step is deploying to production with A/B testing"]for message in conversations: result = agent.run(message) print(f"Agent: {result[:100]}...")print(f"Session: {managed.session_id}")# Phase 2: Search and analyticssearch_queries = [ "What machine learning technique am I using?", "What's the accuracy of my model?", "What data sources do I need?", "Summarize my entire ML project"]for query in search_queries: result = agent.run(query) print(f"\nQuery: {query}") print(f"Answer: {result[:200]}...")# Phase 3: Save and resumesession_data = managed.save_ids()del agent, managed, db# Phase 4: Resume with search intactdb2 = XataDB(database_url=os.environ["XATA_DATABASE_URL"])managed2 = ManagedAgent(provider="local", db=db2)managed2.resume_session(session_data["session_id"])agent2 = Agent(name="User", backend=managed2)result = agent2.run("Search for everything related to accuracy and testing")print(f"\nResumed search: {result[:300]}...")
All conversation data is automatically indexed for search:
# Conversations are searchable by defaultagent = Agent( name="Searchable Agent", instructions="You can search our conversation history using natural language.", db=XataDB())# Search works across all messagesresult = agent.run("Find mentions of 'database performance' in our chats")print(result) # Returns relevant conversation context
# Analytics queries via Xata (pseudo-code)def get_conversation_analytics(session_id: str): # Use Xata's analytics API or custom aggregation analytics = { "total_messages": "SELECT COUNT(*) FROM praison_messages WHERE session_id = ?", "avg_response_time": "SELECT AVG(response_time) FROM praison_messages", "topic_distribution": "SELECT topics, COUNT(*) FROM praison_messages GROUP BY topics", "sentiment_analysis": "SELECT sentiment, COUNT(*) FROM praison_messages GROUP BY sentiment" } return analytics# Agent can provide analytics about itselfagent = Agent( name="Self-Aware Agent", instructions="You can analyze your own conversation patterns and provide insights.", db=XataDB())
# Store rich metadata for better searchagent = Agent( name="Structured Agent", instructions="You organize information with clear topics and context.", db=XataDB())# Conversations with good structure improve search resultsresult = agent.run("Topic: Machine Learning - Discussing model accuracy metrics")
Use Analytics for Insights
Leverage Xata’s analytics to improve agent performance:
# Archive old conversations to manage costsdef archive_old_conversations(days_old: int = 90): # Use Xata branching or backup features # Move old data to cold storage pass# Implement in agent lifecycleagent = Agent( name="Lifecycle Agent", instructions="You manage conversation history efficiently.", db=XataDB())
Leverage Multi-Modal Data
Store different data types together:
# Agent that handles text, files, and structured dataagent = Agent( name="Multi-Modal Agent", instructions=""" You work with: - Text conversations (PostgreSQL) - Document files (Xata storage) - Search across both - Analytics on usage patterns """, db=XataDB())
# Correct format includes workspace, API key, region, database, and branchexport XATA_DATABASE_URL="postgresql://workspace:apikey@region.sql.xata.sh:5432/database:branch?sslmode=require"
# Switch between development and production branchesdev_db = XataDB(database_url="postgresql://ws:key@region.sql.xata.sh:5432/db:dev")prod_db = XataDB(database_url="postgresql://ws:key@region.sql.xata.sh:5432/db:main")dev_agent = Agent(name="Dev Agent", db=dev_db)prod_agent = Agent(name="Prod Agent", db=prod_db)