service и action.Получить список всех векторных хранилищ
curl -X GET "https://rag.kilip.ru/api.php?service=rag_manager&action=list"
<?php
$ch = curl_init('https://rag.kilip.ru/api.php?service=rag_manager&action=list');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
fetch('/api.php?service=rag_manager&action=list')
.then(res => res.json())
.then(data => console.log(data));
{
"success": true,
"data": [
{
"name": "neuron-docs",
"description": "Документация Neuron AI",
"document_count": 150,
"created_at": "2026-01-15 10:30:00",
"embedding_model": "text-embedding-ada-002",
"has_prompt": true
}
]
}
Добавить чанк в хранилище (пакетная загрузка)
| Параметр | Тип | Описание |
|---|---|---|
| store_name | string | Название хранилища (латиница, тире) |
| chunk_text | string | Текст чанка |
| chunk_index | int | Индекс чанка |
| total_chunks | int | Общее количество чанков |
| embedding_provider | string | gpttunnel / openrouter |
| embedding_model | string | Модель эмбеддингов |
| system_prompt | string | Системный промт для базы |
Получить системный промт хранилища
Сохранить системный промт для хранилища
curl -X POST "https://rag.kilip.ru/api.php" \
-H "Content-Type: application/json" \
-d '{
"service": "rag_manager",
"action": "save_prompt",
"store_name": "neuron-docs",
"prompt": "Ты эксперт по документации Neuron AI"
}'
<?php
$ch = curl_init('https://rag.kilip.ru/api.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'service' => 'rag_manager',
'action' => 'save_prompt',
'store_name' => 'neuron-docs',
'prompt' => 'Ты эксперт по документации Neuron AI'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
fetch('/api.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
service: 'rag_manager',
action: 'save_prompt',
store_name: 'neuron-docs',
prompt: 'Ты эксперт по документации Neuron AI'
})
})
.then(res => res.json())
.then(data => console.log(data));
Удалить хранилище
curl -X DELETE "https://rag.kilip.ru/api.php" \
-H "Content-Type: application/json" \
-d '{"service":"rag_manager","action":"delete","store_name":"neuron-docs"}'
<?php
$ch = curl_init('https://rag.kilip.ru/api.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'service' => 'rag_manager',
'action' => 'delete',
'store_name' => 'neuron-docs'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
fetch('/api.php', {
method: 'DELETE',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
service: 'rag_manager',
action: 'delete',
store_name: 'neuron-docs'
})
})
.then(res => res.json())
.then(data => console.log(data));
Отправить сообщение в RAG чат
| Параметр | Тип | Описание |
|---|---|---|
| store | string | Название хранилища |
| message | string | Текст сообщения |
| provider | string | gpttunnel / openrouter |
| model | string | ID модели |
| session_id | string | ID сессии (опционально) |
curl -X POST "https://rag.kilip.ru/api.php" \
-H "Content-Type: application/json" \
-d '{
"service": "rag",
"action": "chat",
"store": "neuron-docs",
"message": "Что такое RAG?",
"provider": "openrouter",
"model": "openai/gpt-4o"
}'
<?php
$ch = curl_init('https://rag.kilip.ru/api.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'service' => 'rag',
'action' => 'chat',
'store' => 'neuron-docs',
'message' => 'Что такое RAG?',
'provider' => 'openrouter',
'model' => 'openai/gpt-4o'
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
echo $data['response'] ?? $data['error'];
?>
fetch('/api.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
service: 'rag',
action: 'chat',
store: 'neuron-docs',
message: 'Что такое RAG?',
provider: 'openrouter',
model: 'openai/gpt-4o'
})
})
.then(res => res.json())
.then(data => console.log(data.response));
{
"success": true,
"response": "Ответ AI на основе базы знаний...",
"session_id": "abc123",
"store": "neuron-docs",
"provider": "openrouter",
"model": "openai/gpt-4o",
"usage": {
"prompt_tokens": 150,
"completion_tokens": 80,
"total_tokens": 230
},
"cost": {
"cost_total": 0.000488,
"cost_total_rub": 0.0439,
"currency": "USD"
},
"formatted_cost": "₽0.0439 (230 токенов)",
"response_time_ms": 1250
}
Получить список доступных AI провайдеров
{
"success": true,
"providers": {
"gpttunnel": {...},
"openrouter": {...}
}
}
Получить список моделей для указанного провайдера кэшируется 1 час
| Параметр | Тип | Описание |
|---|---|---|
| provider | string | gpttunnel, openrouter |
Отправить сообщение AI через указанного провайдера и модель
curl -X POST "https://rag.kilip.ru/api.php" \
-H "Content-Type: application/json" \
-d '{
"service": "ai",
"action": "chat",
"provider": "openrouter",
"model": "openai/gpt-4o",
"message": "Привет!",
"temperature": 0.7,
"max_tokens": 1000
}'
<?php
$ch = curl_init('https://rag.kilip.ru/api.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'service' => 'ai',
'action' => 'chat',
'provider' => 'openrouter',
'model' => 'openai/gpt-4o',
'message' => 'Привет!',
'temperature' => 0.7,
'max_tokens' => 1000
]));
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
echo "Ответ: " . ($data['response'] ?? $data['error']) . "\n";
echo "Стоимость: " . ($data['formatted_cost'] ?? 'N/A') . "\n";
?>
fetch('/api.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
service: 'ai',
action: 'chat',
provider: 'openrouter',
model: 'openai/gpt-4o',
message: 'Привет!',
temperature: 0.7,
max_tokens: 1000
})
})
.then(res => res.json())
.then(data => {
console.log('Ответ:', data.response);
console.log('Стоимость:', data.formatted_cost);
});
Потоковая передача ответа (Server-Sent Events)
curl -X POST "https://rag.kilip.ru/api.php" \
-H "Content-Type: application/json" \
-N \
-d '{
"service": "ai",
"action": "stream",
"provider": "gpttunnel",
"model": "deepseek-v3.2",
"message": "Расскажи шутку"
}'
async function streamChat() {
const response = await fetch('/api.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
service: 'ai',
action: 'stream',
provider: 'gpttunnel',
model: 'deepseek-v3.2',
message: 'Расскажи шутку'
})
});
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);
console.log(chunk);
}
}
streamChat();
{
"success": true,
"status": "ok",
"timestamp": "2026-01-15 10:30:00",
"services": ["rag_manager", "rag", "ai"],
"providers": ["gpttunnel", "openrouter"],
"php_version": "8.4.6",
"memory_limit": "2G"
}
200: Успешный ответ400: Ошибка в запросе500: Внутренняя ошибка сервераrefresh_models.