Доступ к моделям
Как подключить модель в своём коде через платформу курса, сколько можно потратить и что делать, когда запрос не проходит.
Если на курсе включён доступ к моделям, платформа выдаёт вам адрес и личный ключ. С ними модель подключается в ваш код так же, как любой OpenAI-совместимый сервис: подойдёт библиотека openai, LangChain и всё, что умеет задавать base_url.
Платить самому не нужно, но и бесконечно тратить нельзя: у вас личный лимит, у курса — общий.
Где взять ключ
Страница «Доступ к моделям» в меню курса. Там три вещи:
- адрес — вида
https://<адрес платформы>/api/llm/v1; - ключ — вида
sk-disputa-…; - модель —
disputa-standard.
Ключ показывается один раз
Платформа хранит не сам ключ, а его отпечаток: утечка её базы не должна отдавать ключи всего потока. Скопируйте ключ сразу после выдачи. Потеряли — нажмите «перевыпустить»: старый перестанет работать, потраченное при этом не обнулится.
Первый запрос
Ключ держите в переменной окружения, а не в коде: репозиторий вашей команды открыт, и ключ, попавший в коммит, считается утёкшим.
import os
from openai import OpenAI
client = OpenAI(
base_url=os.environ["DISPUTA_BASE_URL"],
api_key=os.environ["DISPUTA_API_KEY"],
)
reply = client.chat.completions.create(
model="disputa-standard",
messages=[{"role": "user", "content": "Объясни, что такое golden dataset, в двух предложениях."}],
)
print(reply.choices[0].message.content)Потоковый ответ и вызов инструментов работают так же, как у OpenAI.
Модель
Вы пишете в коде disputa-standard, а какая модель за этим стоит, решает платформа. Когда модель заменят на новую, ваш код менять не придётся.
По умолчанию модель отвечает сразу, без рассуждения. Рассуждение можно включить — ответы на сложные задачи станут точнее, но медленнее и дороже:
reply = client.chat.completions.create(
model="disputa-standard",
messages=[...],
extra_body={"thinking": {"type": "enabled"}},
)Рассуждение расходует max_tokens
Если рассуждение включено, а max_tokens маленький, весь запас может уйти на рассуждение, и ответ придёт пустым. Ставьте предел с запасом или не ставьте вовсе.
Сколько можно
- Личный лимит в условных единицах и период, после которого он обновляется, — на странице «Доступ к моделям». Там же видно, сколько уже потрачено.
- Лимит курса — общий на поток. Может кончиться раньше вашего личного, если группа тратит много.
- Частота — до 60 запросов в минуту и до 4 одновременно с одного ключа. Это защищает остальных: цикл без паузы в коде одного студента иначе занял бы общий канал всей группы.
Когда запрос не проходит
Платформа отвечает по-русски и говорит, что делать. Сверьтесь с таблицей:
| код | что случилось | что делать |
|---|---|---|
| 402 | кончился личный лимит или лимит курса | ждать нового периода или попросить преподавателя добавить кредитов |
| 401 | ключ повреждён или не подходит | скопировать ключ заново целиком; потеряли — перевыпустить |
| 403 | ключ погашен или доступ курсу закрыт | перевыпустить ключ; если не помогло — спросить преподавателя |
| 403 | модели нет в доступе курса | писать в коде disputa-standard; список моделей — GET /v1/models |
| 429 | слишком много запросов подряд | подождать минуту, добавить паузу между запросами |