mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2025-09-15 12:27:30 +00:00
1004 lines
19 KiB
Markdown
1004 lines
19 KiB
Markdown
# Universal AI Agent - API Reference
|
|
|
|
## Table of Contents
|
|
|
|
1. [Authentication](#authentication)
|
|
2. [Core Endpoints](#core-endpoints)
|
|
3. [AI Chat & Streaming](#ai-chat--streaming)
|
|
4. [RAG (Retrieval-Augmented Generation)](#rag-retrieval-augmented-generation)
|
|
5. [Multi-Agent Orchestration](#multi-agent-orchestration)
|
|
6. [Voice Integration](#voice-integration)
|
|
7. [Plugin System](#plugin-system)
|
|
8. [Analytics & Monitoring](#analytics--monitoring)
|
|
9. [WebSocket API](#websocket-api)
|
|
10. [Error Handling](#error-handling)
|
|
11. [Rate Limiting](#rate-limiting)
|
|
12. [SDK Examples](#sdk-examples)
|
|
|
|
## Authentication
|
|
|
|
### Bearer Token Authentication
|
|
|
|
All API endpoints (except `/` and `/health`) require authentication when `AUTH_TOKEN` is configured.
|
|
|
|
```http
|
|
Authorization: Bearer your_auth_token_here
|
|
```
|
|
|
|
### JWT Authentication
|
|
|
|
For advanced authentication, use JWT tokens:
|
|
|
|
```http
|
|
POST /auth/login
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"email": "user@example.com",
|
|
"password": "secure_password",
|
|
"mfaCode": "123456" // Optional, if MFA is enabled
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
GET /health
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"status": "healthy",
|
|
"uptime": 3600,
|
|
"memory": "512MB",
|
|
"connections": {
|
|
"redis": "connected",
|
|
"postgres": "connected"
|
|
},
|
|
"features": {
|
|
"rag": true,
|
|
"voice": true,
|
|
"plugins": true,
|
|
"multiAgent": true
|
|
}
|
|
}
|
|
```
|
|
|
|
### System Information
|
|
|
|
```http
|
|
GET /system/info
|
|
Authorization: Bearer your_token
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
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:**
|
|
|
|
```json
|
|
{
|
|
"response": "Hello! I'm your Universal AI Agent...",
|
|
"metadata": {
|
|
"model": "gpt-4",
|
|
"tokens": 150,
|
|
"responseTime": 1200,
|
|
"optimized": true
|
|
},
|
|
"conversationId": "conv_123"
|
|
}
|
|
```
|
|
|
|
### Streaming Chat
|
|
|
|
```http
|
|
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:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
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:**
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"ingested": 1,
|
|
"failed": 0,
|
|
"collection": "knowledge_base",
|
|
"processingTime": 1500
|
|
}
|
|
```
|
|
|
|
### Search Documents
|
|
|
|
```http
|
|
POST /rag/search
|
|
Authorization: Bearer your_token
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"query": "machine learning algorithms",
|
|
"collection": "knowledge_base",
|
|
"limit": 5,
|
|
"threshold": 0.7
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
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:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
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:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
GET /agents/task/{taskId}
|
|
Authorization: Bearer your_token
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
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:**
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"audioUrl": "/audio/tts_123.mp3",
|
|
"duration": 3.5,
|
|
"format": "mp3",
|
|
"size": 56789
|
|
}
|
|
```
|
|
|
|
### Voice Command Processing
|
|
|
|
```http
|
|
POST /voice/command
|
|
Authorization: Bearer your_token
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"command": "analyze the latest sales data",
|
|
"context": "dashboard",
|
|
"userId": "user123"
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
POST /voice/autopilot
|
|
Authorization: Bearer your_token
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"mode": "start", // "start", "stop", "status"
|
|
"context": "development",
|
|
"preferences": {
|
|
"verbosity": "medium",
|
|
"autoExecute": false
|
|
}
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
GET /plugins
|
|
Authorization: Bearer your_token
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
POST /plugins/{pluginName}/execute
|
|
Authorization: Bearer your_token
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"action": "scrape",
|
|
"parameters": {
|
|
"url": "https://example.com",
|
|
"selector": ".content",
|
|
"format": "text"
|
|
}
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
POST /plugins/install
|
|
Authorization: Bearer your_token
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"source": "npm",
|
|
"package": "@universal-ai/plugin-example",
|
|
"version": "1.0.0"
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"plugin": "example-plugin",
|
|
"version": "1.0.0",
|
|
"status": "installed",
|
|
"message": "Plugin installed successfully"
|
|
}
|
|
```
|
|
|
|
## Analytics & Monitoring
|
|
|
|
### Get Dashboard Data
|
|
|
|
```http
|
|
GET /analytics/dashboard
|
|
Authorization: Bearer your_token
|
|
```
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
GET /analytics/metrics
|
|
Authorization: Bearer your_token
|
|
```
|
|
|
|
**Query Parameters:**
|
|
|
|
- `timeRange`: `1h`, `24h`, `7d`, `30d` (default: `24h`)
|
|
- `metric`: `requests`, `performance`, `errors`, `users`
|
|
|
|
**Response:**
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
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
|
|
|
|
```javascript
|
|
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
|
|
|
|
```json
|
|
{
|
|
"type": "auth",
|
|
"token": "your_bearer_token"
|
|
}
|
|
```
|
|
|
|
#### Chat Streaming
|
|
|
|
```json
|
|
{
|
|
"type": "stream_chat",
|
|
"text": "Hello, how are you?",
|
|
"optimizePrompt": true,
|
|
"userId": "user123"
|
|
}
|
|
```
|
|
|
|
#### Voice Command
|
|
|
|
```json
|
|
{
|
|
"type": "voice_command",
|
|
"command": "analyze the data",
|
|
"context": "dashboard"
|
|
}
|
|
```
|
|
|
|
#### Plugin Execution
|
|
|
|
```json
|
|
{
|
|
"type": "plugin_execute",
|
|
"plugin": "web-scraper",
|
|
"action": "scrape",
|
|
"parameters": {
|
|
"url": "https://example.com"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Server Messages
|
|
|
|
#### Authentication Success
|
|
|
|
```json
|
|
{
|
|
"type": "auth_success",
|
|
"userId": "user123",
|
|
"sessionId": "session_456"
|
|
}
|
|
```
|
|
|
|
#### Chat Response
|
|
|
|
```json
|
|
{
|
|
"type": "chat_response",
|
|
"message": "Hello! How can I help you?",
|
|
"conversationId": "conv_123"
|
|
}
|
|
```
|
|
|
|
#### Stream Chunk
|
|
|
|
```json
|
|
{
|
|
"type": "stream_chunk",
|
|
"chunk": "Hello! I'm",
|
|
"index": 0,
|
|
"total": 10
|
|
}
|
|
```
|
|
|
|
#### Error
|
|
|
|
```json
|
|
{
|
|
"type": "error",
|
|
"message": "Authentication failed",
|
|
"code": "AUTH_ERROR"
|
|
}
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
### Standard Error Response
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```http
|
|
X-RateLimit-Limit: 100
|
|
X-RateLimit-Remaining: 95
|
|
X-RateLimit-Reset: 1704110400
|
|
X-RateLimit-Window: 60
|
|
```
|
|
|
|
### Rate Limit Exceeded Response
|
|
|
|
```json
|
|
{
|
|
"error": true,
|
|
"message": "Rate limit exceeded",
|
|
"code": "RATE_LIMITED",
|
|
"retryAfter": 45,
|
|
"limit": 100,
|
|
"window": 60
|
|
}
|
|
```
|
|
|
|
## SDK Examples
|
|
|
|
### JavaScript/Node.js
|
|
|
|
```javascript
|
|
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
|
|
|
|
```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
|
|
|
|
```bash
|
|
# 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](DEPLOYMENT_GUIDE.md) and [Plugin Development Guide](PLUGIN_DEVELOPMENT.md).
|