Примечание.
Второй пилот 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.vision | boolean | Может ли модель обрабатывать входные изображения |
capabilities.limits.vision.supported_media_types | string[] | Типы MIME, которые принимает модель (например, ["image/png", "image/jpeg"]) |
capabilities.limits.vision.max_prompt_images | number | Максимальное количество изображений в каждом запросе |
capabilities.limits.vision.max_prompt_image_size | number | Максимальный размер изображения в байтах |
Тип ограничений зрения
vision?: {
supported_media_types: string[];
max_prompt_images: number;
max_prompt_image_size: number; // bytes
};
Получение изображений
Когда инструменты возвращают изображения (например, скриншоты или сгенерированные диаграммы), результат содержит "image" блоки контента с данными, закодированными в base64.
| Поле | Тип | Описание |
|---|---|---|
type | "image" | Дискриминатор типа блока контента |
data | string | Данные изображений, закодированных в Base64, |
mimeType | string | Тип 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) — отправка последующих сообщений с вложениями