Skip to main content

Использование ввода изображения с помощью Copilot SDK

Отправляйте изображения в Второй пилот SDK сессии в виде файлов или вложений для blob.

Кто может использовать эту функцию?

GitHub Copilot SDK Доступна со всеми Copilot тарифными планами.

Примечание.

          Второй пилот SDK в настоящее время находится в Technical Preview. Функциональность и доступность могут меняться.

Существует два способа прикрепить изображения к Второй пилот SDK сессии:

  •         **Вложение файла** (`type: "file"`) — предоставить абсолютный путь; среда выполнения читает файл с диска, конвертирует его в base64 и отправляет в LLM.
    
  •         **Blob attachment** (`type: "blob"`)—предоставлять данные с кодированием base64 напрямую; полезно, когда изображение уже находится в памяти (например, скриншоты, сгенерированные изображения или данные из API).
    

Для диаграммы последовательности входного потока изображения см. репозиторийgithub/copilot-sdk.

КонцепцияОписание
          **Вложение файла** | Вложение с `type: "file"` и абсолют `path` к образу на диске |

| Прикрепление в виде капли | Вложение с type: "blob", закодированным dataв базе 64 , и — mimeTypeне требуется дисковый ввод-вывод | | Автоматическое кодирование | Для вложений файлов runtime считывает изображение и автоматически конвертирует его в base64 | | Автоматическое изменение размера | Время выполнения автоматически изменяет или снижает качество изображений, превышающих специфические для модели ограничения | | Возможности обзора | Модель должна capabilities.supports.vision = true обрабатывать изображения |

Быстрый старт: вложение файла

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

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
await client.start();

const session = await client.createSession({
    model: "gpt-4.1",
    onPermissionRequest: async () => ({ kind: "approved" }),
});

await session.send({
    prompt: "Describe what you see in this image",
    attachments: [
        {
            type: "file",
            path: "/absolute/path/to/screenshot.png",
        },
    ],
});

Примеры в Python, Go и .NET см. репозиторийgithub/copilot-sdk.

Быстрый старт: прикрепление к каплям

Если у вас уже есть данные изображения в памяти (например, скриншот, сделанный вашим приложением, или изображение, полученное из API), используйте вложение blob, чтобы отправить их напрямую без записи на диск.

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
await client.start();

const session = await client.createSession({
    model: "gpt-4.1",
    onPermissionRequest: async () => ({ kind: "approved" }),
});

const base64ImageData = "..."; // your base64-encoded image
await session.send({
    prompt: "Describe what you see in this image",
    attachments: [
        {
            type: "blob",
            data: base64ImageData,
            mimeType: "image/png",
            displayName: "screenshot.png",
        },
    ],
});

Примеры в Python, Go и .NET см. репозиторийgithub/copilot-sdk.

Поддерживаемые форматы

Поддерживаемые форматы изображений включают JPG, PNG, GIF и другие распространённые типы изображений. Для вложения файлов среда выполнения считывает образ с диска и конвертирует его по необходимости. Для blob-вложений вы предоставляете данные base64 и тип MIME напрямую. Используйте PNG или JPEG для наилучших результатов, так как это самые популярные форматы.

Поле capabilities.limits.vision.supported_media_types модели показывает точные типы MIME, которые она принимает.

Автоматическая обработка

Среда выполнения автоматически обрабатывает изображения, соответствующие ограничениям модели. Ручное изменение размера не требуется.

  • Изображения, превышающие лимиты размеров или размеров модели, автоматически изменяются (сохраняя соотношение сторон) или уменьшаются по качеству.
  • Если изображение не может быть перенесено в пределы ограничений после обработки, оно пропускается и не отправляется в LLM.
  • Поле модели capabilities.limits.vision.max_prompt_image_size указывает максимальный размер изображения в байтах.

Возможности модели зрения

Не все модели поддерживают зрение. Проверьте возможности модели перед отправкой изображений.

Поля возможностей

ПолеТипОписание
capabilities.supports.visionbooleanМожет ли модель обрабатывать входные изображения
capabilities.limits.vision.supported_media_typesstring[]Типы MIME, которые принимает модель (например, ["image/png", "image/jpeg"])
capabilities.limits.vision.max_prompt_imagesnumberМаксимальное количество изображений в каждом запросе
capabilities.limits.vision.max_prompt_image_sizenumberМаксимальный размер изображения в байтах

Тип ограничений зрения

vision?: {
    supported_media_types: string[];
    max_prompt_images: number;
    max_prompt_image_size: number; // bytes
};

Получение изображений

Когда инструменты возвращают изображения (например, скриншоты или сгенерированные диаграммы), результат содержит "image" блоки контента с данными, закодированными в base64.

ПолеТипОписание
type"image"Дискриминатор типа блока контента
datastringДанные изображений, закодированных в Base64,
mimeTypestringТип MIME (например, "image/png")

Эти блоки изображений появляются в tool.execution_complete результатах событий. Дополнительные сведения см. в разделе Трансляционные события в Copilot SDK.

Советы и ограничения

ПодсказкаСведения
          **Используйте PNG или JPEG** | Избегает накладных расходов на конвертацию — эти данные отправляются в LLM as-is |

| Держите изображения разумного размера | Большие изображения могут быть снижены по качеству, что приводит к потере важных деталей | | Используйте абсолютные пути для вложения файлов | Среда выполнения читает файлы с диска; Относительные пути могут неправильно разрешиться | | Используйте вложения blob для данных в памяти | Когда у вас уже есть данные base64 (например, скриншоты, ответы API), blob избегает ненужного ввода-вывода диска | | Сначала проверьте поддержку зрения | Отправка изображений в модель без зрения приводит к трате токен без визуального понимания | | Поддерживается несколько изображений | Прикрепите несколько вложений в одном сообщении, до предела лимита max_prompt_images модели | | SVG не поддерживается | SVG-файлы являются текстовыми и не подлежат обработке изображений |

Дополнительные материалы

  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/use-copilot-sdk/streaming-events)—жизненный цикл событий, включая блоки содержимого результатов инструмента
    
  •         [АВТОТИТРЫ](/copilot/how-tos/copilot-sdk/use-copilot-sdk/steering-and-queueing) — отправка последующих сообщений с вложениями