name: llm_ai
service_id: 163
service_display_name: LLM
service_short_name: llmAi
service_man: '## 1. Общая информация
LLMaaS (Large Language Model as a Service) — это сервис для доступа к языковым моделям через OpenAI-совместимое API.
Платформа позволяет создавать организации (тенанты), команды, выпускать и управлять API-ключами, устанавливать лимиты на использование.
---
## Доступные операции
- **create** — Создание организации в LLMaaS
- **delete** — Удаление организации
- **create_team** — Создание команды внутри организации
- **modify_team** — Редактирование команды (модели, RPM, TPM)
- **delete_team** — Удаление команды
- **create_secrets** — Создание API-ключа
- **update_secrets** — Обновление параметров API-ключа
- **delete_secrets** — Удаление API-ключа
---
## 2. Параметры создания организации
Ниже перечислены параметры, которые необходимо указать при создании организации:
* **Платформа для развертывания**
Выбирается автоматически, изменять не нужно.
* **Период бюджета**
Срок жизни организации в днях.
Пример: `30`
---
## 3. Параметры создания команды
* **Имя команды**
Уникальное имя команды в рамках организации.
Пример: `production`
* **Модель**
Название модели, доступной для команды.
Пример: `gpt-oss-120b`
* **Лимит запросов в минуту (RPM)**
Максимальное количество запросов к API в минуту.
Пример: `60`
* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + исходящих) в минуту.
Пример: `100000`
---
## 4. Параметры редактирования команды
Для существующей команды можно изменить:
* **Модель**
Новая модель для команды.
Пример: `gpt-oss-20b`
* **Лимит запросов в минуту (RPM)**
Новое значение RPM.
Пример: `120`
* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`
---
## 5. Параметры создания API-ключа
Ниже перечислены параметры, которые необходимо указать при создании API-ключа:
* **Имя ключа**
Уникальное имя ключа в рамках организации.
Пример: `prod-key`
* **Команда**
Имя команды для привязки ключа. Если не указано — ключ привязывается к команде `main`.
Пример: `production`
* **Модель**
Название модели, доступной для данного ключа.
Пример: `gpt-oss-120b`
* **Лимит запросов в минуту (RPM)**
Максимальное количество запросов к API в минуту.
Пример: `60`
* **Лимит токенов в минуту (TPM)**
Максимальное количество токенов (входящих + исходящих) в минуту.
Пример: `100000`
**Важно:** Лимиты API-ключа не могут превышать лимиты команды, к которой он привязан.
При превышении операция будет отклонена с ошибкой.
Перед созданием ключа убедитесь, что `RPM <= team.RPM` и `TPM <= team.TPM`.
---
## 6. Параметры обновления API-ключа
Для уже существующего ключа можно изменить параметры. Все параметры являются опциональными:
* **Имя ключа**
Имя обновляемого ключа.
Пример: `prod-key`
* **Модель**
Новое название модели.
Пример: `gpt-oss-20b`
* **Лимит запросов в минуту (RPM)**
Новое значение RPM.
Пример: `120`
* **Лимит токенов в минуту (TPM)**
Новое значение TPM.
Пример: `200000`
**Важно:** При обновлении лимитов API-ключа новые значения не могут превышать лимиты команды.
Если указать значения выше командных, операция завершится ошибкой.
Указывайте `RPM <= team.RPM` и `TPM <= team.TPM`.
Команда определяется автоматически по стейту услуги — изменить привязку к другой команде через эту операцию нельзя.
---
## 7. Параметры удаления API-ключа
* **Команда**
Имя команды, к которой привязан ключ.
Пример: `production`
* **Имя ключа**
Имя удаляемого ключа.
Пример: `prod-key`
---
## 8. Параметры удаления команды
* **Имя команды**
Имя удаляемой команды.
Пример: `production`
---
## 9. Параметры удаления организации
Удаление организации не требует дополнительных параметров — удаляется вся организация со всеми командами и ключами.
---
## 10. Выходные параметры
После успешного создания организации платформа возвращает:
* **connectionUrl**
URL для доступа к inference API (OpenAI-совместимый).
Пример: `https://api.aillm.ru`
---
## 12. Пример использования API
После получения API-ключа клиент может обращаться к LLMaaS напрямую:
**Запрос к chat completions:**
```bash
curl https://api.aillm.ru/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d ''{
"model": "gpt-oss-120b",
"messages": [
{"role": "user", "content": "Привет!"}
]
}''
```
**Получение списка доступных моделей:**
```bash
curl https://api.aillm.ru/v1/models \
-H "Authorization: Bearer sk-..."
```
'
lifecycle:
suspend_on_destroy_default: false
adopt_existing_on_create_default: false
outputs:
params:
- code: state_params
type: map
- code: state_out
type: map
- code: state_params_flat
type: map
- code: state_out_flat
type: map
- code: vault_secrets
type: map
sensitive: true
- code: vault_url
type: string
- code: vault_user_path
type: string
- code: vault_fields
type: list
operations:
- name: create
id: 271
kind: instance
action: create
params:
- id: 826
code: resourceRealm
data_type: string
required: true
default: llmAi.aillm.ru
value_list:
- llmAi.aillm.ru
func: getAvailableResourceRealms
- name: create_secrets
id: 274
kind: subresource
action: create
subresource: secrets
params:
- id: 833
code: models
data_type: array
required: true
sort: 20
depends_on: teamName
- id: 834
code: rpmLimit
data_type: integer > 0
required: true
default: "60"
minvalue: 1
- id: 835
code: tpmLimit
data_type: integer > 0
required: true
default: "100000"
minvalue: 1
- id: 857
code: keyName
data_type: string
required: true
sort: 10
- id: 859
code: teamName
data_type: string
required: true
sort: 15
- name: create_team
id: 278
kind: subresource
action: create
subresource: team
params:
- id: 858
code: teamName
data_type: string
required: true
- id: 860
code: models
data_type: array
required: true
- id: 861
code: rpmLimit
data_type: integer > 0
required: true
default: "60"
- id: 862
code: tpmLimit
data_type: integer > 0
required: true
default: "100000"
- name: delete
id: 273
kind: instance
action: delete
params: []
- name: delete_secrets
id: 275
kind: subresource
action: delete
subresource: secrets
params:
- id: 836
code: keyName
data_type: string
required: true
depends_on: teamName
- id: 876
code: teamName
data_type: string
required: true
sort: 10
- name: delete_team
id: 280
kind: subresource
action: delete
subresource: team
params:
- id: 868
code: teamName
data_type: string
required: true
- name: modify_team
id: 279
kind: subresource
action: modify
subresource: team
params:
- id: 864
code: teamName
data_type: string
required: true
- id: 865
code: models
data_type: array
required: true
depends_on: teamName
- id: 873
code: rpmLimit
data_type: integer > 0
required: true
default: "60"
minvalue: 1
- id: 874
code: tpmLimit
data_type: integer > 0
required: true
default: "100000"
minvalue: 1
- name: update_secrets
id: 277
kind: subresource
action: update
subresource: secrets
man: Данная операция предназначена для управления лимитами и моделями
params:
- id: 852
code: keyName
data_type: string
required: true
depends_on: teamName
- id: 853
code: models
data_type: array
required: true
depends_on: teamName
- id: 854
code: rpmLimit
data_type: integer > 0
required: true
default: "60"
- id: 855
code: tpmLimit
data_type: integer > 0
required: true
default: "100000"
- id: 875
code: teamName
data_type: string
required: true
sort: 5