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: suspendOnDestroyDefault: false adoptExistingOnCreateDefault: false operations: - svcOperationId: 271 operation: create kind: instance action: create - svcOperationId: 274 operation: create_secrets kind: subresource action: create - svcOperationId: 278 operation: create_team kind: subresource action: create - svcOperationId: 273 operation: delete kind: instance action: delete - svcOperationId: 275 operation: delete_secrets kind: subresource action: delete - svcOperationId: 280 operation: delete_team kind: subresource action: delete - svcOperationId: 279 operation: modify_team kind: subresource action: modify - svcOperationId: 277 operation: update_secrets kind: subresource action: update stateOut: secrets: {} teams: {} cfsParams: - svcOperationCfsParamId: 826 svcOperationCfsParam: resourceRealm dataType: string isRequired: true defaultValue: llmAi.aillm.ru isModifiable: false valueList: - llmAi.aillm.ru - svcOperationCfsParamId: 833 svcOperationCfsParam: models dataType: array isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 834 svcOperationCfsParam: rpmLimit dataType: integer > 0 isRequired: true defaultValue: '60' isModifiable: false - svcOperationCfsParamId: 835 svcOperationCfsParam: tpmLimit dataType: integer > 0 isRequired: true defaultValue: '100000' isModifiable: false - svcOperationCfsParamId: 857 svcOperationCfsParam: keyName dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 859 svcOperationCfsParam: teamName dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 1083 svcOperationCfsParam: variablesKeys dataType: array-map-fixed isRequired: true defaultValue: '' isModifiable: false dataDescriptor: teamName: dataType: string defaultValue: '' isRequired: true isModifiable: false keyName: dataType: string defaultValue: '' isRequired: true isModifiable: false models: dataType: string defaultValue: '' isRequired: true isModifiable: false valueList: - '{}' tpmLimit: dataType: integer > 0 defaultValue: '100000' isRequired: true isModifiable: false rpmLimit: dataType: integer > 0 defaultValue: '60' isRequired: true isModifiable: false count: dataType: integer > 0 defaultValue: '1' isRequired: true isModifiable: false - svcOperationCfsParamId: 858 svcOperationCfsParam: teamName dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 860 svcOperationCfsParam: models dataType: array isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 861 svcOperationCfsParam: rpmLimit dataType: integer > 0 isRequired: true defaultValue: '60' isModifiable: false - svcOperationCfsParamId: 862 svcOperationCfsParam: tpmLimit dataType: integer > 0 isRequired: true defaultValue: '100000' isModifiable: false - svcOperationCfsParamId: 836 svcOperationCfsParam: keyName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 876 svcOperationCfsParam: teamName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 868 svcOperationCfsParam: teamName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 864 svcOperationCfsParam: teamName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 865 svcOperationCfsParam: models dataType: array isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 873 svcOperationCfsParam: rpmLimit dataType: integer > 0 isRequired: true defaultValue: '60' isModifiable: true - svcOperationCfsParamId: 874 svcOperationCfsParam: tpmLimit dataType: integer > 0 isRequired: true defaultValue: '100000' isModifiable: true - svcOperationCfsParamId: 852 svcOperationCfsParam: keyName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 853 svcOperationCfsParam: models dataType: array isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 854 svcOperationCfsParam: rpmLimit dataType: integer > 0 isRequired: true defaultValue: '60' isModifiable: true - svcOperationCfsParamId: 855 svcOperationCfsParam: tpmLimit dataType: integer > 0 isRequired: true defaultValue: '100000' isModifiable: true - svcOperationCfsParamId: 875 svcOperationCfsParam: teamName dataType: string isRequired: true defaultValue: '' isModifiable: true cfsParamsByOp: 271: - 826 274: - 833 - 834 - 835 - 857 - 859 - 1083 278: - 858 - 860 - 861 - 862 273: [] 275: - 836 - 876 280: - 868 279: - 864 - 865 - 873 - 874 277: - 852 - 853 - 854 - 855 - 875 stateParams: resourceRealm: llmAi.aillm.ru