system-prompts-and-models-o.../Universal_AI_Agent/docs/API_REFERENCE.md
dopeuni444 ccdc080dc4 v
2025-08-08 10:13:06 +04:00

19 KiB

Universal AI Agent - API Reference

Table of Contents

  1. Authentication
  2. Core Endpoints
  3. AI Chat & Streaming
  4. RAG (Retrieval-Augmented Generation)
  5. Multi-Agent Orchestration
  6. Voice Integration
  7. Plugin System
  8. Analytics & Monitoring
  9. WebSocket API
  10. Error Handling
  11. Rate Limiting
  12. SDK Examples

Authentication

Bearer Token Authentication

All API endpoints (except / and /health) require authentication when AUTH_TOKEN is configured.

Authorization: Bearer your_auth_token_here

JWT Authentication

For advanced authentication, use JWT tokens:

POST /auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "secure_password",
  "mfaCode": "123456" // Optional, if MFA is enabled
}

Response:

{
  "success": true,
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "sessionId": "session_id_here",
  "user": {
    "id": "user_id",
    "email": "user@example.com",
    "roles": ["user"],
    "mfaEnabled": false
  }
}

Core Endpoints

Health Check

GET /health

Response:

{
  "status": "healthy",
  "uptime": 3600,
  "memory": "512MB",
  "connections": {
    "redis": "connected",
    "postgres": "connected"
  },
  "features": {
    "rag": true,
    "voice": true,
    "plugins": true,
    "multiAgent": true
  }
}

System Information

GET /system/info
Authorization: Bearer your_token

Response:

{
  "version": "1.0.0",
  "nodeVersion": "18.17.0",
  "platform": "linux",
  "architecture": "x64",
  "environment": "production",
  "features": ["rag", "voice", "plugins", "multi-agent"],
  "limits": {
    "maxRequestSize": "50MB",
    "rateLimit": {
      "window": 60000,
      "max": 100
    }
  }
}

AI Chat & Streaming

Standard Chat

POST /chat
Authorization: Bearer your_token
Content-Type: application/json

{
  "message": "Hello, how can you help me?",
  "optimizePrompt": true,
  "context": "optional context",
  "userId": "user123"
}

Response:

{
  "response": "Hello! I'm your Universal AI Agent...",
  "metadata": {
    "model": "gpt-4",
    "tokens": 150,
    "responseTime": 1200,
    "optimized": true
  },
  "conversationId": "conv_123"
}

Streaming Chat

GET /stream?message=Hello&optimizePrompt=true
Authorization: Bearer your_token
Accept: text/event-stream

Server-Sent Events Response:

data: {"type": "start", "conversationId": "conv_123"}

data: {"type": "chunk", "content": "Hello! I'm", "index": 0}

data: {"type": "chunk", "content": " your Universal", "index": 1}

data: {"type": "end", "metadata": {"tokens": 150, "model": "gpt-4"}}


### Conversation History

