256 lines
14 KiB
YAML
256 lines
14 KiB
YAML
name: llm_ai
|
|
service_id: 163
|
|
service_display_name: ML Улей
|
|
service_short_name: llmAi
|
|
service_man: '## 1. Общая информация<br/><br/>LLMaaS (Large Language Model as a Service) — это сервис для доступа к языковым моделям через OpenAI-совместимое API.<br/>Платформа позволяет создавать организации
|
|
(тенанты), команды, выпускать и управлять API-ключами, устанавливать лимиты на использование.<br/><br/>### Ограничение: одна организация на контрагента<br/><br/>На одного контрагента может быть создана
|
|
**только одна организация** в LLMaaS.<br/>Повторная попытка создать организацию для того же контрагента завершится ошибкой.<br/><br/>### Возможные ошибки и как их обрабатывать<br/><br/>При работе с сервисом
|
|
могут возникнуть типовые ошибки. Ниже описано, как их распознать и что делать.<br/><br/>| Ошибка | Когда возникает | Что делать |<br/>|--------|-----------------|------------|<br/>| `Организация в LLMaaS
|
|
уже привязана к контрагенту <contragentCode>` | При операции `create`, если организация для данного контрагента уже существует | На одного контрагента допускается только одна организация. Если нужно изменить
|
|
существующую организацию, используйте операции управления командами и ключами |<br/>| `Не хватает нужного гранта. Примените реконсиляцию для данного инстанса` | При операциях `create_team`, `modify_team`,
|
|
если модель не выдана организации на Layer 1 | Запустите операцию `reconcile` для данного инстанса. Она обновит список моделей, доступных организации, после чего повторите исходную операцию |<br/>| `Лимиты
|
|
API-ключа не могут превышать лимиты команды` | При операциях `create_secrets`, `update_secrets` | Уменьшите значения `RPM` и/или `TPM` ключа до уровня команды или увеличьте лимиты самой команды через
|
|
`modify_team` |<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create** — Создание организации в LLMaaS<br/>- **delete** — Удаление организации<br/><br/>- **create_team** —
|
|
Создание команды внутри организации<br/>- **modify_team** — Редактирование команды (модели, RPM, TPM)<br/>- **delete_team** — Удаление команды<br/><br/>- **create_secrets** — Создание API-ключа<br/>-
|
|
**update_secrets** — Обновление параметров API-ключа<br/>- **delete_secrets** — Удаление API-ключа<br/><br/>- **reconcile** — Обновление списка моделей, доступных организации<br/><br/>---<br/><br/>##
|
|
2. Параметры создания организации<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании организации:<br/><br/>* **Платформа для развертывания**<br/> Выбирается автоматически, изменять
|
|
не нужно.<br/><br/>## 3. Параметры создания команды<br/><br/>* **Имя команды**<br/> Уникальное имя команды в рамках организации.<br/> Пример: `production`<br/><br/>* **Модель**<br/> Название модели,
|
|
доступной для команды.<br/> Пример: `gpt-oss-120b`<br/><br/>* **Лимит запросов в минуту (RPM)**<br/> Максимальное количество запросов к API в минуту.<br/> Пример: `60`<br/><br/>* **Лимит токенов в
|
|
минуту (TPM)**<br/> Максимальное количество токенов (входящих + исходящих) в минуту.<br/> Пример: `100000`<br/><br/>---<br/><br/>## 4. Параметры редактирования команды<br/><br/>Для существующей команды
|
|
можно изменить:<br/><br/>* **Модель**<br/> Новая модель для команды.<br/> Пример: `gpt-oss-20b`<br/><br/>* **Лимит запросов в минуту (RPM)**<br/> Новое значение RPM.<br/> Пример: `120`<br/><br/>*
|
|
**Лимит токенов в минуту (TPM)**<br/> Новое значение TPM.<br/> Пример: `200000`<br/><br/>---<br/><br/>## 5. Параметры создания API-ключа<br/><br/>Ниже перечислены параметры, которые необходимо указать
|
|
при создании API-ключа:<br/><br/>* **Имя ключа**<br/> Уникальное имя ключа в рамках организации.<br/> Пример: `prod-key`<br/><br/>* **Команда**<br/> Имя команды для привязки ключа. Если не указано
|
|
— ключ привязывается к команде `main`.<br/> Пример: `production`<br/><br/>* **Модель**<br/> Название модели, доступной для данного ключа.<br/> Пример: `gpt-oss-120b`<br/><br/>* **Лимит запросов в минуту
|
|
(RPM)**<br/> Максимальное количество запросов к API в минуту.<br/> Пример: `60`<br/><br/>* **Лимит токенов в минуту (TPM)**<br/> Максимальное количество токенов (входящих + исходящих) в минуту.<br/> Пример:
|
|
`100000`<br/><br/>**Важно:** Лимиты API-ключа не могут превышать лимиты команды, к которой он привязан.<br/>При превышении операция будет отклонена с ошибкой.<br/>Перед созданием ключа убедитесь, что
|
|
`RPM <= team.RPM` и `TPM <= team.TPM`.<br/><br/><br/>---<br/><br/>## 6. Параметры обновления API-ключа<br/><br/>Для уже существующего ключа можно изменить параметры. Все параметры являются опциональными:<br/><br/>*
|
|
**Имя ключа**<br/> Имя обновляемого ключа.<br/> Пример: `prod-key`<br/><br/>* **Модель**<br/> Новое название модели.<br/> Пример: `gpt-oss-20b`<br/><br/>* **Лимит запросов в минуту (RPM)**<br/> Новое
|
|
значение RPM.<br/> Пример: `120`<br/><br/>* **Лимит токенов в минуту (TPM)**<br/> Новое значение TPM.<br/> Пример: `200000`<br/><br/>**Важно:** При обновлении лимитов API-ключа новые значения не могут
|
|
превышать лимиты команды.<br/>Если указать значения выше командных, операция завершится ошибкой.<br/>Указывайте `RPM <= team.RPM` и `TPM <= team.TPM`.<br/><br/>Команда определяется автоматически по стейту
|
|
услуги — изменить привязку к другой команде через эту операцию нельзя.<br/><br/>---<br/><br/>## 7. Параметры удаления API-ключа<br/><br/>* **Команда**<br/> Имя команды, к которой привязан ключ.<br/> Пример:
|
|
`production`<br/><br/>* **Имя ключа**<br/> Имя удаляемого ключа.<br/> Пример: `prod-key`<br/><br/>---<br/><br/>## 8. Параметры удаления команды<br/><br/>* **Имя команды**<br/> Имя удаляемой команды.<br/> Пример:
|
|
`production`<br/><br/>---<br/><br/>## 9. Параметры удаления организации<br/><br/>Удаление организации не требует дополнительных параметров — удаляется вся организация со всеми командами и ключами.<br/><br/>---<br/><br/>##
|
|
10. Выходные параметры<br/><br/>После успешного создания организации платформа возвращает:<br/><br/>* **connectionUrl**<br/> URL для доступа к inference API (OpenAI-совместимый).<br/> Пример: `https://api.aillm.ru`<br/><br/>---<br/><br/><br/>##
|
|
11. Пример использования API<br/><br/>После получения API-ключа клиент может обращаться к LLMaaS напрямую:<br/><br/>**Запрос к chat completions:**<br/><br/>```bash<br/>curl https://api.aillm.ru/v1/chat/completions
|
|
\<br/> -H "Authorization: Bearer sk-..." \<br/> -H "Content-Type: application/json" \<br/> -d ''{<br/> "model": "gpt-oss-120b",<br/> "messages": [<br/> {"role": "user", "content": "Привет!"}<br/> ]<br/> }''<br/>```<br/><br/>**Получение
|
|
списка доступных моделей:**<br/><br/>```bash<br/>curl https://api.aillm.ru/v1/models \<br/> -H "Authorization: Bearer sk-..."<br/>```<br/>'
|
|
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: 412
|
|
operation: reconcile
|
|
kind: action
|
|
action: reconcile
|
|
- 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: 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
|
|
- svcOperationCfsParamId: 1157
|
|
svcOperationCfsParam: ''
|
|
dataType: map-fixed
|
|
isRequired: true
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
cfsParamsByOp:
|
|
271:
|
|
- 826
|
|
274:
|
|
- 833
|
|
- 834
|
|
- 835
|
|
- 857
|
|
- 859
|
|
278:
|
|
- 858
|
|
- 860
|
|
- 861
|
|
- 862
|
|
273: []
|
|
275:
|
|
- 836
|
|
- 876
|
|
280:
|
|
- 868
|
|
279:
|
|
- 864
|
|
- 865
|
|
- 873
|
|
- 874
|
|
412: []
|
|
277:
|
|
- 852
|
|
- 853
|
|
- 854
|
|
- 855
|
|
- 875
|
|
- 1157
|
|
stateParams:
|
|
resourceRealm: llmAi.aillm.ru
|