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