Использовать дообученные классификаторы на базе YandexGPT
Чтобы выполнить запрос к любому типу дообученных классификаторов, используйте метод classify Text Classification API или Yandex AI Studio SDK.
Чтобы воспользоваться примером, вам понадобится сервисный аккаунт с ролью ai.languageModels.user и API-ключ с областью действия yc.ai.foundationModels.execute. API-ключ, который вы можете создать в AI Studio, имеет такие разрешения. Пример того, как настроить рабочее окружение, можно найти в разделе Начало работы.
Отправьте запрос к классификатору
import os
import requests
YANDEX_API_KEY = os.environ["YANDEX_API_KEY"]
YANDEX_FOLDER_ID = os.environ["YANDEX_FOLDER_ID"]
YANDEX_TUNING_SUFFIX = os.environ["YANDEX_TUNING_SUFFIX"]
headers = {
"Authorization": f"Api-Key {YANDEX_API_KEY}",
"Content-Type": "application/json",
}
body = {
"modelUri": f"cls://{YANDEX_FOLDER_ID}/yandexgpt-lite/rc@{YANDEX_TUNING_SUFFIX}",
"text": "<текст_запроса>",
}
response = requests.post(
"https://ai.api.cloud.yandex.net:443/foundationModels/v1/textClassification",
headers=headers,
json=body,
)
print(response.json())
Где:
YANDEX_API_KEY— API-ключ для работы в AI Studio.YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта.YANDEX_TUNING_SUFFIX— суффикс дообучения модели.modelUri— идентификатор модели, которая будет использоваться для классификации сообщения.text— текстовое содержимое сообщения. Суммарное количество токенов на один запрос не должно превышать 8000.
Имена классов, по которым модель будет распределять запросы, должны быть заданы в процессе дообучения модели, поэтому не передаются в запросе.
Пример ответа:
{
"predictions": [
{
"label": "<название_класса_1>",
"confidence": 0.00010150671005249023
},
{
"label": "<название_класса_2>",
"confidence": 0.000008225440979003906
},
{
"label": "<название_класса_n>",
"confidence": 0.93212890625
}
],
"modelVersion": "<версия_модели>"
}
const YANDEX_API_KEY = process.env.YANDEX_API_KEY;
const YANDEX_FOLDER_ID = process.env.YANDEX_FOLDER_ID;
const YANDEX_TUNING_SUFFIX = process.env.YANDEX_TUNING_SUFFIX;
const headers = {
Authorization: `Api-Key ${YANDEX_API_KEY}`,
"Content-Type": "application/json",
};
const body = {
modelUri: `cls://${YANDEX_FOLDER_ID}/yandexgpt-lite/rc@${YANDEX_TUNING_SUFFIX}`,
text: "<текст_запроса>",
};
const response = await fetch(
"https://ai.api.cloud.yandex.net:443/foundationModels/v1/textClassification",
{ method: "POST", headers, body: JSON.stringify(body) }
);
console.log(await response.json());
Где:
YANDEX_API_KEY— API-ключ для работы в AI Studio.YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта.YANDEX_TUNING_SUFFIX— суффикс дообучения модели.modelUri— идентификатор модели, которая будет использоваться для классификации сообщения.text— текстовое содержимое сообщения. Суммарное количество токенов на один запрос не должно превышать 8000.
Имена классов, по которым модель будет распределять запросы, должны быть заданы в процессе дообучения модели, поэтому не передаются в запросе.
Пример ответа:
{
"predictions": [
{
"label": "<название_класса_1>",
"confidence": 0.00010150671005249023
},
{
"label": "<название_класса_2>",
"confidence": 0.000008225440979003906
},
{
"label": "<название_класса_n>",
"confidence": 0.93212890625
}
],
"modelVersion": "<версия_модели>"
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
var (
YANDEX_API_KEY = os.Getenv("YANDEX_API_KEY")
YANDEX_FOLDER_ID = os.Getenv("YANDEX_FOLDER_ID")
YANDEX_TUNING_SUFFIX = os.Getenv("YANDEX_TUNING_SUFFIX")
)
func main() {
modelUri := fmt.Sprintf("cls://%s/yandexgpt-lite/rc@%s", YANDEX_FOLDER_ID, YANDEX_TUNING_SUFFIX)
body := map[string]string{
"modelUri": modelUri,
"text": "<текст_запроса>",
}
data, _ := json.Marshal(body)
req, _ := http.NewRequest("POST",
"https://ai.api.cloud.yandex.net:443/foundationModels/v1/textClassification",
bytes.NewReader(data))
req.Header.Set("Authorization", "Api-Key "+YANDEX_API_KEY)
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatalf("Ошибка запроса: %v", err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
Где:
YANDEX_API_KEY— API-ключ для работы в AI Studio.YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта.YANDEX_TUNING_SUFFIX— суффикс дообучения модели.modelUri— идентификатор модели, которая будет использоваться для классификации сообщения.text— текстовое содержимое сообщения. Суммарное количество токенов на один запрос не должно превышать 8000.
Имена классов, по которым модель будет распределять запросы, должны быть заданы в процессе дообучения модели, поэтому не передаются в запросе.
Пример ответа:
{
"predictions": [
{
"label": "<название_класса_1>",
"confidence": 0.00010150671005249023
},
{
"label": "<название_класса_2>",
"confidence": 0.000008225440979003906
},
{
"label": "<название_класса_n>",
"confidence": 0.93212890625
}
],
"modelVersion": "<версия_модели>"
}
Пример ниже разработан для выполнения в операционных системах MacOS и Linux. Чтобы выполнить его в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.
curl \
--request POST \
--header "Authorization: Api-Key <API-ключ>" \
--header "Content-Type: application/json" \
--data '{
"modelUri": "cls://<URI_базовой_модели>/<версия>@<суффикс_дообучения>",
"text": "<текст_запроса>"
}' \
"https://ai.api.cloud.yandex.net:443/foundationModels/v1/textClassification"
Где:
<API-ключ>— API-ключ для работы в AI Studio.modelUri— идентификатор модели, которая будет использоваться для классификации сообщения.text— текстовое содержимое сообщения. Суммарное количество токенов на один запрос не должно превышать 8000.
Имена классов, по которым модель будет распределять запросы, должны быть заданы в процессе дообучения модели, поэтому не передаются в запросе.
Примечание
Эндпоинт https://ai.api.cloud.yandex.net:443/foundationModels/v1/textClassification работает только с дообученными классификаторами. Для классификаторов по промпту используйте https://ai.api.cloud.yandex.net/foundationModels/v1/fewShotTextClassification.
Пример ответа:
{
"predictions": [
{
"label": "<название_класса_1>",
"confidence": 0.00010150671005249023
},
{
"label": "<название_класса_2>",
"confidence": 0.000008225440979003906
},
...
{
"label": "<название_класса_n>",
"confidence": 0.93212890625
}
],
"modelVersion": "<версия_модели>"
}
#!/usr/bin/env python3
from __future__ import annotations
import os
from yandex_ai_studio_sdk import AIStudio
YANDEX_API_KEY = os.environ["YANDEX_API_KEY"]
YANDEX_FOLDER_ID = os.environ["YANDEX_FOLDER_ID"]
YANDEX_TUNING_SUFFIX = os.environ["YANDEX_TUNING_SUFFIX"]
MODEL_URI = f"cls://{YANDEX_FOLDER_ID}/yandexgpt-lite/rc@{YANDEX_TUNING_SUFFIX}"
request_text = "Vieta's formulas"
def main():
sdk = AIStudio(
folder_id=YANDEX_FOLDER_ID,
auth=YANDEX_API_KEY,
)
model = sdk.models.text_classifiers(MODEL_URI)
# The result will contain predictions within predefined classes
# and the most weighty prediction will be "mathematics": 0.92
result = model.run(request_text)
for prediction in result:
print(prediction)
if __name__ == "__main__":
main()
Где:
-
request_text— текстовое содержимое сообщения. Суммарное количество токенов на один запрос не должно превышать 8000.В качестве входных данных для запроса Yandex AI Studio SDK может принимать строку, словарь, объект класса
TextMessageили массив, содержащий любое сочетание указанных типов данных. Подробнее см. в разделе Использование Yandex AI Studio SDK.
-
YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта. -
YANDEX_API_KEY— API-ключ для работы в AI Studio. -
YANDEX_TUNING_SUFFIX— суффикс дообучения модели.В примерах используется аутентификация с помощью API-ключа. Yandex AI Studio SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex AI Studio SDK.
model— идентификатор модели, которая будет использоваться для классификации сообщения. Параметр содержит идентификатор каталога Yandex Cloud и суффикс дообучения.
Имена классов, по которым модель будет распределять запросы, должны быть заданы в процессе дообучения модели, поэтому не передаются в запросе.
Пример ответа:
TextClassificationLabel(label='еда', confidence=2.2830462853562494e-07)
TextClassificationLabel(label='одежда', confidence=0.15913614630699158)
TextClassificationLabel(label='спорт', confidence=0.07084071636199951)
TextClassificationLabel(label='электроника', confidence=0.7700229287147522)
См. также
- Классификаторы на базе YandexGPT
- Примеры работы с AI SDK на GitHub