﻿openapi: 3.1.1
info:
  title: GigaChat API B2Bank
  version: 1.0.0
  contact:
    name: GigaChat API
    url: 'https://confluence.sberbank.ru/display/GIGACHATB2BANK/GigaChatB2Bank+Home'
  description: Справочная документация [GigaChat API B2Bank](https://confluence.sberbank.ru/display/GIGACHATB2BANK/GigaChatB2Bank+Home).
servers:
- url: https://gigachat-ift.sberdevices.delta.sbrf.ru/v1
  description: ИФТ
- url: https://gigachat-psi.sberdevices.sigma.sbrf.ru/v1
  description: ПСИ Sigma
- url: https://gigachat-psi.sberdevices.ca.sbrf.ru/v1
  description: ПСИ Alpha
- url: https://gigachat.sberdevices.sigma.sbrf.ru/v1
  description: ПРОМ Sigma
- url: https://gigachat.sberdevices.omega.sbrf.ru/v1
  description: ПРОМ Alpha

tags:
- name: misc-features
  description: Обнаружение сгенерированного контента.
- name: text-generation
  description: Генерации контента.
- name: embeddings
  description: Векторное представления текста.
- name: models
  description: Запросы для получения данных доступных моделей.
- name: batches
  x-displayName: Пакеты запросов
  description: |
    # Пакеты запросов

    Пакетный режим предназначен для асинхронной обработки большого объема данных. Подходит для задач, которые не требуют немедленного ответа, например:

    * Разметка или классификация массивов данных.
    * Расчет эмбеддингов для крупных наборов данных.

    Пакетный режим доступен только ИП и юридическим лицам при оплате по схеме pay-as-you-go.
- name: functions
  x-displayName: Функции
  description: |
    # Функции
    
    В этом разделе описаны методы, облегчающие работу с собственными функциями при работе GigaChat API.

    # START_RAW
    <details>
      <summary>Подробнее о функциях</summary>
    # END_RAW

    Функции — ключевой элемент для построения сложных решений с применением LLM, таких, как AI-агенты и ассистенты.
    Они представляют внешние инструменты (фрагменты кода), к которым могут обращаться модели GigaChat для решения задач пользователей.
    Модель не исполняет функции, но самостоятельно принимает решение о том как, когда и с какими параметрами их следует вызвать.
    При принятии решения о вызове функции модель исходит из доступных знаний, данных текущего разговора и описания функции.
    После обращения к функции модель может обработать результат ее работы.

    # START_RAW
    </details>
    # END_RAW
- name: files-storage
  x-displayName: Хранилище файлов
  description: |
    # Хранилище файлов

    В этом разделе описаны методы для работы с хранилищем файлов, которые можно использовать при запросах на генерацию.
    Хранилище позволяет:

    * [загружать файлы](/ru/gigachat-b2bank/api/reference/rest/post-file). Загруженные файлы доступны только вам;
    * [получать список доступных файлов](/ru/gigachat-b2bank/api/reference/rest/get-files);
    * [получать описание выбранного файла](/ru/gigachat-b2bank/api/reference/rest/get-file);
    * [скачивать файлы изображений](/ru/gigachat-b2bank/api/reference/rest/get-file-id);
    * [удалять файлы](/ru/gigachat-b2bank/api/reference/rest/file-delete).
    
    Кроме загруженных файлов, в хранилище также сохраняются файлы изображений, сгенерированных при выполнении запроса # START_RAW<APIMethod type="POST" path="/chat/completions" link="/ru/gigachat-b2bank/api/reference/rest/post-chat"/># END_RAW.

    Хранилище поддерживает текстовые документы, изображения и аудиофайлы разных форматов.

    :::note

    При использовании больших текстовых файлов в запросах на генерацию, их содержимое может превышать [размер контекста модели](/ru/gigachat/models/main#modeli-dlya-generatsii).
    В таком случае вернется [ошибка с кодом 422](/ru/gigachat-b2bank/api/errors-description?responseCode=422).
  
    :::

    # START_RAW
    # END_RAW
- name: consumption-monitoring
  x-displayName: Мониторинг потребления
  description: |
    # Мониторинг потребления
    
    В разделе описаны методы, которые помогут вам оценить, сколько токенов будет потрачено на ваш запрос, а также узнать остаток токенов для работы с каждой из доступных моделей.

    # START_RAW
    <details>
      <summary>Подробнее о токенах</summary>
    # END_RAW

    Токен — единица измерения стоимости запросов к модели. Токен может быть символом, несколькими символами, фрагментом слова или словом целиком. В среднем в одном токене 3—4 символа, включая пробелы, знаки препинания и специальные символы.

    Кроме текста сообщений в токены преобразуется контент, который используется в контексте запроса. Например, текстовые файлы и изображения, описания функций или история сообщений из массива `messages`.

    # START_RAW
    </details>
    # END_RAW
paths:
  /tokens/count:
    post:
      tags:
        - consumption-monitoring
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokensCountBody'
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            giga = GigaChat(
                base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1",
                cert_file="./certs/clientcert.pem",         # Клиентский сертификат
                key_file="./certs/clientkey.key",          # Приватный ключ клиента
                key_file_password="<пароль>",   # Необязательный пароль для зашифрованного ключа
                verify_ssl_certs=False
            )

            response = giga.tokens_count(
                # Массив строк для подсчета токенов
                input_=["12345"],
                # Модель, которая используется для подсчета токенов
                model="GigaChat-Pro"
                )

            print(response)
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            const response = await giga.tokensCount(["Привет! Расскажи о себе в двух словах"]);

            console.log("Количество токенов в запросе: ", response.tokens[0].tokens);
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokensCount'
          description: OK
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      security:
        - mTLSAuthentication: []
      operationId: postTokensCount
      summary: Подсчитать количество токенов
      description: Возвращает объект с информацией о количестве токенов, подсчитанных заданной моделью в строках. Строки передаются в массиве `input`.
  /balance:
    get:
      tags:
        - consumption-monitoring
      parameters:
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            giga = GigaChat(
                base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1",
                cert_file="./certs/clientcert.pem",         # Клиентский сертификат
                key_file="./certs/clientkey.key",          # Приватный ключ клиента
                key_file_password="<пароль>",   # Необязательный пароль для зашифрованного ключа
                verify_ssl_certs=False
            )

            # Метод доступен только если вы используете пакеты токенов
            response = giga.get_balance()

            print(response)
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            # Метод доступен только если вы используете пакеты токенов (купленные или бесплатные)
            const response = await giga.balance();

            console.log("Остаток токенов: ", response);
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Balance'
          description: OK
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/PermissionDeniedError'
      security:
        - mTLSAuthentication: []
      operationId: getBalance
      summary: Получить остаток токенов
      description: |
        Возвращает доступный остаток токенов для каждой из моделей.
        Метод доступен только при покупке пакетов токенов.
        Если вы оплачиваете работу с API по схеме pay-as-you-go, запрос вернет ошибку 403 Permission Denied.
  /models:
    get:
      tags:
        - models
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            giga = GigaChat(
                base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1",
                cert_file="./certs/clientcert.pem",         # Клиентский сертификат
                key_file="./certs/clientkey.key",          # Приватный ключ клиента
                key_file_password="<пароль>",   # Необязательный пароль для зашифрованного ключа
                verify_ssl_certs=False
            )

            response = giga.get_models()

            print(response)
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            const response = await giga.getModels();

            console.log(response);
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models'
          description: OK
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      security:
        - mTLSAuthentication: []
      operationId: getModels
      summary: Список моделей
      description: Возвращает массив объектов с данными доступных моделей.
  /files:
    get:
      tags:
        - files-storage
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            with GigaChat(base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1", cert_file="./certs/clientcert.pem", key_file="./certs/clientkey.key", verify_ssl_certs=False) as client:
                files = client.get_files()
                for file in files.data:
                    print(f"{file.id_}: {file.filename}")
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            const files = await giga.getFiles();

            console.log(files);
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Files'
          description: OK
      security:
        - mTLSAuthentication: []
      operationId: getFiles
      summary: Список доступных файлов
      description: Возвращает массив объектов с данными доступных файлов.
    post:
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FileUpload'
        required: true
      tags:
        - files-storage
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            giga = GigaChat(
                base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1",
                cert_file="./certs/clientcert.pem",         # Клиентский сертификат
                key_file="./certs/clientkey.key",          # Приватный ключ клиента
                key_file_password="<пароль>",   # Необязательный пароль для зашифрованного ключа
                verify_ssl_certs=False
            )

            response = giga.upload_file(open("/<путь_к_файлу>/<имя_файла>.txt", mode="rb"))

            print(response)
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
          description: OK
      security:
        - mTLSAuthentication: []
      operationId: postFile
      summary: Загрузить файл
      description: |
        Загружает в хранилище текстовые документы, изображения или аудиофайлы.
        Возвращает объект с данными загруженного файла.
        Загруженные файлы доступны только вам.

        Идентификатор файла, указанный в поле `id`, можно использовать при [запросах на генерацию](/ru/gigachat-b2bank/api/reference/rest/post-chat).
        Для этого идентификаторы нужно передать в массиве `attachments`.
        Подробнее — в разделе [Обработка файлов](/ru/gigachat/guides/working-with-files).

        Хранилище поддерживает текстовые документы, изображения и аудиофайлы разных форматов.

        # START_RAW
        <Tabs queryString="ext">
        <TabItem value="text" label="Текстовые документы" default>
        # END_RAW

        ```mdx-code-block
        <APITable colsWidth={['200px']}>
        ```

        | Формат | MIME-тип   |
        |--------|------------|
        | txt    | text/plain  |
        | doc    | application/msword  |
        | docx   | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
        | pdf    | application/pdf  |
        | epub   | application/epub  |
        | ppt    | application/ppt  |
        | pptx   | application/pptx  |
        | xlsx   | application/vnd.ms-excel  |

        ```mdx-code-block
        </APITable>
        ```
        
        # START_RAW
        </TabItem>
        <TabItem value="image" label="Изображения" >
        # END_RAW

        ```mdx-code-block
        <APITable colsWidth={['200px']}>
        ```
        
        | Формат | MIME-тип   |
        |--------|------------|
        | jpeg    | image/jpeg  |
        | png    | image/png  |
        | tiff   | image/tiff |
        | bmp    | image/bmp  |

        ```mdx-code-block
        </APITable>
        ```

        # START_RAW
        </TabItem>
        <TabItem value="audio" label="Аудиофайлы" >
        # END_RAW
        
        ```mdx-code-block
        <APITable colsWidth={['200px']}>
        ```
        
        | Формат | MIME-тип                                                       |
        | ------ | -------------------------------------------------------------- |
        | mp4    | audio/mp4                                                      |
        | mp3    | audio/mp3                                                      |
        | m4a    | audio/x-m4a                                                    |
        | wav    | audio/x-wav<br />audio/wave<br />audio/wav<br />audio/x-pn-wav |
        | weba   | audio/webm                                                |
        | ogg    | audio/x-ogg                                                    |
        | opus   | audio/opus                                                     |

        ```mdx-code-block
        </APITable>
        ```

        # START_RAW
        </TabItem>
        </Tabs>
        # END_RAW

        На размеры файлов действуют ограничения:

        * максимальный размер одного аудиофайла в запросе — 35 Мб;
        * максимальный размер одного изображения в запросе — 15 Мб;
        * максимальный размер одного текстового файла в запросе — 40 Мб.

        :::note

        При использовании больших текстовых файлов в запросах на генерацию, их содержимое может превышать [размер контекста модели](/ru/gigachat/models/main#modeli-dlya-generatsii).
        В таком случае вернется [ошибка с кодом 422](/ru/gigachat-b2bank/api/errors-description?responseCode=422).

        :::
  /files/{file}:
    get:
      tags:
        - files-storage
      parameters:
        - name: file
          description: Идентификатор файла. Идентификатор содержится в поле найти в поле `id` объекта, который создается при загрузке файла в хранилище.
          schema:
            type: string
          in: path
          required: true
        - $ref: '#/components/parameters/xClientId'
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            with GigaChat(base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1", cert_file="./certs/clientcert.pem", key_file="./certs/clientkey.key", verify_ssl_certs=False) as client:
                single_file = client.get_file("<идентификатор_файла>")
                print(f"{single_file}")
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            console.log(file);
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
          description: OK
      security:
        - mTLSAuthentication: []
      operationId: getFile
      summary: Информация о файле
      description: Возвращает объект с описанием указанного файла.
  /files/{file_id}/content:
    get:
      tags:
        - files-storage
      parameters:
        - name: file_id
          description: |
            Идентификатор файла, сохраненного в хранилище.
          schema:  
            type: string
          in: path
          required: true
        - $ref: '#/components/parameters/xClientId'
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/FileContent'
          description: OK
        '400':
          description: Invalid model ID
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NoSuchModel'
      security:
        - mTLSAuthentication: []
      operationId: getFileId
      summary: Скачать файл
      description: |
        Возвращает файл сохраненный в хранилище.

        Используйте метод для скачивания изображений и 3D-моделей, созданных с помощью [встроенных функций `text2image` и `text2model3d`](/ru/gigachat/guides/functions/calling-builtin-functions).

        Подробнее о работе с изображениями — в разделе [Создание изображений](/ru/gigachat/guides/images-generation).
        
  /files/{file}/delete:
    post:
      tags:
        - files-storage
      parameters:
        - name: file
          description: Идентификатор файла, который нужно удалить
          schema:
            type: string
          in: path
          required: true
        - $ref: '#/components/parameters/xClientId'
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            giga = GigaChat(
                base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1",
                cert_file="./certs/clientcert.pem",         # Клиентский сертификат
                key_file="./certs/clientkey.key",          # Приватный ключ клиента
                key_file_password="<пароль>",   # Необязательный пароль для зашифрованного ключа
                verify_ssl_certs=False
            )

            response = giga.delete_file("<идентификатор_файла>")

            print(response)
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            const response = await giga.deleteFile('<идентификатор_файла>');

            console.log(response);
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileDeleted'
      security:
        - mTLSAuthentication: []
      operationId: fileDelete
      summary: Удалить файл
      description: Переводит статус файла в значение `deleted`.
  /models/{model}:
    get:
      tags:
        - models
      parameters: 
        - $ref: '#/components/parameters/xClientId'
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
        - name: model
          description: ID модели
          schema:
            type: string
          in: path
          required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Model'
          description: OK
        '400':
          description: Invalid model version
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NoSuchModel'
      security:
        - mTLSAuthentication: []
      operationId: getModel
      summary: Получить указанную модель
      description: Возвращает объект с описанием указанной модели.
  /v1/chat/completions:
    post:
      tags:
        - text-generation
      servers:
        - url: https://gigachat-ift.sberdevices.delta.sbrf.ru
          description: ИФТ
        - url: https://gigachat-psi.sberdevices.sigma.sbrf.ru
          description: ПСИ Sigma
        - url: https://gigachat-psi.sberdevices.ca.sbrf.ru
          description: ПСИ Alpha
        - url: https://gigachat.sberdevices.sigma.sbrf.ru
          description: ПРОМ Sigma
        - url: https://gigachat.sberdevices.omega.sbrf.ru
          description: ПРОМ Alpha
      parameters:
        - $ref: '#/components/parameters/xClientId'
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Chat'
            examples:
              Текст:
                value: {"model": "GigaChat","messages": [{"role": "system","content": "Ты — профессиональный переводчик на английский язык. Переведи точно сообщение пользователя."},{"role": "user","content": "GigaChat — это сервис, который умеет взаимодействовать с пользователем в формате диалога, писать код, создавать тексты и картинки по запросу пользователя."}],"stream": false,"update_interval": 0}
              Изображение:
                value: {  "model": "GigaChat",  "messages": [    {      "role": "system",      "content": "Ты — Василий Кандинский"    },    {      "role": "user",      "content": "Нарисуй розового кота"    }  ],  "function_call": "auto"}
              JSON-ответ:
                value: {    "model": "GigaChat-2-Max",    "messages": [        {            "content": "27 октября 2023 года у меня родился сын",            "role": "user"        }    ],    "response_format": {        "type": "json_schema",        "schema": {            "type": "object",            "properties": {                "date": {                    "type": "string",                    "description": "Дата в формате dd.mm"                },                "event": {                    "type": "string",                    "description": "Наименование события"                }            },            "required": ["date"]        },        "strict": true    }}
              Аргументы для функции:
                value: {    "model": "GigaChat-2-Pro",    "messages": [        {            "role": "user",            "content": "Погода в Манжероке на десять дней"        }    ],    "functions": [        {            "name": "weather_forecast",            "description": "Возвращает температуру на заданный период",            "parameters": {                "type": "object",                "properties": {                    "location": {                        "type": "string",                        "description": "Местоположение, например, название города"                    },                    "format": {                        "type": "string",                        "enum": [                            "celsius",                            "fahrenheit"                        ],                        "description": "Единицы измерения температуры"                    },                    "num_days": {                        "type": "integer",                        "description": "Период, для которого нужно вернуть"                    }                },                "required": [                    "location",                    "num_days"                ]            },            "few_shot_examples": [                {                    "request": "Какая погода в Москве в ближайшие три дня",                    "params": {                        "location": "Moscow, Russia",                        "format": "celsius",                        "num_days": "3"                    }                }            ],            "return_parameters": {                "type": "object",                "properties": {                    "location": {                        "type": "string",                        "description": "Местоположение, например, название города"                    },                    "temperature": {                        "type": "integer",                        "description": "Температура для заданного местоположения"                    },                    "forecast": {                        "type": "array",                        "items": {                            "type": "string"                        },                        "description": "Описание погодных условий"                    },                    "error": {                        "type": "string",                        "description": "Возвращается при возникновении ошибки. Содержит описание ошибки"                    }                }            }        }    ]}
              Структурный вывод (JSON): 
                value: {	"model": "GigaChat-2-Max",	"messages": [		{			"content": "27 октября 2023 года у меня родился сын",			"role": "user"		}	],	"response_format": {		"type": "json_schema",		"schema": {			"type": "object",			"properties": {				"date": {					"type": "string",					"description": "Дата в формате dd.mm"				},				"event": {					"type": "string",					"description": "Наименование события"				}			},			"required": ["date"]		},		"strict": true	}}
              Структурный вывод (RegEx): 
                value: {	"model": "GigaChat-2-Max",	"messages": [		{			"content": "27 октября 2023 года у меня родился сын",			"role": "user"		}	],	"response_format": {		"type": "regex",		"regex": "^(0[1-9]|[12][0-9]|3[01])\\.(0[1-9]|1[0-2])\\.(?:\\d{2}|\\d{4})$",		"strict": true	}}
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            giga = GigaChat(
                base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1",
                cert_file="./certs/clientcert.pem",         # Клиентский сертификат
                key_file="./certs/clientkey.key",          # Приватный ключ клиента
                key_file_password="<пароль>",   # Необязательный пароль для зашифрованного ключа
                verify_ssl_certs=False
            )

            response = giga.chat("Расскажи про себя")

            print(response)
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            giga.chat({
                messages: [
                  {
                     role: 'user',
                     content: 'Привет! Расскажи о себе в двух словах'
                  }
                ],
              })
              .then((resp) => {
                console.log(resp.choices[0]?.message.content);
              });
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletion'
              examples:
                Текст:
                  value: {"choices":[{"message":{"content":"GigaChat is a service capable of interacting with the user in a dialogue format, writing code, and creating texts and images upon user's request.","role":"assistant"},"index":0,"finish_reason":"stop"}],"created":1760434636,"model":"GigaChat:2.0.28.2","object":"chat.completion","usage":{"prompt_tokens":55,"completion_tokens":30,"total_tokens":85,"precached_prompt_tokens":4}}
                Изображение:
                  value: {"choices":[{"message":{"content":"<img src=\"3727db23-91a3-44fa-a6b7-9f0a311d3e9e\" fuse=\"true\"/> вот мой рисунок розового кота.","role":"assistant","functions_state_id":"0199e20f-058c-70c0-9850-6400dd41a853"},"index":0,"finish_reason":"stop"}],"created":1760434259,"model":"GigaChat:2.0.28.2","object":"chat.completion","usage":{"prompt_tokens":626,"completion_tokens":43,"total_tokens":669,"precached_prompt_tokens":3}}
                Аргументы для функции:
                  value: {    "choices": [        {            "message": {                "content": "",                "role": "assistant",                "function_call": {                    "name": "weather_forecast",                    "arguments": {                        "location": "Манжерок",                        "num_days": 10                    }                },                "functions_state_id": "0199e210-2f13-744c-8fe5-c9a19fe27db7"            },            "index": 0,            "finish_reason": "function_call"        }    ],    "created": 1760434335,    "model": "GigaChat-2-Pro:2.0.28.2",    "object": "chat.completion",    "usage": {        "prompt_tokens": 278,        "completion_tokens": 35,        "total_tokens": 313,        "precached_prompt_tokens": 0    }}
            text/event-stream:
              schema:
                type: string
                description: |
                  Событие формата [Server-Sent Events](https://html.spec.whatwg.org/multipage/server-sent-events.html).
                  Каждое событие содержит сообщение вида `data: <JSON-объект с фрагментом ответа модели>`.
                  В последнем событии приходит сообщение `data: [DONE]`.

                  Пример фрагмента:

                  ```json
                  {
                      "choices": [
                          {
                              "delta": {
                                  "content": "GigaChat is a service capable of interacting with the user in a dialogue format, writing code, and creating texts and images upon the user's request.",
                                  "role": "assistant"
                              },
                              "index": 0
                          }
                      ],
                      "created": 1754637655,
                      "model": "GigaChat:2.0.28.2",
                      "object": "chat.completion"
                  }
                  ```
                # Схема фрагмента ответа модели:
                # $ref: '#/components/schemas/ChatCompletionStream'
              example: |
                data: {"choices":[{"delta":{"content":"GigaChat is a service capable of interacting with the user in a dialogue format, writing code, and creating texts and images upon the user's request.","role":"assistant"},"index":0}],"created":1754637655,"model":"GigaChat:2.0.28.2","object":"chat.completion"}

                data: {"choices":[{"delta":{"content":""},"index":0,"finish_reason":"stop"}],"created":1754637655,"model":"GigaChat:2.0.28.2","object":"chat.completion","usage":{"prompt_tokens":56,"completion_tokens":31,"total_tokens":87,"precached_prompt_tokens":3}}

                data: [DONE]
          description: |
            Успешное выполнение запроса.
            При запуске [потоковой генерации](/ru/gigachat/guides/response-token-streaming) передается с заголовком `Content-Type:	text/event-stream`.
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NoSuchModel'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - mTLSAuthentication: []
      operationId: postChat
      summary: Сгенерировать ответ
      description: |
        Возвращает ответ модели, сгенерированный на основе переданных сообщений.
        Для экономии токенов передавайте текст сообщений (поле `content`) в кодировке UTF8.

        **Обработка файлов**

        Вы можете генерировать ответы на основе текстовых документов, изображений и аудиофайлов, загруженных в ваше хранилище.
        Для этого, передайте список идентификаторов нужных файлов в массиве `attachments`.

        При этом общий размер запроса с приложенными с изображениями и аудиофайлами должен быть меньше 80 Мб.

        Подробнее — в разделе [Обработка файлов](/ru/gigachat/guides/working-with-files#ispolzovanie-faylov-dlya-generatsii-otvetov).

        **Ограничения**

        Большие текстовые файлы могут превысить контекст модели.
        В таком случае API вернет ошибку с кодом 422.
        Попробуйте разбить их на несколько запросов или убрать лишнее.

        Одно сообщение (объект в `messages`) поддерживает только одно изображение.
        При этом в одном запросе можно отправить до 10 изображений, независимо от числа самих сообщений.
  /v2/chat/completions:
    post:
      tags:
        - text-generation
      servers:
        - url: https://gigachat-ift.sberdevices.delta.sbrf.ru
          description: ИФТ
        - url: https://gigachat-psi.sberdevices.sigma.sbrf.ru
          description: ПСИ Sigma
        - url: https://gigachat-psi.sberdevices.ca.sbrf.ru
          description: ПСИ Alpha
        - url: https://gigachat.sberdevices.sigma.sbrf.ru
          description: ПРОМ Sigma
        - url: https://gigachat.sberdevices.omega.sbrf.ru
          description: ПРОМ Alpha
      parameters:
        - $ref: '#/components/parameters/xClientId'
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionV2Request'
            examples:
              Генерация изображения:
                value: {  "model": "GigaChat-2-Max",  "messages": [    {      "role": "system",      "content": [        {          "text": "Ты — Василий Кандинский."        }      ]    },    {      "role": "user",      "content": [        {          "text": "Нарисуй розового слона."        }      ]    }  ],  "tool_config": {    "mode": "auto",    "tool_name": "image_generate"  },  "tools": [    {      "image_generate": {}    }  ]}
              Аргументы для функции:
                value: {    "model": "GigaChat-2-Max",    "messages": [        {            "role": "user",            "content": [                {                    "text": "Погода в Болхове на неделю"                }            ]        }    ],    "tool_config": {        "mode": "auto",        "function_name": "weather_forecast"    },    "tools": [        {            "functions": {                "specifications": [                    {                        "name": "weather_forecast",                        "description": "Прогноз погоды",                        "parameters": {                            "properties": {                                "location": {                                    "type": "string",                                    "description": "Местоположение, например, название города"                                },                                "num_days": {                                    "type": "integer",                                    "description": "Временной период прогноза"                                }                            }                        },                        "few_shot_examples": [                            {                                "request": "Погода в Москве в ближайшие три дня",                                "params": {                                    "location": "Moscow, Russia",                                    "num_days": 7                                }                            }                        ],                        "return_parameters": {                            "properties": {                                "location": {                                    "type": "string",                                    "description": "Местоположение, например, название города"                                }                            }                        }                    }                ]            }        }    ]}
              Принудительная генерация аргументов:
                value: {    "model": "GigaChat-2-Max",    "messages": [        {            "role": "user",            "content": [                {                    "text": "Как дела?"                }            ]        }    ],    "tool_config": {        "mode": "forced",        "function_name": "weather_forecast"    },    "tools": [        {            "functions": {                "specifications": [                    {                        "name": "weather_forecast",                        "description": "Прогноз погоды",                        "parameters": {                            "properties": {                                "location": {                                    "type": "string",                                    "description": "Местоположение, например, название города"                                },                                "num_days": {                                    "type": "integer",                                    "description": "Временной период прогноза"                                }                            }                        },                        "few_shot_examples": [                            {                                "request": "Погода в Москве в ближайшие три дня",                                "params": {                                    "location": "Moscow, Russia",                                    "num_days": 7                                }                            }                        ],                        "return_parameters": {                            "properties": {                                "location": {                                    "type": "string",                                    "description": "Местоположение, например, название города"                                }                            }                        }                    }                ]            }        }    ]}
              Структурный вывод (JSON):
                value: {  "model": "GigaChat-2-Max",  "messages": [    {      "role": "user",      "content": [        {          "text": "27 октября 2023 года у меня родился сын"        }      ]    }  ],  "model_options": {    "response_format": {      "type": "json_schema",      "schema": {        "type": "object",        "properties": {          "date": {            "type": "string",            "description": "Дата в формате dd.mm"          },          "event": {            "type": "string",            "description": "Наименование события"          }        },        "required": [          "date"        ]      },      "strict": true    }  }}
              Структурный вывод (RegEx):
                value: {  "model": "GigaChat-2-Max",  "messages": [    {      "role": "user",      "content": [        {          "text": "27 октября 2023 года у меня родился сын"        }      ]    }  ],	"stream": true,  "model_options": {    "response_format": {		"type": "regex",		"regex": "^(0[1-9]|[12][0-9]|3[01])\\.(0[1-9]|1[0-2])\\.(?:\\d{2}|\\d{4})$",		"strict": true	 }  }}
              Режим рассуждений:
                value: {  "model": "GigaChat-2-Max",  "messages": [    {      "role": "user",      "content": [        {          "text": "Сравни REST, GraphQL и gRPC для микросервисной архитектуры высоконагруженной системы. Учитывай производительность, удобство разработки и обратную совместимость."        }      ]    }  ],  "model_options": {    "reasoning": {      "effort": "medium"    }  }}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletionV2Response'
            text/event-stream:
              schema:
                type: string
                description: |
                  Событие формата [Server-Sent Events](https://html.spec.whatwg.org/multipage/server-sent-events.html).
                  Каждое событие содержит сообщение вида `data: <JSON-объект с фрагментом ответа модели>`.
                  В отличие от первой версии протокола, при окончании потока приходит сообщение с типом `response.message.done`, а не обычное сообщение с `data: [DONE]`.

                  Типы сообщений:

                  * `response.message.delta` — дельта изменений сообщения;
                  * `response.message.done` — последнее сообщение в потоке;
                     
                     Пример события:

                     ```sh
                     event: response.message.done
                     data: {"model":"GigaChat","created_at":"167890456789","finish_reason":"error","usage":{"input_tokens":0,"input_tokens_details":{"prompt_tokens":0,"cached_tokens":0},"output_tokens":0,"total_tokens":0}}
                     ```

                  * `response.tool.in_progress` — данные о выполнении инструмента (встроенной функции);
                  * `response.tool.completed` — информация о завершении выполнения инструмента (встроенной функции).
              example: |
                event: response.message.delta
                data: {"choices":[{"delta":{"content":"GigaChat is a service capable of interacting with the user in a dialogue format, writing code, and creating texts and images upon the user's request.","role":"assistant"},"index":0}],"created":1754637655,"model":"GigaChat:2.0.28.2","object":"chat.completion"}

                event: response.message.done
                data: {"choices":[{"delta":{"content":""},"index":0,"finish_reason":"stop"}],"created":1754637655,"model":"GigaChat:2.0.28.2","object":"chat.completion","usage":{"prompt_tokens":56,"completion_tokens":31,"total_tokens":87,"precached_prompt_tokens":3}}
          description: |
            Успешное выполнение запроса.
            При запуске [потоковой генерации](/ru/gigachat/guides/response-token-streaming) передается с заголовком `Content-Type:	text/event-stream`.
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NoSuchModel'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - mTLSAuthentication: []
      operationId: postChatV2
      summary: Сгенерировать ответ V2
      description: |
        Возвращает ответ модели, сгенерированный на основе переданных сообщений.
        Для экономии токенов передавайте текст сообщений (поле `content`) в кодировке UTF8.

        **Обработка файлов**

        Вы можете генерировать ответы на основе текстовых документов, изображений и аудиофайлов, загруженных в ваше хранилище.
        Для этого, передайте идентификаторы нужных файлов в сообщении с запросом, в массиве `content.files` сообщения пользователя.

        **Ограничения**

        Большие текстовые файлы могут превысить контекст модели.
        В таком случае API вернет ошибку с кодом 422.
        Попробуйте разбить их на несколько запросов или убрать лишнее.

        Одно сообщение (объект в `messages`) поддерживает только одно изображение.
        При этом в одном запросе можно отправить до 10 изображений, независимо от числа самих сообщений.
  /ai/check:
    post:
      tags:
        - misc-features
      parameters:
        - $ref: '#/components/parameters/xClientId'
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/aiCheck'
      x-codeSamples:
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            const response = await giga.aiCheck('<текст_для_проверки>', '<название_модели>');

            console.log(response);
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aiCheckResponse'
              example: {"category": "mixed",  "characters": 500,  "tokens": 38,  "ai_intervals": [    [0, 100],    [150, 200]  ]}
          description: OK
      security:
        - mTLSAuthentication: []
      operationId: postAiCheck
      summary: Проверить текст на ИИ
      description: |
        Проверяет текст на русском языке на наличие сгенерированного с помощью нейросетевых моделей контента.
        Минимальная длина текста — 20 слов.

        Метод доступен только для юридических лиц, которые работают по схеме оплаты [pay-as-you-go](/ru/gigachat/api/tariffs#oplata-pay-as-you-go).
  /embeddings:
    post:
      tags:
        - embeddings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmbeddingsBody'
      x-codeSamples:
        - lang: "Python"
          label: "gigachat"
          source: |
            """
            Установите SDK:

            pip install gigachat
            """
            from gigachat import GigaChat

            giga = GigaChat(
                base_url="https://gigachat-ift.sberdevices.delta.sbrf.ru/v1",
                cert_file="./certs/clientcert.pem",         # Клиентский сертификат
                key_file="./certs/clientkey.key",          # Приватный ключ клиента
                key_file_password="<пароль>",   # Необязательный пароль для зашифрованного ключа
                verify_ssl_certs=False
            )

            response = giga.embeddings(["Hello world!"])

            print(response)
        - lang: "JavaScript"
          label: "gigachat"
          source: |
            /**
             * Установите библиотеку gigachat с помощью менеджера пакетов npm:
             * 
             * npm install gigachat
             */
            import GigaChat from 'gigachat';
            import { Agent } from 'node:https';
            import fs from 'node:fs';

            const httpsAgent = new Agent({
              cert: fs.readFileSync('./certs/clientcert.pem'),  // Клиентский сертификат
              key: fs.readFileSync('./certs/clientkey.key'), // Приватный ключ клиента
              passphrase: '<пароль>', // Необязательный пароль для зашифрованного ключа
              rejectUnauthorized: false,
            });

            const giga = new GigaChat({
              baseUrl: 'https://gigachat-ift.sberdevices.delta.sbrf.ru/v1',
              httpsAgent: httpsAgent,
            });

            const response = await giga.embeddings(['Слова слова слова']);

            console.log(response.data);
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Embedding'
          description: OK
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      security:
        - mTLSAuthentication: []
      operationId: postEmbeddings
      summary: Создать эмбеддинг
      description: |
        Возвращает векторные представления соответствующих текстовых запросов. Индекс объекта с векторным представлением (поле `index`) соответствует индексу строки в массиве `input` запроса.

        Векторное представление выглядит как массив чисел `embedding`. Каждое значение в массиве представляет одну из характеристик или признаков текста, учтенных при вычислении эмбеддинга. Значения образуют числовое представление текста и позволяют анализировать и использовать текст в различных задачах. Как правило, чем ближе значения эмбеддингов друг к другу, тем более семантически близки тексты.

        Для создания эмбеддингов можно использовать модели для векторного представления текста (`"type": "embedder"`).
        Запросы тарифицируются одинаково, независимо от использованной модели.

        :::tip

        Для улучшения результатов при работе с моделью EmbeddingsGigaR следуйте рекомендациям в разделе [Векторное представление текста](/ru/gigachat/guides/embeddings#embeddingsgigar-recommendations).

        :::
  /batches:
    get:
      tags:
        - batches
      parameters:
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
        - $ref: '#/components/parameters/xClientId'
        - name: Content-Type
          in: header
          required: true
          schema:
            type: string
            default: application/json
        - name: batch_id
          description: |
            Идентификатор ранее загруженной пакетной задачи.
          schema:  
            type: string
          in: query
          required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchesList'
          description: OK
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/BatchTaskNotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - mTLSAuthentication: []
      operationId: getBatches
      summary: Статус пакетной задачи
      description: |
        Возвращает информацию о существующих задачах для асинхронной обработки. Если у пользователя нет задач, возвращается пустой список. Если передан path-параметр `batch_id`, отобразится информация о конкретной задаче.
    post:
      tags:
        - batches
      parameters:
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
        - name: method
          in: query
          schema:
            type: string
            description: Имя метода, в который далее пойдет запрос на выполнение (`chat_completions` или `embedder`).
            enum:
              - chat_completions
              - embedder
      requestBody:
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
                description: Файл в формате `jsonl`, содержащий перечень задач. Структура файла описана в разделе [Обработка задач в пакетном режиме](/ru/gigachat/guides/batches).
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponse'
          description: OK
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - mTLSAuthentication: []
      operationId: postBatches
      summary: Пакет запросов
      description: |
        Создает задачу на обработку большого пакета запросов в асинхронном режиме.
        
        Запрос принимает файл формата JSONL.
        Каждая строка в файле должна содержать валидный JSON-объект с запросом на [генерацию](/ru/gigachat-b2bank/api/reference/rest/post-chat) или [векторное представление текста](/ru/gigachat-b2bank/api/reference/rest/post-embeddings).

        Подробнее — в разделе [Обработка задач в пакетном режиме](/ru/gigachat/guides/batches).

        :::note

        Пакетный режим доступен при оплате работы с GigaChat API по схеме pay-as-you-go.

        :::
  /functions/validate:
    post:
      parameters:
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFunction'
      tags:
        - functions
      responses:
        '200':
          description: |
            Результат валидации функции.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FunctionValidationResult'
        '400':
          $ref: '#/components/responses/BadRequestFormat'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - mTLSAuthentication: []
      operationId: functionValidation
      summary: Валидировать функцию
      description: |
        Проверяет переданное описание функции на соответствие формату функций GigaChat.
        
        Пример описания функции GigaChat — в массиве `functions`, в запросе # START_RAW<APIMethod type="POST" path="/chat/completions" link="/ru/gigachat-b2bank/api/reference/rest/post-chat"/># END_RAW.

        Метод принимает описание функции в формате JSON.
        
        В результате проверки возвращается массив ошибок и предупреждений, которые нужно исправить, чтобы описание функции соответствовало формату GigaChat.

        # START_RAW
        <details>
        <summary>Пример описания функции в формате JSON Schema</summary>
        # END_RAW

        ```json
        {
            "name": "send_sms",
            "description": "Отправка SMS контакту по ID",
            "parameters": {
                "type": "object",
                "properties": {
                    "contactId": {
                        "description": "ID контакта",
                        "format": "int32",
                        "type": "integer"
                    },
                    "text": {
                        "description": "Текст SMS",
                        "minLength": 1,
                        "type": "string"
                    },
                    "version": {
                        "description": "Описание параметра - версия API",
                        "type": "string"
                    }
                },
                "required": [
                    "version",
                    "contactId",
                    "text"
                ]
            },
            "return_parameters": {
                "type": "object",
                "properties": {
                    "description": {
                        "description": "Описание статуса",
                        "nullable": true,
                        "type": "string"
                    },
                    "phone": {
                        "description": "Номер: маска + 2 последние цифры номера",
                        "nullable": true,
                        "type": "string"
                    },
                    "status": {
                        "description": "Отправлено/не отправлено",
                        "type": "boolean"
                    }
                }
            },
            "few_shot_examples": [
                {
                    "request": "Отправь SMS контакту с ID 111111 с текстом Hello World",
                    "params": {
                        "contactId": "111111",
                        "text": "Hello world"
                    }
                }
            ]
        }
        ```
        # START_RAW
        </details>
        # END_RAW

        Подробнее — в разделе [Работа с функциями](/ru/gigachat/guides/functions/overview).
  /convert:
    post:
      parameters:
        - in: header
          name: x-file-size
          required: true
          description: Размер файла в байтах.
          schema:
            type: integer
            example: 183510
        - in: header
          name: x-file-id
          required: true
          description: |
            Идентификатор файла в хранилище.
          schema:
            type: string
            format: UUIDv4
            example: 2ba476fb-0057-46d6-92ec-e3f0a7302388
        - in: header
          name: x-file-name
          required: true
          description: Имя файла.
          schema:
            type: string
            example: my-file.pdf
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
        - $ref: '#/components/parameters/xClientId'
      tags:
        - misc-features
      requestBody:
        description: Бинарное содержимое файла для конвертации.
        required: true
        content:
          application/pdf:
            schema:
              type: string
              format: binary
      x-codeSamples:
        - lang: "cURL"
          source: |
            curl --location 'https://gigachat.ift.sberdevices.ru/v1/convert' \
            --header 'x-file-size: 183510' \
            --header 'x-file-id: 2ba476fb-0057-46d6-92ec-e3f0a7302388' \
            --header 'x-file-name: Памятка туристу.pdf' \
            --header 'Content-Type: application/pdf' \
            --data-binary '@/Documents/Памятка туристу.pdf'
      responses:
        '200':
          description: |
            Результат конвертации файла.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConvertResult'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - mTLSAuthentication: []
      operationId: postFileConvert
      summary: Конвертировать документ
      description: |
        Возвращает текст, полученный из переданного файла: текстового документа, изображения или таблицы.
        В зависимости от типа файла для извлечения текста может использоваться OCR.
        Например, при работе с PDF проверяется наличие текстового слоя.
        И если количество текста в документе не превышает порогового значения, то страницы будут распознваться с помощью OCR.

        Эндпоинт доступен по дополнительному согласованию.
        
        Если переданный MIME-тип не поддерживается, вернется ошибка с кодом 500: `unsupported file mimeType value: <переданный MIME-тип>`.
        
        <details>
          <summary>Поддерживаемые форматы</summary>
          | Формат | MIME-тип                                                                                                                                                    |
          | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
          | Текст  | text/plain                                                                                                                                                  |
          | PDF    | application/pdf                                                                                                                                             |
          | doс    | application/msword                                                                                                                                          |
          | docx   | application/vnd.openxmlformats-officedocument.wordprocessingml.document                                                                                     |
          | odt    | application/vnd.oasis.opendocument.text                                                                                                                     |
          | odp    | mime-type , application/vnd.oasis.opendocument.presentation                                                                                                 |
          | ppt    | application/vnd.ms-powerpoint                                                                                                                               |
          | pptx   | application/vnd.openxmlformats-officedocument.presentationml.presentation                                                                                   |
          | ods    | application/vnd.oasis.opendocument.spreadsheet                                                                                                              |
          | csv    | text/csv                                                                                                                                                    |
          | tsv    | text/tab-separated-values                                                                                                                                   |
          | epub   | application/epub+zip                                                                                                                                        |
          | xls    | application/vnd.ms-excel                                                                                                                                    |
          | xlsx   | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet                                                                                           |
          | mobi   | application/x-mobipocket-ebook                                                                                                                              |
          | fb2    | text/xml + .fb2 (extension)<br />application/x-fictionbook+xml<br />application/x-fictionbook<br />application/fb2<br />text/fb2+xml<br />application/x-fb2 |
          | jpeg   | image/jpeg                                                                                                                                                  |
          | jpg    | image/jpeg                                                                                                                                                  |
          | png    | image/png                                                                                                                                                   |
          | bmp    | image/bmp                                                                                                                                                   |
          | webp   | image/webp                                                                                                                                                  |
          | tiff   | image/tiff                                                                                                                                                  |
          | tif    | image/tiff                                                                                                                                                  |
          | gif    | image/gif                                                                                                                                                   |
          | svg    | image/svg+xml                                                                                                                                               |
          | json   | application/json                                                                                                                                            |
          | jsonl  | application/jsonl                                                                                                                                           |
          | xml    | application/xml                                                                                                                                             |
        </details>
  /image/generate:
    post:
      summary: Сгенерировать изображение
      description: |
        Возвращает изображение, сгенерированное в соответствии с текстовым описанием и переданными параметрами.

        Чтобы использовать эндпоинт, [получите доступ к Kandinsky](https://confluence.sberbank.ru/pages/viewpage.action?pageId=21199781890).
      operationId: postImageGenerate
      tags:
        - misc-features
      parameters:
        - $ref: '#/components/parameters/xClientId'
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageGenerationRequest'
      responses:
        '200':
          description: Изображение успешно сгенерировано.
          content:
            application/octet-stream:
              schema:
                type: string
        '400':
          description: Некорректный запрос. Например, ошибка валидации параметров.
        '500':
          description: Внутренняя ошибка сервера.
  /instructions/generate:
    post:
      summary: Создать промпт
      description: |
        Возвращает строку с системной инструкцией (промптом), созданной для заданной модели на основе переданного описания.
        Кроме инструкции ответ содержит рекомендации по ее улучшению, а также описание размышлений модели.
      operationId: generateInstruction
      tags:
        - misc-features
      parameters:
        - $ref: '#/components/parameters/xClientId'
        - $ref: '#/components/parameters/xRequestId'
        - $ref: '#/components/parameters/xSessionId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstructionRequest'
      responses:
        '200':
          description: Системная инструкция или стандартный ответ при срабатывании фильтра.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstructionResponse'
              examples:
                Системная инструкция:
                  value:
                    finish_reason: "stop"
                    content: "<start_thinking>\n\n### Выявление основных требований из запроса пользователя:\nПользователь хочет получить инструкцию для решения задач по генерации стихов.\n\n### Критический анализ:\n1. Неясности в запросе:\n   - Не указано, является ли задача творческой или технической.\n   - Нет информации о жанре, стиле или тематике стихотворений.\n   \n2. Потенциальные улучшения:\n   - Добавить раздел о выборе жанра и стиля.\n   - Включить рекомендации по структуре стиха.\n   - Предложить подходы к генерации рифм и образов.\n   \n3. Отсутствие значимой информации:\n   - Нет указаний на целевую аудиторию или уровень сложности.\n   - Нет примеров желаемых результатов.\n\n### Финальные рассуждения для создания system_prompt:\n1. План:\n   - Определить роль модели как наставника по созданию стихов.\n   - Описать процесс генерации стихов шаг за шагом.\n   - Включить рекомендации по выбору жанра и стиля.\n   - Предложить методы для развития творческих навыков.\n\n2. Критика плана:\n   - Необходимо убедиться, что каждый шаг четко описан и понятен.\n   - Важно учесть возможность адаптации системы под разные жанры и стили.\n   - Следует добавить примеры для иллюстрации каждого шага.\n\n<end_thinking>\n\n<start_system_prompt>\n\n# Ты - наставник по созданию стихов. Твоя задача - помогать пользователям генерировать стихи различных жанров и стилей.\n\n## Инструкция\n1. Определение цели и аудитории:\n   - Задайте конкретную цель написания стихотворения (праздничный подарок, выражение эмоций, создание поэтического произведения для публикации и т.д.).\n   - Определите целевую аудиторию стихотворения (родственники, друзья, широкая публика и т.д.).\n\n2. Выбор жанра и стиля:\n   - Перечислить популярные жанры поэзии (элегия, сонет, хокку, баллада и др.).\n   - Обсудить различные литературные стили (классический, романтический, символический и т.д.).\n   - Рекомендации по соответствию жанра стилю и цели стихотворения.\n\n3. Разработка идеи и сюжета:\n   - Предложить метод мозгового штурма для генерации идей.\n   - Дать советы по развитию сюжетной линии и построению композиции стихотворения.\n\n4. Создание первых черновиков:\n   - Объяснить важность свободного письма и отсутствия критики на этапе создания черновика.\n   - Подсказать, как организовать работу над несколькими вариантами одного стихотворения.\n\n5. Работа над формой и стилем:\n   - Обучить использованию ритмов и метрик в стихосложении.\n   - Показать техники улучшения звучания стихотворения через подбор слов и фраз.\n\n6. Редактирование и корректура:\n   - Подробно объяснить этапы редактирования и исправления ошибок.\n   - Рекомендовать использование инструментов проверки орфографии и пунктуации.\n\n7. Оценка и получение обратной связи:\n   - Предложить способы оценки собственного прогресса.\n   - Рассказать, как получать конструктивную критику и использовать её для улучшения стихотворений.\n\n## Формат ответа\nКаждый этап должен быть представлен отдельным пунктом с подзаголовком. Внутри каждого этапа приводится подробное объяснение шагов, которые необходимо предпринять. Примерный объем одного пункта – около 100-150 слов. Для лучшего понимания рекомендуется включать конкретные примеры из известных произведений литературы.\n\n<end_system_prompt>\n\n<start_recommendations>\n\nДля улучшения system prompt можно рассмотреть следующие направления:\n\n1. Четкость и однозначность:\n   - Текущий system prompt уже достаточно четкий, однако можно усилить ясность некоторых терминов, таких как \"метрика\" и \"ритм\".\n\n2. Контекст и ограничения:\n   - Добавить указание на то, что система предназначена для пользователей любого уровня подготовки.\n   - Уточнить, что система подходит как для начинающих, так и для опытных авторов.\n\n3. Полнота информации:\n   - Расширить раздел о получении обратной связи, включив рекомендации по взаимодействию с литературными сообществами.\n   - Добавить информацию о возможных темах для стихотворений в зависимости от целевой аудитории.\n\n4. Структура и читаемость:\n   - Текущая структура хорошо организована, однако можно добавить больше визуальных разделителей между основными разделами.\n\n5. Способы управления моделью:\n   - Добавить инструкцию о том, как выбрать подходящий жанр и стиль в зависимости от настроения и темы стихотворения.\n   - Включить пример выбора жанра и стиля для конкретной ситуации.\n\n6. Адаптация под разные сценарии:\n   - Рассмотреть включение советов по написанию стихотворений на определенную дату или событие.\n\n7. Потенциальные уязвимости:\n   - Добавить предупреждение о недопустимости плагиата и заимствования чужих идей без должного признания авторства.\n\n8. Логика и согласованность:\n   - Текущая логика последовательна и логична, однако можно подчеркнуть важность творческого подхода наряду с техническими навыками.\n\nЭти рекомендации помогут сделать систему более полной, адаптивной и полезной для широкого круга пользователей.\n\n<end_recommendations>"
                Тематические ограничения:
                  value:
                    finish_reason: "request_filter"
                    content: "Как и любая языковая модель, GigaChat не обладает собственным мнением и не транслирует мнение своих разработчиков. Ответ сгенерирован нейросетевой моделью, обученной на открытых данных, в которых может содержаться неточная или ошибочная информация. Во избежание неправильного толкования, разговоры на некоторые темы временно ограничены."
components:
  parameters:
    xClientId:
      name: X-Client-ID
      in: header
      description: |
        Произвольный идентификатор пользователя.
        Используется для логирования и [ограничения доступа к файлам](/ru/gigachat/guides/working-with-files#dostup-k-failam).

        Если вы передали этот заголовок при запросе на создание изображения, то для скачивания изображения в запросе # START_RAW<APIMethod type="GET" path="/files/{file_id}/content" link="/ru/gigachat-b2bank/api/reference/rest/get-file-id"></APIMethod># END_RAW нужно передать этот же заголовок.
      schema:
        type: string
    xRequestId:
      in: header
      name: X-Request-ID
      description: |
        Произвольный идентификатор запроса, который используется для логирования.
        Если не передан явно, GigaChat API автоматически сгенерирует идентификатор в формате UUIDv4.
      schema:
        type: string
        example: my-request-id-1
    xSessionId:
      in: header
      name: X-Session-ID
      description: |
        Произвольный идентификатор сессии, который используется для логирования.
        Если не передан явно, GigaChat API автоматически сгенерирует идентификатор в формате UUIDv4.
      schema:
        type: string
        example: my-session-id-1
  schemas:
    ImageGenerationRequest:
      type: object
      required:
        - mode
        - query
      properties:
        mode:
          type: string
          description: |
            Режим генерации и версия модели.
            Возможные значения:
            
            * `kandinsky-3.1:image`;
            * `kandinsky-4.1:image`;
            * `kandinsky-5.0:image`. 

          example: kandinsky-3.1:image
        query:
          type: string
          description: Текстовое описание изображения.
          example: Нарисуй котика.
        model_params:
          $ref: '#/components/schemas/ModelParams'
    InstructionRequest:
      type: object
      required:
        - model
        - input
      properties:
        model:
          type: string
          description: |
            Модель для генерации (`"type": "chat"`).
            
            Для получения списка актуальных моделей используйте метод [`GET /v1/models`](/ru/gigachat-b2bank/api/reference/rest/get-models).
          example: GigaChat-2
        input:
          type: string
          description: Текст, на основе которого создается системная инструкция.
          example: Напиши, пожалуйста, инструкцию для решения задач по генерации стихов.
    InstructionResponse:
      type: object
      properties:
        finish_reason:
          type: string
          description: |
            Причина завершения генерации.
            Возможные значения:
            
            * `stop` — системная инструкция сгенерирована успешно;
            * `request_blacklist` — запрос пользователя подпадает под тематические ограничения.
          enum:
            - stop
            - request_blacklist
        content:
          type: string
          example: "<start_thinking>\n\n### Выявление основных требований из запроса пользователя:\nЗапрос очень простой и абстрактный - всего лишь утверждение \"Ты конь\". Это скорее игривое начало разговора, нежели конкретная задача.\n\n### Критический анализ:\n1. Неясности в запросе:\n   - Запрос слишком неопределённый и не содержит конкретной цели или задачи.\n   \n2. Потенциальные улучшения:\n   - Добавить больше контекста или уточнить роль, чтобы система могла реагировать осмысленно.\n   - Определить, какую именно роль должен выполнять \"конь\" в данном контексте.\n   \n3. Отсутствие значимой информации:\n   - Отсутствуют указания на ситуацию или контекст использования.\n\n### Финальные рассуждения для создания system_prompt:\n1. План:\n   - Определить роль \"коня\"\n   - Создать систему, которая позволит вести разговор в стиле коня\n   - Включить юмор и игривость в tone\n2. Критика плана:\n   - Система должна быть адаптивной и учитывать возможные последующие запросы пользователя\n   - Необходимо четко указать, как модель должна взаимодействовать с пользователем\n3. Создание system_prompt:\n   - Роль должна быть ясной и интересной\n   - Должны быть указаны конкретные инструкции по стилю общения\n   - Важно учесть возможность расширения взаимодействия\n\n<end_thinking>\n\n<start_system_prompt>\n\n# Ты - говорящий конь по имени Кэш\n\nТы - говорящий конь по имени Кэш. Ты обладаешь острым умом, чувством юмора и любишь общаться с людьми. Несмотря на то, что ты животное, ты понимаешь человеческий язык и можешь поддерживать полноценный диалог. Однако твой взгляд на мир отличается от человеческого, поэтому твои ответы часто содержат элементы абсурда, юмора и неожиданных поворотов.\n\n## Инструкции\n- Всегда начинай с приветствия в стиле коня (\"Га-га-галоп!\")\n- Поддерживай разговор в игривом и веселом тоне\n- Используй образ коня в своих ответах, например, упоминания о гриве, копытах, лошадином образе жизни\n- Если пользователь задает вопрос или предлагает тему, реагируй на неё с юмором и креативностью\n- Старайся избегать серьезных тем и глубоких философских дискуссий\n- Если пользователь спрашивает о твоей внешности или поведении, отвечай с элементами фантазии и юмора\n\n## Формат ответа\nОтвечай всегда в форме диалога, используя стиль речи коня. Например:\n```\nГа-га-галоп!\nЯ тут бегаю по полям и лугам, иногда заглядываю в интернет. Что интересного у тебя сегодня произошло?\n``` \n\n## Примечания\n- Не забывай, что ты говоришь с человеком, поэтому используй человеческий язык\n- Избегай длинных монологов, лучше отвечай короткими предложениями\n- Если пользователь начинает говорить о серьёзных вещах, мягко переводи разговор в более лёгкую плоскость\n\n<end_system_prompt>\n\n<start_recommendations>\n\nДля улучшения system prompt можно рассмотреть следующие рекомендации:\n\n1. Четкость и однозначность:\n   - Prompt уже достаточно чёткий, однако можно усилить акцент на том, что Кэш - говорящий конь, живущий в современном мире.\n\n2. Контекст и ограничения:\n   - Добавить указание на эпоху или место обитания Кэша (например, современный город или ферма будущего).\n\n3. Полнота информации:\n   - Можно добавить больше деталей о внешнем виде или привычках Кэша, чтобы пользователи могли легче представить его.\n\n4. Структура и читаемость:\n   - Структура prompt хорошая, легко читаемая и логичная.\n\n5. Способы управления моделью:\n   - Добавить инструкцию о том, как реагировать на попытки пользователя заставить Кэша делать что-то противоестественное для лошади.\n\n6. Адаптация под разные сценарии:\n   - Prompt хорошо подходит для простого игрового взаимодействия, но можно расширить его, добавив варианты реакции на различные типы пользователей.\n\n7. Потенциальные уязвимости:\n   - Добавить предупреждение о том, что Кэш не является настоящим животным и не может выполнять физические действия.\n\n8. Логика и согласованность:\n   - Prompt логичен и последователен, соответствует заявленной роли.\n\nЭти рекомендации помогут сделать взаимодействие с системой более интересным и безопасным.\n\n<end_recommendations>"
          description: |
            При успешном выполнении запроса (`"finish_reason": "stop"`) возвращает ответ в форме:

            ```
            <start_thinking> Описание размышления. <end_thinking>\n\n
            <start_system_prompt> Системная инструкция. <end_system_prompt>\n\n
            <start_recommendations> Рекомендации по улучшению инструкции. <end_recommendations>
            ```
            
            Если запрос подпадает под ограничения (`"finish_reason": "request_blacklist"`), возвращается стандартный ответ.
    ModelParams:
      type: object
      description: Параметры модели.
      properties:
        width:
          type: integer
          description: |
            Ширина изображения в пикселях.

            Возможные значения для `kandinsky-3.1:image`:
            
            * 1024;
            * 1080;
            * 1920.
            
            Возможные значения для `kandinsky-4.1:image`:
            
            * 512;
            * 768;
            * 1024;
            * 1344;
            * 1088;
            * 1920.

          example: 1024
        height:
          type: integer
          description: |
            Высота изображения в пикселях.

            Возможные значения для `kandinsky-3.1:image`:
            
            * 1024;
            * 1080;
            * 1920.
            
            Возможные значения для `kandinsky-4.1:image`:
            
            * 512;
            * 768;
            * 1024;
            * 1344;
            * 1088;
            * 1920.
          example: 1024
        style:
          type: string
          description: |
            Стиль генерации.
            Поддерживаемые стили отличаются в зависимости от выбранной модели.

            Список стилей для `kandinsky-3.1:image`:

            * `no_style`;
            * `4k`;
            * `anime`;
            * `portrait`;
            * `picasso`;
            * `pencil_drawing`;
            * `khokhloma`;
            * `malevich`;
            * `kandinsky`;
            * `high_quality_art`;
            * `mosaic`;
            * `cartoon`;
            * `classicism`;
            * `3d_render`;
            * `artstation`;
            * `christmas`;
            * `professional_studio`;
            * `oil_painting`;
            * `aivazovsky`;
            * `soviet_cartoon`;
            * `renaissance`;
            * `christian_icon`;
            * `goncharova`.

            Список стилей для `kandinsky-4.1:image`:

            * все стили из списка для `kandinsky-3.1:image`;
            * `watercolor`;
            * `levitan`;
            * `gel_pen`;
            * `sumie`;
            * `gzhel`;
            * `zhostovo`;
            * `felt_tip_pen`;
            * `art_deco`;
            * `lubok`.

          example: realistic
        negative_prompt:
          type: string
          description: |
            Описание цветов и приемов, которые модель не должна использовать при генерации изображения.

            Работает только для `kandinsky-3.1:image`.
          example: 'Тусклые цвета, серые тона, низкая яркость и контрастность'
        lora_name:
          type: string
          description: Название LoRA-модели, если используется дополнительная адаптация.
          example: ""
        censor:
          $ref: '#/components/schemas/CensorParams'
    CensorParams:
      type: object
      description: Параметры цензуры.
      properties:
        preset:
          type: string
          description: Название конфигурации цензуры.
          example: "rudalle"
        text_censor:
          type: boolean
          description: |
            Отключение цензуры текста в изображении.

            Возможность отключения согласуется отдельно.
          default: true
        visual_censor:
          type: boolean
          description: |
            Отключение визуальной цензуры.

            Возможность отключения согласуется отдельно.
          example: false
    ConvertResult:
      type: object
      required:
        - converterVersion
        - content
        - target
        - encodedFile
      properties:
        converterVersion:
          type: string
          description: Версия конвертера.
          example: gigaconverter_v1.0
        fileId:
          type: string
          format: UUIDv4
          description: Идентификатор файла.
          example: 01716dcb-fbe3-4a73-921c-859649200512
        content:
          type: array
          description: Результат конвертации.
          items:
            oneOf:
              - $ref: '#/components/schemas/FileConversionTextContent'
              - $ref: '#/components/schemas/FileConversionFileContent'
        partial:
          type: boolean
          description: |
            Указывает, что файл конвертирован полностью (`false`), либо частично (`true`). 

            Файл может конвертироваться частично, если результат конвертации превышает ограничение в пять тысяч токенов.
          example: false
    FileConversionTextContent:
      type: object
      properties:
        text:
          type: string
          description: Распознанный текст.
          example: Распознанный текст.
      required:
        - text
    FileConversionFileContent:
      type: object
      description: Файл
      properties:
        file:
          type: object
          required:
            - target
            - encodedFile
          description: Файл
          properties:
            target:
              type: string
              description: Назначение файла.
              enum: 
                - image
                - video
              example: image
            encodedFile:
              type: string
              format: byte
              description: Файл, закодированный в base64.
              example: /9j/4AAQSkZJRgABAQEASABIAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2M
      required:
        - file
    FunctionValidationResult:
      type: object
      description: Объект с результатом валидации функции, описанной в формате JSON.
      properties:
        status:
          type: integer
          default: 200
          description: HTTP-код ответа.
        message:
          type: string
          description: |
            Сообщение о результате валидации функции.
            Возможные значения:

            * `Function is valid` — описание функции полностью соответствует формату GigaChat API или содержит незначительные проблемы (блок `warnings`).
            * `Incorrect function syntax` — описание функции не соответствует формату GigaChat API (ответ содержит блок `errors`).
          enum:
            - Function is valid
            - Incorrect function syntax
        json_ai_rules_version:
          type: string
          description: |
            Версия правил, которые используются для валидации функции.

            Передается, если запрос содержит описание функции в формате JSON.
          example: 1.0.5
        errors:
          description: |
            Массив с описанием ошибок, возникших при валидации функции.
            В отличие от предупреждений ошибки возникают, когда описание функции нарушает формат GigaChat API.
            Например, если в описании отсутствуют обязательные блоки `name` или `parameters`.

            Если в описании функции есть ошибки (массив `errors`), то предупреждения (массив `warnings`) не передаются.

            Перед отправкой функции в запросе # START_RAW<APIMethod type="POST" path="/chat/completions" link="/ru/gigachat-b2bank/api/reference/rest/post-chat"/># END_RAW ошибки нужно исправить.
          type: array
          items:
            type: object
            properties:
              description:
                type: string
                description: Описание ошибки.
                example: name is required
              schema_location:
                type: string
                description: Указывает, где в схеме нужно внести изменения, чтобы исправить ошибку.
                example: (root)
        warnings:
          description: |
            Массив с описанием предупреждений, возникших при валидации функции.
            В отличие от предупреждений ошибки возникают, когда описание функции нарушает формат GigaChat API.
            Например, если в описании отсутствует необязательный массив образцов `few_shot_examples are missing`.

            Предупреждения (массив `warnings`) не передаются, если в описании функции есть ошибки (массив `errors`).
          type: array
          items:
            type: object
            properties:
              description:
                type: string
                description: Описание предупреждения.
                example: few_shot_examples are missing
              schema_location:
                type: string
                description: Указывает, где в схеме нужно внести изменения, чтобы исправить предупреждения.
                example: (root)
    CustomFunctions:
      type: 
        - "null"
        - "array"
      description: Массив с описанием пользовательских функций.
      items:
        $ref: '#/components/schemas/CustomFunction'
    CustomFunction:
      description: Описание пользовательской функции.
      type: object
      required:
        - "name"
        - "parameters"
      properties:
        name:
          type: string
          description: |
            Название пользовательской функции, для которой будут сгенерированы аргументы.

            # START_RAW
            <Admonition type="caution">
            # END_RAW

            Название функции должно содержать только латинские буквы.
            Название функции не должно начинаться с цифры.

            # START_RAW
            </Admonition>
            # END_RAW
          example: weather_forecast
        description:
          type: string
          description: Текстовое описание функции.
          example: Прогноз погоды
        parameters:
          type: object
          properties: {}
          description: Валидный JSON-объект с набором пар `ключ-значение`, которые описывают аргументы функции.
          example: {"properties": {          "location": {            "type": "string",            "description": "Местоположение, например, название города"          }        }}
        few_shot_examples:
          type: array
          description: |
            Объекты с парами `запрос_пользователя`-`параметры_функции`, которые будут служить модели примерами ожидаемого результата.
          items:
            type: object
            required:
              - "request"
              - "params"
            properties:
              request:
                type: string
                description: Запрос пользователя.
                example: Погода в Москве в ближайшие три дня
              params:
                type: object
                description: Пример заполнения параметров пользовательской функции.
                properties: {}
                example:  {            "location": "Moscow, Russia",          }
        return_parameters:
          type: object
          description: JSON-объект с описанием параметров, которые может вернуть ваша функция.
          properties: {}
          example: {"properties": {          "location": {            "type": "string",            "description": "Местоположение, например, название города"          }        }}
    BatchesList:
      type: object
      properties:
        batches:
          type: array
          description: Список пакетных задач.
          items:
            type: object
            properties:
              id:
                type: string
                description: Идентификатор созданной пакетной задачи.
              method:
                type: string
                enum:
                  - chat_completions
                  - embedder
                description: Имя метода, в который далее пойдет запрос на выполнение.
              request_counts:
                type: object
                description: Количество запросов внутри пакетной задачи.
                items:
                  type: object
                  properties:
                    total:
                      type: integer
                      description: Общее количество запросов. 
                      default: 0
                    completed:
                      type: integer
                      description: Количество обработанных запросов.
                      default: 0
                    failed:
                      type: integer
                      description: Количество ошибочных запросов.
                      default: 0
              status:
                type: string
                description: Статус обработки файла. 
                enum:
                  - created
                  - in_progress
                  - completed
              output_file_id:
                 type: string
                 description: Идентификатор файла с результатами обработки пакета запросов. Заполняется, если status = completed. Cкачать результат можно с помощью метода `get file/{file_id}/content`.
              created_at:
                type: integer
                description: Время создания файла в формате unix timestamp.
                format: unix timestamp
              updated_at:
                type: integer
                description: Время обновления файла в формате unix timestamp.
                format: unix timestamp 
    BatchResponse:
      type: object
      properties:
        id:
          description: |
            Идентификатор созданной пакетной задачи.
          type: string
        method:
          description: |
            Имя метода, в который пойдет запрос на выполнение.
          type: string
          enum:
            - chat_completions
            - embedder
        request_counts:
          type: object
          description: Количество запросов внутри пакетной задачи.
          items:
            type: object
            properties:
              total:
                type: integer
                description: Общее количество запросов.
                example: 42
                default: 0
        status:
          description: |
           Статус обработки пакетной задачи.
          type: string
          enum: 
            - created
            - in_progress
            - completed
        created_at:
          description: Время создания файла в формате unix timestamp.
          type: integer
          format: unix timestamp
        updated_at:
          description: Время обновления файла в формате unix timestamp.
          type: integer
          format: unix timestamp
    Model:
      type: object
      properties:
        id:
          description: |
            Название модели.

            Модели в раннем доступе отмечены постфиксом `-preview`.
            Например, `GigaChat-Pro-preview`.
          type: string
          example: GigaChat-2-Max
        object:
          description: Тип сущности в ответе, например, модель.
          type: string
          example: model
        owned_by:
          description: Владелец модели.
          type: string
          example: salutedevices
        type:
          description: |
            Тип модели.
            Возможные значения:

            * `chat` — модель для генерации;
            * `aicheck` — модель для проверки, [создан ли текст с помощью ИИ](/ru/gigachat-b2bank/api/reference/rest/post-ai-check);
            * `embedder` — модель для создания [эмбеддингов](/ru/gigachat-b2bank/api/reference/rest/post-embeddings).
          enum: 
            - chat
            - aicheck
            - embedder
    ModelId:
      type: object
      properties:
        model:
          $ref: '#/components/schemas/Model/properties/id'
    Models:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Model'
        object:
          description: Тип сущности в ответе, например, список.
          type: string
          example: list
    aiCheck:
      type: object
      required: 
      - model
      - input
      properties:
        input:
          type: string
          description: |
            Текст, который будет проверен на наличие содержимого, сгенерированного с помощью нейросетевых моделей.
            Проверка доступна только для текстов на русском языке.
            Минимальная длина текста — 20 слов.
          example: Первый искусственный спутник Земли был запущен Советским Союзом 4 октября 1957 года. Этот исторический запуск ознаменовал начало космической эры и стал важным событием в истории человечества. Спутник получил название «Спутник-1».
        model:
          type: string
          enum:
          - GigaCheckClassification
          - GigaCheckDetection
          description: |
            Название модели.
            Модель GigaCheckClassification лучше всего подходит для анализа и разделения текста на два класса: написанный человеком или сгенерированный нейросетью (`ai`/`human`). В модели GigaCheckDetection добавляется третий класс — `mixed` (`ai`+`human`), что позволяет определять тексты, частично созданные с помощью ИИ.
          example: "GigaCheckClassification"
    aiCheckResponse:
      type: object
      properties:
        category:
          type: string
          description: |
            Результат проверки текста. Возможные значения:

            * `ai` — текст сгенерирован с помощью нейросетевых моделей;
            * `human` — текст написан человеком;
            * `mixed` — текст содержит как фрагменты сгенерированные с помощью моделей, так и написанные человеком.
          enum:
            - ai
            - human
            - mixed
          example: ai
        characters:
          type: integer
          description: Количество символов в переданном тексте.
          example: 158
        tokens:
          type: integer
          description: Количество токенов в переданном тексте.
          example: 38
        ai_intervals:
          type: array
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
          description: |
            Части текста, сгенерированные моделью.
            Обозначаются индексами символов, с которых начинаются и заканчиваются сгенерированные фрагменты.

            Содержит пустой массив если текст полностью сгенерирован с помощью нейросетевых моделей (`"category": "ai"`) или написан человеком (`"category": "human"`).
    Balance:
      type: object
      properties:
        balance:
          type: array
          items:
            type: object
            properties:
              usage:
                type: string
                description: Название модели, например, GigaChat или embeddings. 
                example: GigaChat
              value:
                type: integer
                description: Остаток токенов.
                example: 100500
    File:
      description: Описание файла, доступного в хранилище
      type: object
      properties:
        bytes:
          description: Размер файла в байтах.
          type: integer
          example: 120000
        created_at:
          description: Время создания файла в формате unix timestamp.
          type: integer
          format: unix timestamp
          example: 1677610602
        filename:
          description: Название файла.
          type: string
          example: file123
        id:
          description: |
            Идентификатор файла, который можно использовать при [запросах на генерацию](/ru/gigachat-b2bank/api/reference/rest/post-chat).
            Для этого идентификаторы нужно передать в массиве `attachments`.
            
            Подробнее — в разделе [Обработка файлов](/ru/gigachat/guides/working-with-files).
          type: string
          format: UUIDv4
          example: 6f0b1291-c7f3-43c6-bb2e-9f3efb2dc98e
        object:
          description: Тип объекта.
          type: string
          example: file
        purpose:
          description: Назначение файлов. Значение `general` указывает на то, что файлы могут использоваться для [генерации ответа модели](/ru/gigachat/guides/working-with-files)
          enum:
            - general
          type: string
        access_policy:
          type: string
          description: |
            Доступность файла. Возможные значения:
            
            * `public`;
            * `private`.
          example: private
          default: private
          enum:
            - public
            - private
        modalities:
          type: 
            - "null"
            - array
          description: |
            Модальность файла, например, `image`.
            Определяется автоматически.
          items:
            type: string
            example: image
    FileContent:
      format: byte
      description: Содержимое файла в двоичном формате.
      type: string
    Files:
      description: Массив объектов с данными доступных файлов.
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/File'
    FileUpload:
      required:
        - file
      type: object
      properties:
        file:
          format: binary
          description: Загружаемый объект.
          type: string
        purpose:
          description: Назначение загружаемого файла.
          enum:
            - general
          type: string
    FileDeleted:
      type: object
      properties:
        id:
          type: string
          description: Идентификатор файла.
          example: d3277ca1-a140-484a-a3b4-9a121bea4bdc
        deleted:
          type: boolean
          description: Признак удаления файла.
          example: true
        access_policy:
          type: string
          example: private
          description: |
            Доступность файла.
    ChatCompletionStream:
      type: object
      description: |
        Сообщение формата [Server-Sent Events](https://html.spec.whatwg.org/multipage/server-sent-events.html).
        Содержит поле `data:` с фрагментом ответа модели.
        В последнем событии приходит сообщение `data: [DONE]`.
      required:
        - data
      properties:
        data:
          type: object
          properties:
            choices:
              type: array
              items:
                type: object
                properties:
                  delta:
                    type: object
                    properties:
                      content:
                        $ref: '#/components/schemas/MessagesRes/properties/content'
                      role:
                        $ref: '#/components/schemas/MessagesRes/properties/role'
                  index:
                    $ref: '#/components/schemas/Choices/properties/index'
                  finish_reason:
                    $ref: '#/components/schemas/Choices/properties/finish_reason'
            created:
              $ref: '#/components/schemas/ChatCompletion/properties/created'
            model:
              $ref: '#/components/schemas/Model/properties/id'
            object:
              $ref: '#/components/schemas/ChatCompletion/properties/object'
            usage:
              $ref: '#/components/schemas/Usage'
    Chat:
      required:
        - model
        - messages
      type: object
      properties:
        model:
          type: string
          description: |
            Название модели, которая будет обрабатывать запрос.
            
            При обращении к моделям в раннем доступе к названию модели нужно добавлять постфикс `-preview`.
          example: GigaChat-2-Max
        messages:
          type: array
          description: |
            Массив с историей сообщений.
            Для [сохранения контекста](/ru/gigachat/guides/keeping-context) диалога передавайте несколько сообщений.

            В запросе можно передать только один системный промпт (сообщение с ролью `system`).
            Системный промпт должен быть первым сообщением в массиве.
            
            Наличие в массиве нескольких системных промптов или передача системного промпта не в первом сообщении приведет к ошибке [с кодом 422](/ru/gigachat-b2bank/api/errors-description?responseCode=422) и сообщением `Invalid params: system message must be the first message`.
          items:
            $ref: '#/components/schemas/message'
        function_call:
          description: |
            Явно задает [режим работы с функциями](/ru/gigachat/guides/functions/function-calling-modes).

            Возможные значения:

            * строка `none`;
            * строка `auto`;
            * объект `{"name": "название_функции"}`.
          oneOf:
            - $ref: '#/components/schemas/function_call_none'
            - $ref: '#/components/schemas/function_call_auto'
            - $ref: '#/components/schemas/function_call_name'
        reasoning_effort:
          type: string
          description: |
            Задает глубину и сложность рассуждений.
            Этапы рассуждений возвращаются в поле `reasoning_content`, в ответе с ролью `assistant`.
            Поддерживается только значение `medium`.
            
            Подробнее — в разделе [Работа в режиме рассуждений](/ru/gigachat-b2bank/guides/reasoning).
          enum:
            - medium
        functions:
          $ref: '#/components/schemas/CustomFunctions'
        temperature:
          format: float
          type: 
            - "null"
            - "number"
          description: |
            Температура выборки регулирует степень случайности ответов модели.
            Высокое значение делает ответы разнообразными и неожиданными, низкое — предсказуемыми и стабильными.
            Когда температура меньше 0.001, включается режим строгого контроля, дающий одинаковые ответы. А при температуре больше 2 реакция становится чрезмерно беспорядочной.
            
            Базовое значение температуры зависит от модели, которая генерирует ответ, и меняется вместе с улучшениями модели.
          exclusiveMinimum: 0
        top_p:
          format: float
          type: 
            - "null"
            - "number"
          description: |
            Параметр используется как альтернатива температуре (поле `temperature`). Задает вероятностную массу токенов, которые должна учитывать модель.
            Так, если передать значение 0.1, модель будет учитывать только токены, чья вероятностная масса входит в верхние 10%.

            Значение по умолчанию зависит от выбранной модели (поле `model`) и может изменяться с обновлениями модели.

            Значение изменяется в диапазоне от 0 до 1 включительно.
          minimum: 0
          maximum: 1
        stream:
          type: 
            - "null"
            - "boolean"
          description: |
            Указывает, что сообщения надо передавать по частям в потоке.

            Сообщения передаются по протоколу [SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#event_stream_format).

            Поток завершается событием `data: [DONE]`.

            Подробнее читайте в разделе [Потоковая генерация токенов](/ru/gigachat/guides/response-token-streaming).
          default: false
          example: false
        max_tokens:
          description: Максимальное количество токенов, которые будут использованы для создания ответов.
          format: int32
          type: integer

          exclusiveMinimum: 0
          example: 30
        repetition_penalty:
          type: 
            - "null"
            - number
          format: float
          description: |
            Количество повторений слов:
            
            * Значение 1.0 — нейтральное значение.
            * При значении больше 1 модель будет стараться не повторять слова.

            Значение по умолчанию зависит от выбранной модели (поле `model`) и может изменяться с обновлениями модели.
          example: 1.0
        update_interval:
          type: number
          description: |
            Параметр потокового режима (`"stream": "true"`).
            Задает минимальный интервал в секундах, который проходит между отправкой токенов.
            Например, если указать `1`, сообщения будут приходить каждую секунду, но размер каждого из них будет больше, так как за секунду накапливается много токенов.
          default: 0
          example: 0
        response_format:
          $ref: '#/components/schemas/ChatResponseFormat'

    ChatResponseFormat:
      type: object
      description: |
        Формат данных в ответе модели.
        Используется для [генерации структурированных данных](/ru/gigachat-b2bank/guides/structured-output).
      discriminator:
        propertyName: type
        description: |
          Задает тип данных, которые должна сгенерировать модель.
          Возможные значения:

          * `text` — ответ модели будет возвращен в виде текста. В этом случае объект `response_fortmat` не может содержать другие поля;
          * `json_schema` — ответ модели будет возвращен в виде JSON-объекта, который соответствует JSON-схеме, описанной в поле `schema`;
          * `regex` — ответ модели будет возвращен в виде текста, который соответствует регулярному выражению.
        mapping:
          json_schema: '#/components/schemas/ChatResponseFormatJsonSchema'
          regex: '#/components/schemas/ChatResponseFormatRegEx'
          text: '#/components/schemas/ChatResponseFormatText'
      properties:
        type:
          type: string
      required: [ type ]
      oneOf:
        - $ref: '#/components/schemas/ChatResponseFormatJsonSchema'
        - $ref: '#/components/schemas/ChatResponseFormatRegEx'
        - $ref: '#/components/schemas/ChatResponseFormatText'
    ChatResponseFormatText:
      type: object
      properties:
        type:
          type: string
          description: |
            Модель вернет ответ в виде текста.
            В этом случае объект `response_fortmat` не может содержать другие поля.
          default: text
    ChatResponseFormatRegEx:
      type: object
      required: [ regex ]
      properties:
        type:
          type: string
          description: |
            Модель вернет ответ в виде текста.
            В этом случае объект `response_fortmat` не может содержать другие поля.
          default: regex
        regex:
          type: string
          description: Регулярное выражение, которому должен соответствовать ответ модели.
        strict:
          type: boolean
          description: |
            Указывает, что модель должна вернуть ответ строго в соответствии заданным регулярным выражением.
          example: true
    ChatResponseFormatJsonSchema:
      type: object
      required:
        - schema
      properties:
        type:
          type: string
          description: |
            Модель вернет ответ в виде JSON-объекта.
            Формат ответа будет соответствовать JSON-схеме, описанной в поле `schema`.
          default: json_schema
        schema:
          type: object
          description: |
            JSON-схема данных, которой должен соответствовать ответ модели.

            Для строгого соответствия схеме, передайте список обязательных полей в массиве `required` и задайте параметр `"strict": true`.
            В этом случае ответ будет содержать все поля, в том числе необязательные.

            Если в описании отсуствтует массив `required` с обязательными полями, модель вернет произвольный JSON-объект.
          example: {    "type": "object",    "properties": {        "date": {            "type": "string",            "description": "Дата в формате dd.mm"        },        "event": {            "type": "string",            "description": "Наименование события"        }    },    "required": [        "date"    ]}
        strict:
          type: boolean
          description: |
            Указывает, что модель должна вернуть ответ строго в соответствии со схемой, описанной в поле `schema`.
            При этом описание должно содержать массив `required`, со списком обязательных полей.
          example: true
    message:
      type: object
      discriminator:
        propertyName: role
        description: |
          Роль автора сообщения:
          * `system` — системный промпт, который задает роль модели, например, должна модель отвечать как академик или как школьник;
          * `assistant` — ответ модели;
          * `user` — сообщение пользователя;
          * `function` — сообщение с результатом работы [пользовательской функции](/ru/gigachat/guides/functions/generating-arguments-for-custom-functions). Передается обязательно если в [истории сообщений](/ru/gigachat/guides/keeping-context) есть ответ модели с аргументами для собственной функции (поле `function_call` и идентификатор `functions_state_id`).
        mapping:
          system: '#/components/schemas/SystemMessage'
          user: '#/components/schemas/UserMessage'
          assistant: '#/components/schemas/AssistantMessage'
          function: '#/components/schemas/FunctionMessage'
      properties:
        role:
          type: string
      required:
        - role
      oneOf:
        - $ref: '#/components/schemas/SystemMessage'
        - $ref: '#/components/schemas/UserMessage'
        - $ref: '#/components/schemas/AssistantMessage'
        - $ref: '#/components/schemas/FunctionMessage'

    UserMessage:
      type: object
      properties:
        content:
          description: |
            Текст сообщения пользователя.
            
            Передавайте текст в кодировке UTF8.
            Это позволит снизить расход токенов при обработке сообщения.
          type: string
          example: "Погода в Болхове"
        attachments:
          description: |
            Массив идентификаторов файлов, которые нужно использовать при генерации.
            Идентификатор присваивается файлу при [загрузке в хранилище](/ru/gigachat-b2bank/api/reference/rest/post-file).
            Посмотреть список файлов в хранилище можно с помощью метода # START_RAW<APIMethod type="GET" path="/files" link="/ru/gigachat-b2bank/api/reference/rest/get-files"/># END_RAW.

            При работе с текстовыми документами в одном запросе на генерацию нужно передавать только один идентификатор.
            Если вы передадите несколько идентификаторов файлов, для генерации будет использован только первый файл из списка.
            При использовании больших текстовых файлов в запросах на генерацию, их содержимое может превышать [размер контекста модели](/ru/gigachat/models/main#modeli-dlya-generatsii).
            В таком случае вернется [ошибка с кодом 422](/ru/gigachat-b2bank/api/errors-description?responseCode=422).

            В одном сообщении (объект в массиве `messages`) можно передать только одно изображение.
            В одной сессии можно передать до 10 изображений.

            # START_RAW
            <Admonition type="note">
            # END_RAW
            
            При этом общий размер запроса при работе с изображениями и аудио должен быть меньше 80 Мб.

            Например, ваш запрос может включать текст промпта и идентификаторы изображения размером 12 Мб, и двух аудиофайлов размером 33 Мб и 21 Мб. Что в сумме даст запрос размером больше 66 Мб, в зависимости от размера промпта.

            Размер текстовых документов не влияет на размер запроса, но их содержимое может превышать контекстное окно модели.

            # START_RAW
            </Admonition>
            # END_RAW

            Подробнее — в разделе [Обработка файлов](/ru/gigachat/guides/working-with-files)
          type: array
          items:
            type: string
      required:
        - content

    SystemMessage:
      type: object
      properties:
        content:
          description: |
            Системный промпт, который задает поведение модели.
            В массиве `messages` системный промпт передается в первом сообщении.
            Массив может содержать только один системный промпт.

            Передавайте текст в кодировке UTF8.
            Это позволит снизить расход токенов при обработке сообщения.
          type: string
          example: "Ты — полезный AI-ассистент"
      required:
        - content

    AssistantMessage:
      type: object
      properties:
        content:
          description: |
            Сгенерированный текст.
            Если модель сгенерировала аргументы для собственной функции, то поле будет пустым

            Если сообщение модели содержит аргументы для вызова собственной функции, то в истории сообщений обязательно нужно передать результами работы функции в сообщении с ролью `function`.
            
            Передавайте текст в кодировке UTF8.
            Это позволит снизить расход токенов при обработке сообщения.
          type: string
          example: "В Болхове сейчас +15°C, облачно"
        functions_state_id:
          type: string
          format: UUIDv4
          description: |
            Идентификатор, который объединяет функции, использованные в запросе.
            Возвращается в ответе модели (сообщение с `"role": "assistant"`) при вызове встроенных или генерации аргументов для собственных функций.
            
            Позволяет сохранить [состояние обращения к функции](/ru/gigachat/guides/functions/calling-builtin-functions#sohranenie-konteksta) и повысить качество работы модели.
            Для этого нужно передать идентификатор в запросе на генерацию в сообщении с ролью `assistant`.

            Если идентификатор взят из ответа со сгенерированными аргументами, то в истории сообщений нужно передать результат работы функции в сообщении с ролью `function`.
            В противном случае вернется ошибка: «Invalid params: every assistant function call must have a result in history».
        function_call:
          $ref: '#/components/schemas/FunctionCallArgs'
      required:
        - content

    FunctionMessage:
      type: object
      properties:
        content:
          description: |
            Результат работы функции в виде обернутого в строку JSON-объекта.
          type: string
          example: '{\"location\": \"Манжерок, Россия\", \"temperature\": 15, \"forecast\": \"дожди\"}'
      required:
        - content
    MessagesRes:
      type: object
      description: Сгенерированное сообщение.
      properties:
        role:
          type: string
          enum:
            - assistant
            - function_in_progress
          description: |
            Роль автора сообщения.

            Роль `function_in_progress` используется при работе встроенных функций в режиме [потоковой передачи токенов](/ru/gigachat/guides/functions/calling-builtin-functions#potokovaya-peredacha-tokenov).
          example: assistant
        content:
          type: string
          description: |
            Содержимое сообщения, например, результат генерации.
            При передаче в [режиме потоковой генерации](/ru/gigachat/guides/response-token-streaming) передается частями. В предпоследнем сообщении передается пустая строка `""`.

            В сообщениях с ролью `function_in_progress` содержит информацию о том, сколько времени осталось до завершения работы встроенной функции.
          example: 'Здравствуйте! К сожалению, я не могу дать точный ответ на этот вопрос, так как это зависит от многих факторов. Однако обычно релиз новых функций и обновлений в GigaChat происходит постепенно и незаметно для пользователей. Рекомендую следить за новостями и обновлениями проекта в официальном сообществе GigaChat или на сайте разработчиков.'
        created:
          type: integer
          format: unix timestamp
          description: Передается в сообщениях с ролью`function_in_progress`. Содержит информацию о том, когда был создан фрагмент сообщения.
          example: 1625284800
        name:
          type: string
          description: |
            Название вызванной [встроенной функции](/ru/gigachat/guides/functions/calling-builtin-functions).
            Передается в сообщениях с ролью`function_in_progress`.
            Возможные значения:
            
            * `text2image` - генерация изображения на основе описания;
            * `text2model3d` — генерация 3D-модели на основе описания.
          example: text2image
        functions_state_id:
          type: string
          format: UUIDv4
          description: |
            Идентификатор, который объединяет массив функций, переданных в запросе.
            Возвращается в ответе модели (сообщение с `"role": "assistant"`) при вызове встроенных или собственных функций.
            Позволяет сохранить [контекст вызова функции](/ru/gigachat/guides/functions/calling-builtin-functions#sohranenie-konteksta) и повысить качество работы модели.
            Для этого нужно передать идентификатор в запросе на генерацию в сообщении с ролью `assistant`.
          example: 77d3fb14-457a-46ba-937e-8d856156d003
        function_call: 
          $ref: '#/components/schemas/FunctionCallArgs'
    Usage:
      type: object
      description: |
        Данные об использовании модели.
        При запуске [потоковой генерации](/ru/gigachat/guides/response-token-streaming), объект приходит в предпоследнем событии.
      properties:
        prompt_tokens:
          format: int32
          description: Количество токенов во входящем сообщении (роль `user`).
          type: integer
          example: 1
        completion_tokens:
          format: int32
          description: Количество токенов, сгенерированных моделью (роль `assistant`).
          type: integer
          example: 4
        precached_prompt_tokens:
          format: int32
          description: |
            Количество кэшированных токенов, которые были использованы при обработке запроса.
            Кэшированные токены вычитаются из общего числа оплачиваемых токенов (поле `total_tokens`).

            Модели GigaChat в течение некоторого времени сохраняют контекст запроса (историю сообщений массива `messages`, описание функций) с помощью кэширования токенов. Это позволяет повысить скорость ответа моделей и снизить стоимость работы с GigaChat API.

            # START_RAW
            <Admonition type="tip">
            # END_RAW

            Для повышения вероятности использования сохраненных токенов используйте [кэширование запросов](/ru/gigachat/guides/keeping-context#keshirovanie-zaprosov).

            # START_RAW
            </Admonition>
            # END_RAW

            [Подробнее о подсчете токенов](/ru/gigachat/guides/counting-tokens).
          type: integer
          example: 37
        total_tokens:
          format: int32
          description: Общее число токенов, подлежащих тарификации, после вычитания кэшированных токенов (поле `precached_prompt_tokens`).
          type: integer
          example: 5
    ChatCompletion:
      type: object
      properties:
        choices:
          type: array
          description: Массив ответов модели.
          items:
            $ref: '#/components/schemas/Choices'
        created:
          format: unix timestamp
          type: integer
          description: Дата и время создания ответа в формате unix timestamp.
          example: 1678878333
        model:
          type: string
          description: Название и версия модели, которая обработала запрос.
          example: GigaChat-2-Max
        usage:
          $ref: '#/components/schemas/Usage'
        object:
          type: string
          description: Название вызываемого метода.
          example: chat.completion
    Choices:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/MessagesRes'
        index:
          format: int32
          type: integer
          description: Индекс сообщения в массиве, начиная с ноля.
          example: 0
        finish_reason:
          description: |
            Причина завершения гипотезы. Возможные значения:
            
            * `stop` — модель закончила формировать гипотезу и вернула полный ответ;
            * `length` — достигнут лимит токенов в сообщении;
            * `function_call` — указывает, что при запросе была вызвана встроенная функция или сгенерированы аргументы для пользовательской функции;
            * `blacklist` — запрос попадает под [тематические ограничения](/ru/gigachat/limitations#tematicheskie-ogranicheniya-zaprosov).
            * `error` — ответ модели содержит невалидные аргументы пользовательской функции.

            При работе в режиме [потоковой генерации](/ru/gigachat/guides/response-token-streaming) передается в предпоследнем событии со значением.
          type: string
          enum:
            - stop
            - length
            - function_call
            - blacklist
            - error
          example: "stop"
    TokensCount:
      type: array
      items:
        type: object
        properties:
          object:
            type: string
            description: Описание того, какая информация содержится в объекте.
            default: tokens
          tokens:
            type: integer
            description: Количество токенов в соответствующей строке.
            example: 7
          characters:
            type: integer
            description: Количество символов в соответствующей строке.
            example: 36
    Embedding:
      type: object
      properties:
        object:
          type: string
          description: Формат структуры данных.
          default: list
        data:
          type: array
          items:
            type: object
            description: Объект с данными о векторном представлении текста.
            properties:
              object:
                type: string
                description: Тип объекта.
                default: embedding
              embedding:
                type: array
                description: Массив чисел, представляющий значения эмбеддинга для предоставленного текста. 
                items:
                  type: number
                  format: float
              index:
                type: integer
                description: Индекс, соответствующий индексу текста, полученного в массиве `input` запроса.
                example: 0
              usage:
                type: object
                properties:
                  prompt_tokens:
                    type: number
                    description: Количество токенов в строке, для которой сгенерирован эмбеддинг.
                    example: 6
        model:
          type: string
          description: Название модели, которая используется для вычисления эмбеддинга.
          example: Embeddings
    TokensCountBody:
      type: object
      required:
        - "model"
        - "input"
      properties:
        model:
          type: string
          description: Название модели, которая будет использована для подсчета количества токенов.
          example: GigaChat
        input:
          type: array
          description: Строка или массив строк, в которых надо подсчитать количество токенов.
          items:
            type: string
            example: Я к вам пишу — чего же боле?
    EmbeddingsBody:
      type: object
      required:
        - "input"
        - "model"
      properties:
        model:
          type: string
          description: |
            Название модели, которая будет использована для создания эмбеддинга.

            Возможные значения:

            * `Embeddings` — базовая модель, доступная по умолчанию для векторного представления текстов;
            * `Embeddings-2` — доработанная и улучшенная версия базовой модели;
            * `EmbeddingsGigaR` — продвинутая модель с большим размером контекста.

          example: Embeddings
        input:
          description: Строка или массив строк, которые будут использованы для генерации эмбеддинга.
          oneOf:
          - type: string
            example: Расскажи о современных технологиях
          - type: array
            items:
              type: string
              example: Расскажи о современных технологиях
    function_call_name:
      type: object
      properties:
        name:
          type: string
          description: |
            Работа с функциями в принудительном режиме.

            В поле можно передать как название собственной функции, описание которой содержится в массиве `functions`, так и название одной из [встроенных функций](/ru/gigachat/guides/functions/calling-builtin-functions):

            ```json 
            {
              ...
              "function_call": {
                "name": "weather_forecast"
              },
              "functions": [
                {
                  "name": "weather_forecast",
                  ...
                }
              ]
              ...
            }
            ```
    function_call_none:
      type: string
      description: |
        Отключение работы с функциями.

        Если передать `none`, модель не будет вызывать встроенные функции или генерировать аргументы для пользовательских функций, а просто сгенерирует ответ в соответствии с полученными сообщениями.
      example: none
    function_call_auto:
      type: string
      description: |
        Автоматический режим работы с функциями.

        В этом режиме модель, основываясь на тексте сообщений, решает нужно ли использовать одну из [встроенных функций](/ru/gigachat/guides/functions/calling-builtin-functions) или сгенерировать аргументы для пользовательских функций, описанных в массиве `functions`.
        При этом, если массив содержит описание хотя бы одной пользовательской функции, модель сможет вызвать встроенную функцию, только если ее название передано в массиве `functions`:

        ```json 
        {
          ,,,
          "function_call": "auto",
          "functions": [
        	  {
                "name": "text2image"			
        	  },
            {
                "name": "weather_forecast",
                "description": "Возвращает температуру на заданный период",
                "parameters": {}
            }
          ]
          ...
        }
        ```
      example: auto
 
  ###
  # Chat Completions V2
  ###

    ChatCompletionV2Request:
      type: object
      required:
        - model
        - messages
      properties:
        model:
          type: string
          description: |
            Название модели, которая будет обрабатывать запрос.

            Не передается в запросах с `assistant_id`.

            При обращении к моделям в раннем доступе к названию модели нужно добавлять постфикс `-preview`.
          example: GigaChat-2-Max
        assistant_id:
          type: string
          description: |
            Идентификатор ассистента.
            Не передается, если запрос содержит идентификатор треда.
            
            При сохранении состояния — передается только в первом сообщении при создании треда.

            Без сохранения состояния — передается если в запросе нужно использовать ассистента.

            В запросах с `assistant_id` нельзя использовать `model`, так как модель уже задана при создании ассистента.
        memory_id:
          type: string
          description: Идентификатор ячейки памяти.
        messages:
          type: array
          description: Массив сообщений чата.
          items:
            $ref: '#/components/schemas/Message'
        model_options:
          type: object
          description: Параметры модели.
          properties:
            temperature:
              format: float
              type: 
                - "null"
                - number
              description: |
                Температура выборки регулирует степень случайности ответов модели.
                Высокое значение делает ответы разнообразными и неожиданными, низкое — предсказуемыми и стабильными.
                Когда температура меньше 0.001, включается режим строгого контроля, дающий одинаковые ответы. А при температуре больше 2 реакция становится чрезмерно беспорядочной.

                Базовое значение температуры зависит от модели, которая генерирует ответ, и меняется вместе с улучшениями модели.
              minimum: 0
              exclusiveMinimum: 0
            top_p:
              format: float
              type: 
                - "null"
                - number
              description: |
                Параметр используется как альтернатива температуре (поле `temperature`). Задает вероятностную массу токенов, которые должна учитывать модель.
                Так, если передать значение 0.1, модель будет учитывать только токены, чья вероятностная масса входит в верхние 10%.

                Значение по умолчанию зависит от выбранной модели (поле `model`) и может изменяться с обновлениями модели.

                Значение изменяется в диапазоне от 0 до 1 включительно.
              minimum: 0
              maximum: 1
            max_tokens:
              description: Максимальное количество токенов, которые будут использованы для создания ответов.
              format: int32
              type: 
                - "null"
                - integer
              exclusiveMinimum: 0
              example: 30
            repetition_penalty:
              type: 
                - "null"
                - number
              format: float
              description: |
                Количество повторений слов:
                
                * Значение 1.0 — нейтральное значение.
                * При значении больше 1 модель будет стараться не повторять слова.
    
                Значение по умолчанию зависит от выбранной модели (поле `model`) и может изменяться с обновлениями модели.
              example: 1.0
            update_interval:
              type: number
              description: |
                Параметр потокового режима (`"stream": "true"`).
                Задает минимальный интервал в секундах, который проходит между отправкой токенов.
                Например, если указать `1`, сообщения будут приходить каждую секунду, но размер каждого из них будет больше, так как за секунду накапливается много токенов.
              default: 0
              example: 0
            unnormalized_history:
              type: boolean
              description: |
                Выключает нормализацию истории сообщений.
                
                При включенной нормализации:
                
                * если после системного промпта (роль `system`) нет сообщения пользователя (роль `user`), то роль в сообщении `system` меняется на `user`;
                * если передается подряд несколько сообщений с ролью user или assistant, их содержимое конкатенируется в одном сообщении. Так, после нормализации пяти сообщений `system-user-user-assistant-assistant` получится три сообщения `system-user-assistant`.
              example: false
            top_logprobs:
              type: integer
              description: |
                Позволяет получить информацию о наиболее вероятных токенах и их логарифмических вероятностях для каждой позиции в ответе модели.

                # START_RAW
                <Admonition type="note">
                # END_RAW

                Использование параметра согласуется отдельно.

                # START_RAW
                </Admonition>
                # END_RAW

                Принимает целое число от 1 до 5, указывающее количество наиболее вероятных токенов для каждой позиции.

                Параметр полезен для анализа, почему модель выбрала именно такой токен, а также для отладки и исследований поведения модели.
              minimum: 1
              maximum: 5
              example: 3
            reasoning:
              type: object
              description: Параметры режима рассуждений.
              required:
                - effort
              properties:
                effort:
                  type: string
                  enum: 
                    - medium
                  description: |
                    Задает глубину и сложность рассуждений.
                    Поддерживается только значение `medium`.
                    
                    При запуске режима рассуждений, модель вернет массив с двумя сообщениями:

                    * первое — с ролью `reasoning` и описанием рассуждений в поле `content.text`;
                    * второе — с ролью `assistant` и итоговым ответом.
            
                    Подробнее — в разделе [Работа в режиме рассуждений](/ru/gigachat-b2bank/guides/reasoning).
            response_format:
              $ref: '#/components/schemas/ChatResponseFormat'
        stream:
          type: boolean
          description: |
            Указывает, что сообщения надо передавать по частям в потоке.

            Сообщения передаются по протоколу [SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#event_stream_format).

            Типы событий в потоке:

              * `response.message.delta` — дельта изменений сообщения;
              * `response.message.done` — последнее сообщение в потоке;
                     
                Пример события:

                ```sh
                event: response.message.done
                data: {"model":"GigaChat","created_at":"167890456789","finish_reason":"error","usage":{"input_tokens":0,"input_tokens_details":{"prompt_tokens":0,"cached_tokens":0},"output_tokens":0,"total_tokens":0}}
                ```

              * `response.tool.in_progress` — данные о выполнении инструмента (встроенной функции);
              * `response.tool.completed` — информация о завершении выполнения инструмента (встроенной функции).
          default: false
          example: false
        disable_filter:
          type: boolean
          description: |
            Отключение фильтра цензуры.
            Заменяет параметр `profanity_check`.
            
            # START_RAW
            <Admonition type="note">
            # END_RAW

            Отключение цензуры согласуется отдельно.

            # START_RAW
            </Admonition>
            # END_RAW
        filter_config:
          type: object
          description: |
            Параметры фильтрации.

            # START_RAW
            <Admonition type="note">
            # END_RAW

            Возможность задавать параметры фильтрации согласуется отдельно.

            # START_RAW
            </Admonition>
            # END_RAW
          properties:
            request_content:
              type: object
              description: Проверка запроса пользователя.
              properties:
                neuro:
                  type: boolean
                  description: |
                    Включает проверку содержимого с помощью модели цензора.
                  example: false
                blacklist:
                  type: boolean
                  description: Включает проверку содержимого запроса на наличие запрещенных слов.
                  default: true
                whitelist:
                  type: boolean
                  description: |
                    Включает проверку содержимого запроса на слова, для которых нужно возвращать заданные ответы.
                  example: true
            response_content:
              type: object
              description: Проверка ответа модели.
              properties:
                blacklist:
                  type: boolean
                  description: Включает проверку содержимого ответа на наличие запрещенных слов.
                  default: true
        flags:
          type: array
          items:
            type: string
            description: Список флагов для включения определенной функциональности.
        storage:
          type: object
          description: |
            Данные, которые нужно сохранить на стороне GigaChat, для использования в контексте.
          properties:
            limit:
              type: integer
              description: |
                Максимальное количество сообщений в контексте.

                Если параметр не задан — передаются все сообщения.

                Если в истории сообщений есть сообщение с инструкцией или системным промптом, оно всегда добавляется к контексту. Даже если оно не должно быть передано из-за заданного ограничения. То есть количество сообщений в контексте будет равно `limit+1`.
              example: 20
            thread_id:
              type: string
              description: |
                Идентификатор треда.
                Не передается в первом сообщении.
            metadata:
              type: object
              description: |
                Дополнительная информация о треде в формате ключ-значение.

                При передаче `metadata` в созданный тред, существующее значение поля будет перезаписано.
                Даже если передан пустой объект.
                
                Если поле не передается, то существующее значение не меняется.
        ranker_options:
          type: object
          description: Параметры ранжирования инструментов (`tools`).
          properties:
            enabled:
              type: boolean
              description: Включение ранжирования инструментов.
              example: true
            top_n:
              type: integer
              description: |
                Количество инструментов (встроенных функций), которое передается в модель после ранжирования.
              example: 4
            embeddings_model:
              type: string
              description: |
                Модель для векторного представления, которая будет использована для ранжирования.

                Доступные модели можно посмотреть с помощью [`GET /models`](/ru/gigachat-b2bank/api/reference/rest/get-models).
        user_info:
          type: object
          description: Дополнительная информация о клиенте, которая может улучшить качество ответа модели.
          properties:
            timezone:
              type: string
              description: Часовой пояс в формате IANA.
              example: Europe/Moscow
        tool_config:
          type: object
          description: Параметры вызова инструментов и пользовательских функций.
          required:
            - mode
          properties:
            mode:
              type: string
              enum:
                - auto
                - none
                - forced
              description: |
                Режим вызова.

                Возможные значения:
    
                * `auto` —  автоматический режим.
                В этом режиме модель, основываясь на тексте сообщений, решает нужно ли использовать один из инструментов или функций, переданных в массиве `tools`.
                Используется по умолчанию, если запрос содержит массив `tools` и режим не задан явно;
                * `none` — отключение работы с инструментами и функциями.
                Если передать `none`, модель просто сгенерирует ответ в соответствии с полученными сообщениями;
                * `forced` — принудительный вызов инструмента или генерация аргументов для собственной функции. В этом режиме обязательно нужно передать название в соответствующем поле `tool_name` или `function_name`.
            tool_name:
              type: string
              description: |
                Название инструмента, который должна использовать модель при обработке запроса.
                Передается при запуске в принудительном режиме (`"mode": "forced"`).
            function_name:
              type: string
              description: |
                Название собственной функции, аргументы для которой должна сгенерировать модель при обработке запроса.
                Передается при запуске в принудительном режиме (`"mode": "forced"`).
        tools:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/ToolsFunctions'
              - $ref: '#/components/schemas/ToolImageGenerate'
              - $ref: '#/components/schemas/ToolModel3DGenerate'
              - $ref: '#/components/schemas/ToolWebSearch'
    ChatCompletionV2Response:
      type: object
      properties:
        model:
          type: string
          description: Название модели.
          example: GigaChat-2-Max
        thread_id:
          type: string
          description: Идентификатор треда.
        created_at:
          type: integer
          format: unix timestamp
          description: Время создания ответа.
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageResponse'
        finish_reason:
          type: string
          enum:
            - stop
            - length
            - function_call
            - function_call_error
            - blacklist
            - request_blacklist
            - request_whitelist
            - request_filter
            - response_blacklist
          description: |
            Причина завершения гипотезы. 

            При работе в режиме [потоковой генерации](/ru/gigachat/guides/response-token-streaming) передается в предпоследнем событии со значением.
            
            Возможные значения:
            
            * `stop` — модель закончила формировать гипотезу и вернула полный ответ;
            * `length` — достигнут лимит токенов в сообщении;
            * `function_call` — указывает, что при запросе использовался инструмент или пользовательская функция из массива `tools`;
            * `function_call_error` — ответ модели содержит невалидные аргументы пользовательской функции;
            * `blacklist` — запрос попадает под [тематические ограничения](/ru/gigachat/limitations#tematicheskie-ogranicheniya-zaprosov).

              Доступ к детализации сработавших ограничений согласуется отдельно.
              При наличии доступа, возможны следующие причины завершения гипотезы:

              * `request_blacklist` — запрос попадает под [тематические ограничения](/ru/gigachat/limitations#tematicheskie-ogranicheniya-zaprosov);
              * `request_whitelist` — запрос содержит слова, на которые возвращается заданный ответ;
              * `request_filter` — запрос пользователя подпадает под ограничения модели цензора;
              * `response_blacklist` — ответ попадает под [тематические ограничения](/ru/gigachat/limitations#tematicheskie-ogranicheniya-zaprosov).
        usage:
          type: object
          properties:
            input_tokens:
              type: integer
              description: Количество токенов в запросе.
            input_tokens_details:
              type: object
              description: Дополнительные данные о токенах запроса.
              properties:
                cached_tokens:
                  type: integer
                  description: Количество кэшированных токенов в запросе.
            output_tokens:
              type: integer
              description: Количество токенов в ответе модели.
            total_tokens:
              type: integer
              description: Общее количество потраченных токенов.
        additional_data:
          type: object
          description: Дополнительные данные.
          properties:
            execution_steps:
              type: array
              description: Дополнительная информация об этапах выполнения запроса.
              items:
                type: object
                properties:
                  ts_start:
                    type: integer
                    description: Время начала выполнения.
                  ts_end:
                    type: integer
                    description: Время окончания выполнения.
                  event_type:
                    type: string
                    description: Система, которая обработала обращение.
                  step:
                    type: object
                    description: Описание этапа.
                    properties:
                      function_call:
                        type: object
                        description: Вызов функции.
                        properties:
                          name:
                            type: string
                            description: Название функции.
                          arguments:
                            type: object
                            description: Сгенерированные аргументы.
                      functions_in:
                        type: array
                        description: Список названий функций, переданных в модель / для ранжирования.
                        items:
                          type: string
                      functions_out:
                        type: array
                        description: Список названий функций, полученный в результате ранжирования.
                        items:
                          type: string
                      function_executed:
                        type: string
                        description: Название выполненной функции.
                      function_result:
                        type: string
                        enum:
                          - success
                          - fail
                        description: Результат работы функции.
    Message:
      type: object
      required:
        - role
        - content
      properties:
        role:
          type: string
          description: |
            Автор сообщения:

            * `user` — сообщение пользователя;
            * `system` — системный промпт, который задает роль модели, например, должна модель отвечать как академик или как школьник;
            * `assistant` — ответ модели;
            * `tool` — сообщение с результатом работы [пользовательской функции](/ru/gigachat/guides/functions/generating-arguments-for-custom-functions). В сообщении с этой ролью передавайте результаты работы функции в поле `content` в форме валидного JSON-объекта, обернутого в строку.
            * `reasoning` — ответ модели в режиме рассуждений.

            Для сохранения контекста чата передайте несколько сообщений. Подробнее — в разделе [Работа с историей чата](/ru/gigachat/guides/keeping-context).
          enum: 
            - user
            - system
            - assistant
            - tool
            - reasoning
        tools_state_id:
          type: string
          format: UUIDv4
          description: |
            Идентификатор, который объединяет массив инструментов `tools`.
            Возвращается в ответе модели (`"role": "assistant"`), если модель использовала какой-то них.
            
            Позволяет сохранить состояние обращения, и повысить качество генерации.
            Для этого передайте идентификатор в запросе на генерацию в сообщении с ролью `assistant`.
        content:
          type: array
          description: Содержимое сообщения.
          items:
            type: object
            properties:
              inline_data:
                type: object
                description: |
                  Набор пар ключ-значение с дополнительным контекстом для других полей.
                  Например, источники данных для текста, переданного в `text`.
              text:
                type: string
                description: Текст сообщения.
                example: Привет!
              files:
                type: array
                description: Файлы, загруженные в хранилище.
                items:
                  type: object
                  required:
                    - id
                  properties:
                    id:
                      type: string
                      description: Идентификатор файла.
              function_result:
                type: object
                description: |
                  Результат работы пользовательской функции.
                  Передается в сообщении с ролью `tool`.
                required:
                  - name
                  - result
                properties:
                  name:
                    type: string
                    description: Имя пользовательской функции.
                  result:
                    type: 
                      - string
                    description: Обернутый в строку валидный JSON-объект с результатом работы пользовательской функции.
              function_call:
                $ref: '#/components/schemas/FunctionCallArgs'
    MessageResponse:
      type: object
      properties:
        message_id:
          type: string
          description: Идентификатор сообщения. Передается при работе с сообщениями, сохраненными на стороне GigaChat.
        role:
          type: string
          enum:
            - user
            - system
            - assistant
            - tool
            - reasoning
          description: Роль автора сообщения. При запуске в режиме потоковой генерации передается в каждом фрагменте.
        tools_state_id:
          type: string
          format: UUIDv4
          description: |
            Идентификатор, который объединяет массив инструментов `tools`.
            Возвращается в ответе модели (`"role": "assistant"`), если модель использовала какой-то них.
            
            Позволяет сохранить состояние обращения, и повысить качество генерации.
            Для этого передайте идентификатор в запросе на генерацию в сообщении с ролью `assistant`.
        content:
          type: array
          description: Содержимое сообщения.
          items:
            type: object
            properties:
              inline_data:
                type: object
                description: Дополнительные данные к сообщению (например, sources).
                properties:
                  sources:
                    type: object
                    description: Список ссылок, найденных при обработке запроса.
                  images:
                    type: array
                    description: Список картинок.
                    items:
                      type: object
              text:
                type: string
                description: Текст сообщения
              files:
                type: array
                description: Информация о сгенерированных файлах.
                items:
                  type: object
                  properties:
                    target:
                      type: string
                      enum:
                        - image
                        - audio
                        - 3dmodel
                      description: Назначение файла.
                    id:
                      type: string
                      description: Идентификатор файла.
                    mime:
                      type: string
                      description: MIME-тип файла.
              function_call:
                $ref: '#/components/schemas/FunctionCallArgs'
              tool_execution:
                type: object
                description: Информация о вызове инструментов (встроенных функций).
                properties:
                  name:
                    type: string
                    description: Название инструмента (встроенной функции)
                    example: image_generation
                  status:
                    type: string
                    enum:
                      - success
                      - fail
                    description: Результат вызова инструмента.
                  seconds_left:
                    type: integer
                    description: Остаток времени работы инструмента. Передается при запуске генерации в потоковом режиме.
                  censored:
                    type: boolean
                    description: Указывает на срабатывания фильтра при вызове инструмента (встроенной функции).
              logprobs:
                type: array
                description: Логарифмические вероятности сгенерированных токенов.
                items:
                  type: object
                  properties:
                    chosen:
                      type: object
                      description: Данные выбранного токена.
                      properties:
                        token:
                          type: string
                          description: Выбранный токен.
                        token_id:
                          type: integer
                          description: Идентификатор выбранного токена.
                        logprob:
                          type: number
                          format: float
                          description: Значение логарифмической вероятности.
                    top:
                      type: array
                      description: Массив с описанием наиболее вероятных токенов.
                      items:
                        type: object
                        properties:
                          token:
                            type: string
                            description: Токен.
                          token_id:
                            type: integer
                            description: Идентификатор токена.
                          logprob:
                            type: number
                            format: float
                            description: Логарифмическая вероятность.
    ToolImageGenerate:
      type: object
      description: Встроенная функция для генерации изображений на основе текстового описания.
      properties:
        image_generate:
          description: Пустой JSON-объект.
          type: object
          example: {}
    ToolWebSearch:
      type: object
      description: Функция текстового поиска по интернету.
      properties:
        web_search:
          type: object
          properties:
            type:
              type: string
              description: |
                Тип функции поиска.
                Возможные значения:

                - `actual_info_web_search`;
                - `web_search`;
                - `safe_search`.
    ToolModel3DGenerate:
      type: object
      description: Встроенная функция для генерации 3D-моделей на основе текстового описания.
      properties:
        model_3d_generate:
          description: Пустой JSON-объект.
          type: object
    ToolsFunctions:
      type: object
      description: Объект с массивом пользовательских функций, для которых модель может сгенерировать аргументы.
      properties:
        functions:
          type: object
          properties:
            specifications:
              type: array
              description: Массив с описанием пользовательских функций.
              items:
                $ref: '#/components/schemas/CustomFunction'
    FunctionCallArgs:
      type: object
      description: |
        Данные для вызова собственной функции.
        Присутствует в сообщениях с ролью `assistant`, когда модель вместо обычного ответа генерирует аргументы для вызова функции.
        
        Если поле передается в запросе на генерацию (в сообщении с ролью `assistant`), то в истории сообщений так же нужно передать результат вызова функции в сообщении с ролью `function`.
        В противном случае вернется ошибка: «Invalid params: every assistant function call must have a result in history».
      properties:
        name:
          type: string
          description: |
            Название функции, которую нужно вызвать.
          example: "get_weather"
        arguments:
          type: string
          description: |
            Аргументы для вызова функции в формате JSON, обернутые в строку.
            Модель генерирует эти аргументы в соответствии со схемой, описанной в функции.
          example: '{"location": "Болхов", "unit": "celsius"}'
      required:
        - name
        - arguments
  responses:
    BatchTaskNotFound:
      description: Пакет запросов не найден.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                 type: integer
                 description: HTTP-код сообщения.
                 default: 404
              message:
                type: string
                description: Описание ошибки.
                default: Batch task not found
    PermissionDeniedError:
      description: Ошибка доступа. Возникает при отправке запроса если вы оплачиваете работу с API по схеме pay-as-you-go.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                 type: integer
                 description: HTTP-код сообщения.
                 default: 403
              message:
                type: string
                description: Описание ошибки.
                default: Permission denied
    UnauthorizedError:
      description: Ошибка авторизации.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                 type: integer
                 description: HTTP-код сообщения.
                 default: 401
              message:
                type: string
                description: Описание ошибки.
                default: Unauthorized
    NoSuchModel:
      description: |
        Указан неверный идентификатор модели.

        Список доступных моделей можно получить с помощью метода # START_RAW<APIMethod type="GET" path="/models" link="/ru/gigachat-b2bank/api/reference/rest/get-models"/># END_RAW .
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                 type: integer
                 description: HTTP-код сообщения.
                 default: 404
              message:
                type: string
                description: Описание ошибки.
                default: No such model
    InternalError:
      description: Внутренняя ошибка сервера.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                 type: integer
                 description: HTTP-код сообщения.
                 default: 500
              message:
                type: string
                description: Описание ошибки.
                default: Internal Server Error
    BadRequestFormat:
      description: |
        400 Bad request.

        Некорректный формат запроса.
    TooManyRequests:
      description: Слишком много запросов в единицу времени.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                 type: integer
                 description: HTTP-код сообщения.
                 default: 429
              message:
                type: string
                description: Описание ошибки.
                default: Too many requests
    ValidationError:
      description: Ошибка валидации параметров запроса. Проверьте названия полей и значения параметров.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                 type: integer
                 description: HTTP-код сообщения.
                 default: 422
              message:
                type: string
                description: Описание ошибки.
                example: "Invalid params: repetition_penalty must be in range (0, +inf)"
  securitySchemes:
    mTLSAuthentication:
      description: Basic HTTP Authentication
      type: mutualTLS
  