```http
GET /conversations
Authorization: Bearer your_token

Query Parameters:

  • limit: Number of conversations (default: 50)
  • offset: Pagination offset (default: 0)
  • userId: Filter by user ID

Response:

{
  "conversations": [
    {
      "id": "conv_123",
      "userId": "user123",
      "messages": [
        {
          "role": "user",
          "content": "Hello",
          "timestamp": "2024-01-01T12:00:00Z"
        },
        {
          "role": "assistant",
          "content": "Hello! How can I help?",
          "timestamp": "2024-01-01T12:00:01Z"
        }
      ],
      "createdAt": "2024-01-01T12:00:00Z",
      "updatedAt": "2024-01-01T12:00:01Z"
    }
  ],
  "total": 1,
  "hasMore": false
}

RAG (Retrieval-Augmented Generation)

Ingest Documents

POST /rag/ingest
Authorization: Bearer your_token
Content-Type: application/json

{
  "documents": [
    {
      "id": "doc1",
      "content": "This is a sample document content...",
      "metadata": {
        "title": "Sample Document",
        "author": "John Doe",
        "category": "technical"
      }
    }
  ],
  "collection": "knowledge_base"
}

Response:

{
  "success": true,
  "ingested": 1,
  "failed": 0,
  "collection": "knowledge_base",
  "processingTime": 1500
}

Search Documents

POST /rag/search
Authorization: Bearer your_token
Content-Type: application/json

{
  "query": "machine learning algorithms",
  "collection": "knowledge_base",
  "limit": 5,
  "threshold": 0.7
}

Response:

{
  "results": [
    {
      "id": "doc1",
      "content": "Machine learning algorithms are...",
      "score": 0.95,
      "metadata": {
        "title": "ML Guide",
        "category": "technical"
      }
    }
  ],
  "query": "machine learning algorithms",
  "totalResults": 1,
  "searchTime": 50
}

RAG-Enhanced Answer

POST /rag/answer
Authorization: Bearer your_token
Content-Type: application/json

{
  "question": "What are the best machine learning algorithms?",
  "collection": "knowledge_base",
  "maxContext": 3,
  "includeContext": true
}

Response:

{
  "answer": "Based on the knowledge base, the best machine learning algorithms include...",
  "sources": [
    {
      "id": "doc1",
      "title": "ML Guide",
      "relevanceScore": 0.95
    }
  ],
  "context": [
    {
      "content": "Machine learning algorithms are...",
      "source": "doc1"
    }
  ],
  "confidence": 0.92
}

Multi-Agent Orchestration

Execute Multi-Agent Task

POST /agents/execute
Authorization: Bearer your_token
Content-Type: application/json

{
  "task": "Analyze the performance of our web application and suggest optimizations",
  "agents": ["planner", "critic", "executor"],
  "parallel": false,
  "maxIterations": 3
}

Response:

{
  "success": true,
  "taskId": "task_123",
  "results": [
    {
      "agent": "planner",
      "role": "Task Planner",
      "response": "I'll break down the web app performance analysis into...",
      "executionTime": 2000
    },
    {
      "agent": "critic",
      "role": "Critical Reviewer",
      "response": "The analysis approach looks comprehensive, but consider...",
      "executionTime": 1800
    },
    {
      "agent": "executor",
      "role": "Solution Executor",
      "response": "Based on the plan and critique, here are the optimizations...",
      "executionTime": 2200
    }
  ],
  "finalSynthesis": "Comprehensive analysis complete. Key recommendations: ...",
  "totalExecutionTime": 6000,
  "confidence": 0.89
}

Get Task Status

GET /agents/task/{taskId}
Authorization: Bearer your_token

Response:

{
  "taskId": "task_123",
  "status": "completed",
  "progress": 100,
  "currentAgent": null,
  "results": [...],
  "startTime": "2024-01-01T12:00:00Z",
  "endTime": "2024-01-01T12:00:06Z"
}

Voice Integration

Text-to-Speech

POST /voice/tts
Authorization: Bearer your_token
Content-Type: application/json

{
  "text": "Hello, this is your AI assistant speaking.",
  "voice": "neural",
  "language": "en-US",
  "speed": 1.0,
  "format": "mp3"
}

Response:

{
  "success": true,
  "audioUrl": "/audio/tts_123.mp3",
  "duration": 3.5,
  "format": "mp3",
  "size": 56789
}

Voice Command Processing

POST /voice/command
Authorization: Bearer your_token
Content-Type: application/json

{
  "command": "analyze the latest sales data",
  "context": "dashboard",
  "userId": "user123"
}

Response:

{
  "success": true,
  "command": "analyze the latest sales data",
  "intent": "data_analysis",
  "entities": ["sales data"],
  "action": "execute_analysis",
  "response": "I'll analyze the latest sales data for you...",
  "audioResponse": "/audio/response_123.mp3"
}

Autopilot Mode

POST /voice/autopilot
Authorization: Bearer your_token
Content-Type: application/json

{
  "mode": "start", // "start", "stop", "status"
  "context": "development",
  "preferences": {
    "verbosity": "medium",
    "autoExecute": false
  }
}

Response:

{
  "success": true,
  "mode": "active",
  "sessionId": "autopilot_123",
  "status": "Autopilot mode activated. I'm ready to assist you.",
  "capabilities": ["voice_commands", "proactive_suggestions", "context_awareness"]
}

Plugin System

List Available Plugins

GET /plugins
Authorization: Bearer your_token

Response:

{
  "plugins": [
    {
      "name": "web-scraper",
      "version": "1.0.0",
      "description": "Advanced web scraping and content extraction",
      "category": "utility",
      "status": "active",
      "permissions": ["web_access"]
    },
    {
      "name": "database-analyzer",
      "version": "1.0.0",
      "description": "Database schema and performance analysis",
      "category": "analysis",
      "status": "active",
      "permissions": ["database_access"]
    }
  ],
  "total": 2
}

Execute Plugin

POST /plugins/{pluginName}/execute
Authorization: Bearer your_token
Content-Type: application/json

{
  "action": "scrape",
  "parameters": {
    "url": "https://example.com",
    "selector": ".content",
    "format": "text"
  }
}

Response:

{
  "success": true,
  "plugin": "web-scraper",
  "action": "scrape",
  "result": {
    "content": "Scraped content here...",
    "metadata": {
      "title": "Example Page",
      "url": "https://example.com",
      "scrapedAt": "2024-01-01T12:00:00Z"
    }
  },
  "executionTime": 2500
}

Install Plugin

POST /plugins/install
Authorization: Bearer your_token
Content-Type: application/json

{
  "source": "npm",
  "package": "@universal-ai/plugin-example",
  "version": "1.0.0"
}

Response:

{
  "success": true,
  "plugin": "example-plugin",
  "version": "1.0.0",
  "status": "installed",
  "message": "Plugin installed successfully"
}

Analytics & Monitoring

Get Dashboard Data

GET /analytics/dashboard
Authorization: Bearer your_token

Response:

{
  "overview": {
    "uptime": 86400,
    "totalRequests": 1500,
    "successRate": "98.5",
    "averageResponseTime": 850,
    "activeUsers": 25,
    "healthScore": 95
  },
  "requests": {
    "total": 1500,
    "successful": 1478,
    "failed": 22,
    "byHour": [10, 15, 20, ...],
    "topEndpoints": [
      {
        "endpoint": "POST /chat",
        "requests": 800,
        "averageTime": 1200,
        "errorRate": 1.2
      }
    ]
  },
  "ai": {
    "totalTokens": 150000,
    "totalCost": 25.50,
    "averageResponseTime": 1100,
    "topModels": [
      {
        "model": "gpt-4",
        "requests": 600,
        "tokens": 90000,
        "cost": 18.00
      }
    ]
  }
}

Get System Metrics

GET /analytics/metrics
Authorization: Bearer your_token

Query Parameters:

  • timeRange: 1h, 24h, 7d, 30d (default: 24h)
  • metric: requests, performance, errors, users

Response:

{
  "timeRange": "24h",
  "metrics": {
    "requests": {
      "timestamps": ["2024-01-01T00:00:00Z", ...],
      "values": [10, 15, 20, ...]
    },
    "responseTime": {
      "timestamps": ["2024-01-01T00:00:00Z", ...],
      "values": [850, 920, 780, ...]
    }
  }
}

Export Analytics Data

GET /analytics/export
Authorization: Bearer your_token

Query Parameters:

  • format: json, csv (default: json)
  • timeRange: 1h, 24h, 7d, 30d (default: 24h)

Response: File download with analytics data

WebSocket API

Connection

const ws = new WebSocket('wss://your-domain.com');

// Authenticate after connection
ws.onopen = () => {
  ws.send(JSON.stringify({
    type: 'auth',
    token: 'your_bearer_token'
  }));
};

Message Types

Authentication

{
  "type": "auth",
  "token": "your_bearer_token"
}

Chat Streaming

{
  "type": "stream_chat",
  "text": "Hello, how are you?",
  "optimizePrompt": true,
  "userId": "user123"
}

Voice Command

{
  "type": "voice_command",
  "command": "analyze the data",
  "context": "dashboard"
}

Plugin Execution

{
  "type": "plugin_execute",
  "plugin": "web-scraper",
  "action": "scrape",
  "parameters": {
    "url": "https://example.com"
  }
}

Server Messages

Authentication Success

{
  "type": "auth_success",
  "userId": "user123",
  "sessionId": "session_456"
}

Chat Response

{
  "type": "chat_response",
  "message": "Hello! How can I help you?",
  "conversationId": "conv_123"
}

Stream Chunk

{
  "type": "stream_chunk",
  "chunk": "Hello! I'm",
  "index": 0,
  "total": 10
}

Error

{
  "type": "error",
  "message": "Authentication failed",
  "code": "AUTH_ERROR"
}

Error Handling

Standard Error Response

{
  "error": true,
  "message": "Detailed error message",
  "code": "ERROR_CODE",
  "timestamp": "2024-01-01T12:00:00Z",
  "requestId": "req_123"
}

Error Codes

Code Description HTTP Status
AUTH_REQUIRED Authentication required 401
AUTH_INVALID Invalid authentication token 401
FORBIDDEN Insufficient permissions 403
NOT_FOUND Resource not found 404
RATE_LIMITED Rate limit exceeded 429
VALIDATION_ERROR Request validation failed 400
INTERNAL_ERROR Internal server error 500
SERVICE_UNAVAILABLE External service unavailable 503

Rate Limiting

Default Limits

  • Window: 60 seconds
  • Max Requests: 100 per window per IP
  • Burst: 10 requests per second

Rate Limit Headers

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704110400
X-RateLimit-Window: 60

Rate Limit Exceeded Response

{
  "error": true,
  "message": "Rate limit exceeded",
  "code": "RATE_LIMITED",
  "retryAfter": 45,
  "limit": 100,
  "window": 60
}

SDK Examples

JavaScript/Node.js

class UniversalAIClient {
  constructor(baseUrl, token) {
    this.baseUrl = baseUrl;
    this.token = token;
  }

  async chat(message, options = {}) {
    const response = await fetch(`${this.baseUrl}/chat`, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${this.token}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        message,
        ...options
      })
    });
    
    return response.json();
  }

  async streamChat(message, onChunk) {
    const response = await fetch(
      `${this.baseUrl}/stream?message=${encodeURIComponent(message)}`,
      {
        headers: {
          'Authorization': `Bearer ${this.token}`,
          'Accept': 'text/event-stream'
        }
      }
    );

    const reader = response.body.getReader();
    const decoder = new TextDecoder();

    while (true) {
      const { done, value } = await reader.read();
      if (done) break;

      const chunk = decoder.decode(value);
      const lines = chunk.split('\n');
      
      for (const line of lines) {
        if (line.startsWith('data: ')) {
          const data = JSON.parse(line.slice(6));
          onChunk(data);
        }
      }
    }
  }
}

// Usage
const client = new UniversalAIClient('https://your-domain.com', 'your_token');

// Standard chat
const response = await client.chat('Hello, how are you?');
console.log(response.response);

// Streaming chat
await client.streamChat('Tell me a story', (chunk) => {
  if (chunk.type === 'chunk') {
    process.stdout.write(chunk.content);
  }
});

Python

import requests
import json
from typing import Optional, Dict, Any

class UniversalAIClient:
    def __init__(self, base_url: str, token: str):
        self.base_url = base_url.rstrip('/')
        self.token = token
        self.session = requests.Session()
        self.session.headers.update({
            'Authorization': f'Bearer {token}',
            'Content-Type': 'application/json'
        })

    def chat(self, message: str, **kwargs) -> Dict[str, Any]:
        """Send a chat message and get response"""
        response = self.session.post(
            f'{self.base_url}/chat',
            json={'message': message, **kwargs}
        )
        response.raise_for_status()
        return response.json()

    def rag_ingest(self, documents: list, collection: str = 'default') -> Dict[str, Any]:
        """Ingest documents into RAG system"""
        response = self.session.post(
            f'{self.base_url}/rag/ingest',
            json={'documents': documents, 'collection': collection}
        )
        response.raise_for_status()
        return response.json()

    def rag_search(self, query: str, collection: str = 'default', limit: int = 5) -> Dict[str, Any]:
        """Search documents in RAG system"""
        response = self.session.post(
            f'{self.base_url}/rag/search',
            json={'query': query, 'collection': collection, 'limit': limit}
        )
        response.raise_for_status()
        return response.json()

    def execute_plugin(self, plugin_name: str, action: str, parameters: Dict[str, Any]) -> Dict[str, Any]:
        """Execute a plugin action"""
        response = self.session.post(
            f'{self.base_url}/plugins/{plugin_name}/execute',
            json={'action': action, 'parameters': parameters}
        )
        response.raise_for_status()
        return response.json()

# Usage
client = UniversalAIClient('https://your-domain.com', 'your_token')

# Chat
response = client.chat('Hello, how are you?')
print(response['response'])

# RAG
documents = [
    {
        'id': 'doc1',
        'content': 'This is a sample document...',
        'metadata': {'title': 'Sample Doc'}
    }
]
client.rag_ingest(documents)

search_results = client.rag_search('sample document')
print(search_results['results'])

cURL Examples

# Chat
curl -X POST https://your-domain.com/chat \
  -H "Authorization: Bearer your_token" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello, how are you?"}'

# RAG Search
curl -X POST https://your-domain.com/rag/search \
  -H "Authorization: Bearer your_token" \
  -H "Content-Type: application/json" \
  -d '{"query": "machine learning", "limit": 5}'

# Plugin Execution
curl -X POST https://your-domain.com/plugins/web-scraper/execute \
  -H "Authorization: Bearer your_token" \
  -H "Content-Type: application/json" \
  -d '{"action": "scrape", "parameters": {"url": "https://example.com"}}'

# Analytics
curl -X GET https://your-domain.com/analytics/dashboard \
  -H "Authorization: Bearer your_token"

For more examples and detailed integration guides, see the Deployment Guide and Plugin Development Guide.