PHPackages                             tigusigalpa/yandexgpt-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. tigusigalpa/yandexgpt-php

ActiveLibrary[API Development](/categories/api)

tigusigalpa/yandexgpt-php
=========================

PHP SDK для работы с YandexGPT API с поддержкой Laravel

v2.1.6(2mo ago)221652MITPHPPHP ^8.0

Since Sep 28Pushed 2mo agoCompare

[ Source](https://github.com/tigusigalpa/yandexgpt-php)[ Packagist](https://packagist.org/packages/tigusigalpa/yandexgpt-php)[ Docs](https://github.com/tigusigalpa/yandexgpt-php)[ RSS](/packages/tigusigalpa-yandexgpt-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (7)Dependencies (6)Versions (9)Used By (0)

YandexGPT PHP SDK
=================

[](#yandexgpt-php-sdk)

[![YandexGPT PHP SDK](https://private-user-images.githubusercontent.com/2721390/520456086-758d8956-0126-4b32-a6ba-afa8c8948188.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzIyNjMyMzUsIm5iZiI6MTc3MjI2MjkzNSwicGF0aCI6Ii8yNzIxMzkwLzUyMDQ1NjA4Ni03NThkODk1Ni0wMTI2LTRiMzItYTZiYS1hZmE4Yzg5NDgxODgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDIyOCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjAyMjhUMDcxNTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NzU3NWE5ZTU4NGY3NmM2YjQ3ZWZhMzc4Y2U5ZDcwZmYyZjNjMGYwYzRhOWI1MjgzNjhlZjkxNWNhOTFlMTk0OSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.FSICcsKw35BuACka1Akymcw_hI5zrWoohWKCagvna8o)](https://private-user-images.githubusercontent.com/2721390/520456086-758d8956-0126-4b32-a6ba-afa8c8948188.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzIyNjMyMzUsIm5iZiI6MTc3MjI2MjkzNSwicGF0aCI6Ii8yNzIxMzkwLzUyMDQ1NjA4Ni03NThkODk1Ni0wMTI2LTRiMzItYTZiYS1hZmE4Yzg5NDgxODgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDIyOCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjAyMjhUMDcxNTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NzU3NWE5ZTU4NGY3NmM2YjQ3ZWZhMzc4Y2U5ZDcwZmYyZjNjMGYwYzRhOWI1MjgzNjhlZjkxNWNhOTFlMTk0OSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.FSICcsKw35BuACka1Akymcw_hI5zrWoohWKCagvna8o)

[![Latest Version](https://camo.githubusercontent.com/25d378961fe88e894a8ff3e0f18073b38a7fbbd90f37f1e416976ab0c3252625/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f74696775736967616c70612f79616e6465786770742d7068702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/tigusigalpa/yandexgpt-php)[![PHP Version](https://camo.githubusercontent.com/c66c2995e540eb343dbd414783b470039a6ed1df9ac5a8454800e2e580af9bf9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f74696775736967616c70612f79616e6465786770742d7068702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/tigusigalpa/yandexgpt-php)[![License](https://camo.githubusercontent.com/c6112b6a7cd86b76f5ae10adb27ab5d1f55621aa1dae1cb1f3d9720912f289b7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f74696775736967616c70612f79616e6465786770742d7068702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/tigusigalpa/yandexgpt-php)[![Tests](https://camo.githubusercontent.com/d4b1acad5b41cfe210ac53b788ff269b2314f58343df9436c7c53194a60741a5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f74696775736967616c70612f79616e6465786770742d7068702f74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/tigusigalpa/yandexgpt-php/actions)

**Язык:** Русский | [English](README-en.md)

PHP SDK для YandexGPT API и YandexART. Генерация текста, диалоги, изображения, Conversations API. Работает с любым PHP 8.0+ проектом и имеет встроенную поддержку Laravel.

> Для управления облачной инфраструктурой (организации, облака, каталоги) используется [yandex-cloud-client-php](https://github.com/tigusigalpa/yandex-cloud-client-php).

Возможности
-----------

[](#возможности)

- Все модели YandexGPT: Lite, Pro, Alice AI
- Генерация изображений через YandexART
- Conversations API — серверные диалоги
- Режим рассуждений (Chain of Thought)
- Автоматическое управление OAuth/IAM токенами
- Laravel: Service Provider, Facade, конфигурация
- PHP 8.0+, Laravel 8.0+, Guzzle HTTP

---

Установка
---------

[](#установка)

Через Composer:

```
composer require tigusigalpa/yandexgpt-php
```

### Локальная разработка

[](#локальная-разработка)

Если вы хотите использовать пакет локально для разработки или тестирования:

#### Способ 1: Через локальный репозиторий

[](#способ-1-через-локальный-репозиторий)

1. **Клонируйте или поместите пакет в папку проекта:**

```
# В корне вашего Laravel проекта
mkdir -p packages
cd packages
git clone https://github.com/tigusigalpa/yandexgpt-php.git
# или скопируйте папку с пакетом в packages/yandexgpt-php
```

2. **Добавьте локальный репозиторий в composer.json вашего проекта:**

```
{
    "repositories": [
        {
            "type": "path",
            "url": "./packages/yandexgpt-php"
        }
    ],
    "require": {
        "tigusigalpa/yandexgpt-php": "@dev"
    }
}
```

3. **Установите зависимости:**

```
composer install
# или если пакет уже был установлен
composer update tigusigalpa/yandexgpt-php
```

#### Способ 2: Через симлинки

[](#способ-2-через-симлинки)

1. **Создайте симлинк в vendor:**

```
# Удалите существующий пакет (если есть)
rm -rf vendor/tigusigalpa/yandexgpt-php

# Создайте симлинк
ln -s ../../packages/yandexgpt-php vendor/tigusigalpa/yandexgpt-php
```

#### Способ 3: Через VCS репозиторий

[](#способ-3-через-vcs-репозиторий)

```
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/tigusigalpa/yandexgpt-php.git"
        }
    ],
    "require": {
        "tigusigalpa/yandexgpt-php": "dev-main"
    }
}
```

### Для Laravel

[](#для-laravel)

Пакет автоматически регистрируется в Laravel благодаря автодискавери. Опубликуйте конфигурационный файл:

```
php artisan vendor:publish --tag=yandexgpt-config
```

---

Настройка
---------

[](#настройка)

### 1. Получение OAuth токена

[](#1-получение-oauth-токена)

Документация: [OAuth-токен](https://yandex.cloud/ru/docs/iam/concepts/authorization/oauth-token)

Перейдите по ссылке для [получения OAuth токена](https://oauth.yandex.ru/authorize?response_type=token&client_id=1a6990aa636648e9b2ef855fa7bec2fb):

```
https://oauth.yandex.ru/authorize?response_type=token&client_id=1a6990aa636648e9b2ef855fa7bec2fb

```

### 2. Настройка окружения

[](#2-настройка-окружения)

Добавьте в ваш `.env` файл:

```
YANDEX_GPT_OAUTH_TOKEN=your_oauth_token_here
# получите folder_id через специальный запрос
YANDEX_GPT_FOLDER_ID=your_folder_id_here
YANDEX_GPT_DEFAULT_MODEL=yandexgpt-lite
YANDEX_GPT_TEMPERATURE=0.6
YANDEX_GPT_MAX_TOKENS=2000
```

### 3. Подготовка Yandex Cloud

[](#3-подготовка-yandex-cloud)

Для работы с YandexGPT API необходимо выполнить несколько шагов в Yandex Cloud. SDK автоматизирует большинство из них, но важно понимать процесс:

#### 3.1. Получение IAM токена

[](#31-получение-iam-токена)

Документация: [Получение IAM-токена для аккаунта на Яндексе](https://yandex.cloud/ru/docs/iam/operations/iam-token/create#exchange-token)

IAM токен получается автоматически через SDK с помощью OAuth токена. Токен действует 12 часов и обновляется автоматически.

**Получение через SDK:**

```
use Tigusigalpa\YandexCloudClient\YandexCloudClient;

// Создание клиента Yandex Cloud
$cloudClient = new YandexCloudClient('your_oauth_token');

// Получение IAM токена
$iamToken = $cloudClient->getAuthManager()->getIamToken();

echo "IAM Token: " . $iamToken . "\n";
```

**Автоматическое управление токенами через YandexGPTClient:**

```
use Tigusigalpa\YandexGPT\YandexGPTClient;

// Клиент автоматически получает и обновляет IAM токены
$client = new YandexGPTClient('your_oauth_token', 'your_folder_id');

// Получение Yandex Cloud клиента для управления облаком
$cloudClient = $client->getCloudClient();
$iamToken = $cloudClient->getAuthManager()->getIamToken();
```

**Ручное получение через API:**

```
curl -d "{"yandexPassportOauthToken":"YOUR_OAUTH_TOKEN"}" \
  "https://iam.api.cloud.yandex.net/iam/v1/tokens"
```

#### 3.2. Получение Cloud ID

[](#32-получение-cloud-id)

**Документация:** [Получение списка ресурсов Cloud](https://yandex.cloud/ru/docs/resource-manager/api-ref/Cloud/list)

**Через SDK:**

```
use Tigusigalpa\YandexCloudClient\YandexCloudClient;

$cloudClient = new YandexCloudClient('your_oauth_token');

// Laravel:
// use Tigusigalpa\YandexGPT\Laravel\Facades\YandexGPT;
// $cloudClient = YandexGPT::getCloudClient();
$clouds = $cloudClient->clouds()->list();

foreach ($clouds as $cloud) {
    echo "Cloud ID: " . $cloud['id'] . "\n";
    echo "Name: " . $cloud['name'] . "\n";
}
```

**Через Yandex Cloud CLI:**

```
yc resource-manager cloud list
```

**Через веб-консоль:** [Yandex Cloud Console](https://console.cloud.yandex.ru/) → выберите облако → скопируйте ID

#### 3.3. Получение Folder ID

[](#33-получение-folder-id)

**Документация:**[Получение списка ресурсов Folder в указанном облаке](https://yandex.cloud/ru/docs/resource-manager/api-ref/Folder/list)

**Через SDK:**

```
use Tigusigalpa\YandexCloudClient\YandexCloudClient;

$cloudClient = new YandexCloudClient('your_oauth_token');

// Получение существующих каталогов
$folders = $cloudClient->folders()->list('cloud_id');
foreach ($folders as $folder) {
    echo "Folder ID: " . $folder['id'] . "\n";
    echo "Name: " . $folder['name'] . "\n";
}
```

**Через Yandex Cloud CLI:**

```
# Создание каталога
yc resource-manager folder create --name my-ai-folder --cloud-id YOUR_CLOUD_ID

# Список каталогов
yc resource-manager folder list --cloud-id YOUR_CLOUD_ID
```

#### Создание каталога

[](#создание-каталога)

```
use Tigusigalpa\YandexCloudClient\YandexCloudClient;

$cloudClient = new YandexCloudClient('your_oauth_token');

// Laravel:
// use Tigusigalpa\YandexGPT\Laravel\Facades\YandexGPT;
// $cloudClient = YandexGPT::getCloudClient();

// Создание каталога
$folder = $cloudClient->folders()->create('cloud_id', 'my-ai-folder', 'Каталог для AI проектов');
$folderId = $folder['metadata']['folderId'];
```

Документация: [Создание каталога](https://yandex.cloud/ru/docs/resource-manager/operations/folder/create)

#### 3.4. Назначение ролей на каталог или облако

[](#34-назначение-ролей-на-каталог-или-облако)

Документация:

[Аутентификация в API Yandex AI Studio](https://yandex.cloud/ru/docs/ai-studio/api-ref/authentication)

[Управление доступом в Yandex AI Studio](https://yandex.cloud/ru/docs/ai-studio/security/)

[Назначить роль на каталог или облако](https://yandex.cloud/ru/docs/iam/operations/roles/grant#cloud-or-folder)

[Назначение роли на облако](https://yandex.cloud/ru/docs/resource-manager/api-ref/Cloud/updateAccessBindings)

[Объект Subject для облака](https://yandex.cloud/ru/docs/resource-manager/api-ref/Cloud/updateAccessBindings#yandex.cloud.access.Subject)

[Назначение роли на каталог](https://yandex.cloud/ru/docs/resource-manager/api-ref/Folder/updateAccessBindings)

[Объект Subject для каталога](https://yandex.cloud/ru/docs/resource-manager/api-ref/Folder/updateAccessBindings#yandex.cloud.access.Subject)

[Пошаговые инструкции для Identity and Access Management](https://yandex.cloud/ru/docs/iam/operations/)

[UserAccount API](https://yandex.cloud/ru/docs/iam/api-ref/UserAccount/)

[Identity and Access Management API, REST: YandexPassportUserAccount.GetByLogin](https://yandex.cloud/ru/docs/iam/api-ref/YandexPassportUserAccount/getByLogin)

**Через SDK:**

```
use Tigusigalpa\YandexCloudClient\YandexCloudClient;

$cloudClient = new YandexCloudClient('your_oauth_token');

// Laravel:
// use Tigusigalpa\YandexGPT\Laravel\Facades\YandexGPT;
// $cloudClient = YandexGPT::getCloudClient();

// 1. Получение User ID по логину Yandex
$userInfo = $cloudClient->yandexPassportUserAccounts()->getByLogin('username@yandex.ru');
$userId = $userInfo['id'];

// 2. Получение информации о пользователе по UserAccountId
$userAccount = $cloudClient->userAccounts()->get($userId);

// 3. Назначение роли на каталог
$cloudClient->folders()->updateAccessBindings(
    'folder_id',
    [
        [
            'action' => 'ADD',
            'accessBinding' => [
                'roleId' => 'ai.languageModels.user',
                'subject' => [
                    'id' => $userId,
                    'type' => 'userAccount'
                ]
            ]
        ]
    ]
);

// 4. Назначение роли на облако
$cloudClient->clouds()->updateAccessBindings(
    'cloud_id',
    [
        [
            'action' => 'ADD',
            'accessBinding' => [
                'roleId' => 'viewer',
                'subject' => [
                    'id' => $userId,
                    'type' => 'userAccount'
                ]
            ]
        ]
    ]
);
```

**Через Yandex Cloud CLI:**

```
# Назначение роли для пользователя
yc resource-manager folder add-access-binding \
  --id YOUR_FOLDER_ID \
  --role ai.languageModels.user \
  --user-account-id YOUR_USER_ID

# Назначение роли для сервисного аккаунта
yc resource-manager folder add-access-binding \
  --id YOUR_FOLDER_ID \
  --role ai.languageModels.user \
  --service-account-id YOUR_SERVICE_ACCOUNT_ID
```

**Через веб-консоль:**

1. Откройте [Yandex Cloud Console](https://console.cloud.yandex.ru/)
2. Выберите каталог
3. Перейдите в раздел "Права доступа"
4. Нажмите "Назначить роли"
5. Выберите пользователя и роль `ai.languageModels.user`

#### 3.5. Полный пример настройки

[](#35-полный-пример-настройки)

```
