AI
January 10

YandexGPT API. Часть 1

YandexGPT (YaLM 2.0) — это большая языковая модель нового поколения. Она разработана и обучена компанией «Яндекс» на десятках миллионов текстов из интернета, а также на тысячах ответов, подготовленных AI-тренерами. Нейросеть способна обрабатывать запросы пользователей и отвечать на них в текстовом виде или голосом от лица «Алисы».

https://lifehacker.ru/yandexgpt

Интернет заполонён информацией как пользоваться ChatGPT API в своих приложениях для генерации текста, перевода, классификации и организации чат-ботов с ИИ внутри.

Сегодня мы рассмотрим как использовать YandexGPT, чтобы можно было интегрировать в свой проект.

Получение данных для аутентификации запросов

Сперва в личном кабинете Yandex Cloud получим идентификатор каталога (СОХРАНИМ ЕГО, ОН ПОНАДОБИТСЯ ПОЗЖЕ):

Далее зайдём в этот каталог и перейдём в Сервисные аккаунты и нажмём "Создать сервисный аккаунт":

Необходимо задать имя, описание и роль ai.languageModels.user.

После создания заходим внутрь сервисного аккаунта и нажимаем "Создать API-ключ"

Вводим описание, чтобы было понятно, где используем:

После чего будет выведен ключ:

ВАЖНО! Сохраните секретный ключ перед закрытием этого окна, иначе вы не сможете его увидеть снова.

Всё, теперь переходим непосредственно к коду 😊

Пример кода на TypeScript

Нам понадобится библиотека для http-запросов. Я возьму axios

npm i --save axios
yarn add axios
bun add axios

Далее собственно наш код:

import axios from 'axios';

const folder_id = '<идентификатор каталога>';
const yandexgpt_key = '<секретный ключ выше>';

const data = {
  modelUri: `gpt://${folder_id}/yandexgpt/latest`,
  completionOptions: {
    "stream": false,
    "temperature": 0.6,
    "maxTokens": "2000"
  },
  "messages": [
    {
      "role": "system",
      "text": "Найди ошибки в тексте и исправь их"
    },
    {
      "role": "user",
      "text": "Ламинат подойдет для укладке на кухне"
    }
  ]
};

async function main() {
  try {
    const response = await axios.post(
      `https://llm.api.cloud.yandex.net/foundationModels/v1/completion`,
      data,
      {
        headers: {
          'Authorization': `Api-Key ${yandexgpt_key}`,
          'x-folder-id': folder_id,
        },
      }
    );
    console.log(response.status);
    console.log(JSON.stringify(response.data, null, 2));
  } catch (err) {
    console.error('error:', err)
  }
}

main();

Пример кода на Python

import asyncio
import json
import requests


folder_id = '<идентификатор каталога>'
yandexgpt_key = '<секретный ключ выше>'
yandex_gpt_api_url = 'https://llm.api.cloud.yandex.net/foundationModels/v1/completion'

messages = [
    {
        "role": "system",
        "text": "Ты дружелюбный ассистент. Рассказывай шутки"
    },
]


def yandex_gpt():
    response = requests.post(
        yandex_gpt_api_url,
        headers={
            "Authorization": f"Api-Key {gpt_api_key}",
            "x-folder-id": folder_id
        },
        json={
            "modelUri": f"gpt://{folder_id}/yandexgpt/latest",
            "completionOptions": {
                "stream": False,
                "temperature": 0.6
            },
            "messages": messages
        },
    )
    return response.json()


Используемые ссылки: