Markdown Converter
Agent skill for markdown-converter
ODAI (ODAI AI Assistant) is a comprehensive AI assistant platform built on FastAPI that orchestrates multiple specialized agents to handle diverse user requests. The system uses OpenAI's Agent framework with a hub-and-spoke architecture where a central orchestrator routes requests to specialized age
Sign in to like and favorite skills
ODAI (ODAI AI Assistant) is a comprehensive AI assistant platform built on FastAPI that orchestrates multiple specialized agents to handle diverse user requests. The system uses OpenAI's Agent framework with a hub-and-spoke architecture where a central orchestrator routes requests to specialized agents.
api.py): FastAPI application with WebSocket supportconnectors/orchestrator.py): Central agent that routes requestsconnectors/voice_orchestrator.py): Specialized for voice interactionsUser Request → WebSocket → Orchestrator → Specialized Agent(s) → Response → User
The orchestrator uses the H.A.N.D.O.F.F. decision framework:
connectors/gmail.py)Capabilities:
Key Functions:
fetch_google_email_inbox(): Retrieve inbox messagessearch_google_mail(): Search emails by querysend_google_email(): Send new emailsreply_to_google_email(): Reply to existing threadsAuthentication: Google OAuth2 with Gmail scope
connectors/plaid_agent.py)Capabilities:
Key Functions:
get_accounts_at_plaid(): Get account balances and detailsget_transactions_at_plaid(): Retrieve transaction historyEnvironment: Sandbox (development) and Production environments
connectors/google_search.py)Capabilities:
Key Functions:
search_google(): Execute search queries and return resultsIntegration: SerpAPI for Google search results
WeatherAPI Agent (
connectors/weatherapi.py):
AccuWeather Agent (
connectors/accuweather.py):
FlightAware Agent (
connectors/flightaware.py):
Flight Agent (
connectors/flights.py):
connectors/orchestrator.py)The central ODAI orchestrator uses gpt-4o and implements the O.D.A.R. loop:
Handoff Agents (35+ available):
ORCHESTRATOR_AGENT = Agent( name="ODAI", model="gpt-4o", handoffs=[ YELP_AGENT, COINMARKETCAP_AGENT, GMAIL_AGENT, PLAID_AGENT, GOOGLE_CALENDAR_AGENT, GOOGLE_DOCS_AGENT, # ... all 35+ agents ] )
Tool Call Tracking: The system tracks 100+ tool calls with user-friendly progress messages:
TOOL_CALLS = { "search_businesses_at_yelp": "Searching Yelp...", "get_stock_price_at_finnhub": "Getting Stock Price...", "send_google_email": "Sending Email...", # ... 100+ tool mappings }
connectors/voice_orchestrator.py)Specialized for real-time voice interactions using
RealtimeAgent:
config.py).env filesclass Settings(BaseSettings): openai_api_key: str production: bool # 25+ API keys for various services plaid_client_id: str google_client_id: str serpapi_api_key: str # ... additional service keys
firebase/models/): User, Chat, Tokens, Usage trackingWSS /chats/{chat_id}?token={auth_token}
Message Format:
{ "message": "User prompt text", "thread_id": "unique_thread_identifier" }
GET /: Health check and static file servingPOST /waitlist: Email collectionPOST /google_access_request: OAuth initiationGET /update_integrations: Refresh agent configurationsEach agent follows a consistent pattern:
@function_tool(is_enabled=enable_check_function) def agent_function(wrapper: RunContextWrapper[ChatContext], ...params) -> dict: """Tool description and usage instructions.""" # API call logic return ToolResponse( response_type="agent_specific_type", agent_name="Service Name", friendly_name="Human Readable Name", display_response=True, response=processed_data ).to_dict() AGENT = Agent( name="Agent Name", instructions=PROMPT_PREFIX + specific_instructions, handoffs=[related_agents], tools=[agent_function, other_tools] )
REALTIME_* variants)backend/ ├── api.py # Main FastAPI application ├── connectors/ # All agent implementations │ ├── orchestrator.py # Central orchestrator │ ├── voice_orchestrator.py # Voice-specific orchestrator │ ├── gmail.py # Email agent │ ├── plaid_agent.py # Financial services │ └── [35+ other agents] ├── services/ # Core business logic ├── websocket/ # Real-time communication ├── firebase/ # Database models ├── routers/ # API route handlers └── tests/ # Comprehensive test suite
Agents are automatically registered through:
integrations.yamlTOOL_CALLS dictionaryintegrations.yaml)Each agent has a standardized configuration:
- id: AgentID name: "Human Readable Name" description: "Detailed capability description" logo: "https://logo-url" prompts: - "Example usage prompt 1" - "Example usage prompt 2"
This configuration drives:
ODAI represents a sophisticated multi-agent AI system capable of handling diverse user needs through specialized, interconnected agents. The architecture prioritizes modularity, scalability, and user experience while maintaining security and performance standards. The system continues to evolve with new agent integrations and enhanced capabilities.
For development questions or agent integration requests, refer to the individual agent files and test suites for implementation details.