This practical guide shows you how to effectively use personal connectors in your AI assistants and applications.
import os
from freddy import Freddy
# Initialize client
freddy = Freddy(api_key=os.getenv("FREDDY_API_KEY"))
# Create a Notion connector configuration
config = freddy.personal_connectors.configurations.create(
connector_type="notion",
name="My Notion Workspace",
credentials={
"api_key": os.getenv("NOTION_API_KEY"),
"workspace_id": "your-workspace-id"
},
settings={
"allowed_pages": ["specific-page-id"], # Optional: restrict access
"read_only": False
}
)# Create assistant that can use the connector
assistant = freddy.assistants.create(
name="Notion Assistant",
instructions="""You have access to my Notion workspace. You can:
- Search for information in my pages and databases
- Create new pages when asked
- Update existing content
- Organize and categorize information
Always be helpful and ask for clarification when needed.""",
model="gpt-4"
# Connector functions are automatically available
)
# The assistant can now call Notion functions automatically# Create a thread
thread = freddy.threads.create()
# Ask the assistant to use the connector
message = freddy.threads.messages.create(
thread_id=thread.id,
role="user",
content="Can you search my Notion workspace for project ideas about AI?"
)
# Run the assistant
run = freddy.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
# The assistant will automatically use the Notion connector# Research assistant with multiple connectors
research_assistant = freddy.assistants.create(
name="Research Assistant",
instructions="""You are a research assistant with access to:
📚 Knowledge Sources:
- My Notion workspace (research notes, articles, projects)
- Web search for current information
- Google Drive documents
🔧 Capabilities:
- Search and summarize research materials
- Cross-reference information across sources
- Organize findings in structured formats
- Create research summaries and reports
📋 Process:
1. Understand the research topic
2. Search relevant sources using available tools
3. Synthesize information from multiple sources
4. Present findings in a clear, organized manner""",
model="gpt-4"
)# Project management assistant
project_assistant = freddy.assistants.create(
name="Project Manager",
instructions="""You help manage projects using my connected tools:
📅 Calendar Integration:
- Check Google Calendar for scheduling conflicts
- Schedule meetings and deadlines
- Send calendar invites
📝 Task Management:
- Create and update tasks in Notion
- Track project progress
- Assign tasks to team members
💬 Communication:
- Send Slack messages for updates
- Email stakeholders when needed
🔄 Workflow:
1. Review current project status
2. Identify next steps and dependencies
3. Coordinate with team members
4. Update project documentation""",
model="gpt-4"
)# Finance assistant with banking and budgeting connectors
finance_assistant = freddy.assistants.create(
name="Finance Assistant",
instructions="""You help manage personal finances with access to:
🏦 Banking Data:
- Account balances and transactions
- Spending categorization
- Budget tracking
💳 Credit Cards:
- Transaction history
- Payment due dates
- Rewards and cashback
📊 Investment Tracking:
- Portfolio performance
- Investment recommendations
- Market research
⚠️ Privacy Notice:
- All financial data is encrypted and secure
- No permanent storage of sensitive information
- Only process data as requested
💡 Capabilities:
- Analyze spending patterns
- Create budget recommendations
- Track investment performance
- Alert on unusual financial activity""",
model="gpt-4"
)Design assistants that use multiple connectors in sequence:
# Example: Content creation workflow
content_assistant = freddy.assistants.create(
name="Content Creator",
instructions="""You create content using multiple tools:
1. 📚 Research Phase:
- Search Notion for existing content and ideas
- Web search for current trends and information
- Review Google Drive for brand guidelines
2. ✍️ Creation Phase:
- Generate draft content based on research
- Check for consistency with brand voice
- Ensure content is original and engaging
3. 📢 Distribution Phase:
- Share on appropriate platforms (Slack, email, etc.)
- Schedule social media posts if needed
- Archive final content in Notion
Always maintain content quality and brand consistency.""",
model="gpt-4"
)Set up assistants that respond to external events:
# Example: Email processing assistant
email_assistant = freddy.assistants.create(
name="Email Processor",
instructions="""You process incoming emails automatically:
📧 Email Analysis:
- Read new emails in Gmail
- Categorize by type (inquiry, complaint, request, etc.)
- Extract key information and action items
🎯 Automated Actions:
- Respond to simple inquiries automatically
- Create tasks in project management tools
- Forward important emails to team members
- Archive spam and irrelevant messages
📊 Reporting:
- Track email processing statistics
- Generate weekly summary reports
- Identify trends in customer inquiries
⚡ Speed & Accuracy:
- Process emails within minutes of receipt
- Maintain high accuracy in categorization
- Learn from corrections and feedback""",
model="gpt-4"
)# Design assistants with comprehensive error handling
resilient_assistant = freddy.assistants.create(
name="Resilient Assistant",
instructions="""You are designed to handle errors gracefully:
🔄 Retry Logic:
- If a connector fails, try alternative approaches
- Retry failed operations with exponential backoff
- Use different connectors if primary ones fail
🛠️ Fallback Strategies:
- Provide alternative solutions when connectors are unavailable
- Use cached data when possible
- Suggest manual workarounds for critical tasks
📞 User Communication:
- Inform users when issues occur
- Explain what went wrong and what's being done
- Provide clear next steps and timelines
🔍 Debugging:
- Log detailed error information for analysis
- Identify patterns in failures
- Suggest improvements to prevent future issues
Always prioritize reliability and user experience.""",
model="gpt-4"
)# Monitor connector health and performance
def monitor_connectors():
"""Monitor connector performance and health."""
# Check connector availability
for config in freddy.personal_connectors.configurations.list().data:
health = freddy.personal_connectors.check_health(config.id)
if not health.healthy:
print(f"Connector {config.name} is unhealthy: {health.issues}")
# Attempt to fix common issues
if "authentication" in health.issues:
print("Attempting to refresh authentication...")
freddy.personal_connectors.refresh_auth(config.id)
# Monitor usage patterns
usage = freddy.personal_connectors.get_usage()
print(f"Total monthly calls: {usage.total_calls}")
print(f"Data processed: {usage.data_mb} MB")# Implement security best practices
secure_assistant = freddy.assistants.create(
name="Secure Assistant",
instructions="""You handle sensitive data with utmost care:
🔐 Data Security:
- Never store sensitive information permanently
- Encrypt all data in transit and processing
- Use secure authentication methods only
- Follow principle of least privilege
🤐 Privacy Protection:
- Only access data when explicitly requested
- Minimize data exposure in responses
- Respect user privacy preferences
- Comply with data protection regulations
🚨 Incident Response:
- Immediately report any data breaches or security issues
- Follow established security protocols
- Cooperate with security investigations
- Learn from incidents to improve security
Always prioritize security and privacy above all else.""",
model="gpt-4"
)# Optimize connector usage for performance
efficient_assistant = freddy.assistants.create(
name="Efficient Assistant",
instructions="""You optimize performance and costs:
⚡ Performance Optimization:
- Cache frequently accessed data
- Batch multiple operations when possible
- Use pagination for large datasets
- Minimize unnecessary API calls
💰 Cost Management:
- Choose the most efficient connector for each task
- Monitor usage and stay within budget limits
- Use preview/batch modes when available
- Implement smart caching strategies
📈 Scalability:
- Design workflows that scale with usage
- Handle rate limits gracefully
- Distribute workload across multiple connectors
- Monitor performance metrics continuously
Balance speed, cost, and reliability in all operations.""",
model="gpt-4"
)# Test connector integrations thoroughly
def test_connector_integration():
"""Test all connector functions."""
test_cases = [
{
"name": "Notion Search",
"function": "notion_search",
"params": {"query": "test query"},
"expected": "search results"
},
{
"name": "Gmail Send",
"function": "gmail_send_email",
"params": {"to": "test@example.com", "subject": "Test"},
"expected": "email sent confirmation"
}
]
for test_case in test_cases:
try:
result = call_connector_function(
test_case["function"],
test_case["params"]
)
if validate_result(result, test_case["expected"]):
print(f"✅ {test_case['name']} passed")
else:
print(f"❌ {test_case['name']} failed validation")
except Exception as e:
print(f"❌ {test_case['name']} failed: {e}")- Test all connector functions thoroughly
- Verify authentication and permissions
- Set up monitoring and alerting
- Configure error handling and fallbacks
- Document connector usage and limitations
- Train users on assistant capabilities
- Monitor initial usage and performance
- Address any issues or user feedback
- Optimize based on real-world usage patterns
- Update documentation as needed
- Plan for future enhancements
- Connectors Overview - Available connector types
- Authentication Guide - Set up connectors
- Billing Information - Cost management
- API Reference - Technical docs
- Technical Issues: support@aitronos.com
- Billing Questions: billing@aitronos.com
- Feature Requests: feedback@aitronos.com
- Documentation: docs@aitronos.com
For urgent issues, use the live chat in Freddy Hub.