Опубликовано: 20 мая 2025 г.
Объяснитель | Веб | Расширения | Статус Хрома | Намерение |
---|---|---|---|---|
GitHub | Вид | Намерение экспериментировать |
С помощью API Prompt вы можете отправлять запросы на естественном языке в Gemini Nano через браузер.
Существует множество способов использования Prompt API. В веб-приложении или на веб-сайте вы можете создать:
- Поиск на основе искусственного интеллекта : отвечайте на вопросы на основе содержания веб-страницы.
- Персонализированные новостные ленты : создайте ленту, которая динамически классифицирует статьи по категориям и позволяет пользователям фильтровать этот контент.
Это всего лишь несколько возможностей, и нам не терпится увидеть, что вы создадите.
Ознакомьтесь с требованиями к оборудованию.
API-интерфейсы определения языка и переводчика работают только на настольных компьютерах в Chrome.
Prompt API, Summarizer API, Writer API и Rewriter API работают в Chrome при соблюдении следующих условий:
- Операционная система : Windows 10 или 11; macOS 13+ (Ventura и выше); или Linux. Chrome для Android, iOS и ChromeOS пока не поддерживаются нашими API, поддерживаемыми Gemini Nano.
- Хранилище : не менее 22 ГБ на томе, содержащем ваш профиль Chrome.
- Графический процессор : строго более 4 ГБ видеопамяти.
- Сеть : Неограниченные данные или безлимитное соединение.
Эти требования существуют для вас в процессе разработки и для ваших пользователей, которые работают с создаваемыми вами функциями.
Используйте API Prompt
Прежде чем использовать этот API, ознакомьтесь с Политикой Google в отношении запрещенного использования генеративного ИИ .
В пространстве имен LanguageModel
вам доступны две функции:
-
availability()
для проверки возможностей модели и ее доступности. -
create()
для запуска сеанса языковой модели.
Модель скачать
Prompt API использует модель Gemini Nano в Chrome. Хотя API встроен в Chrome, модель загружается отдельно при первом использовании API источником.
Чтобы определить, готова ли модель к использованию, вызовите асинхронную функцию LanguageModel.availability()
. Это должно вернуть один из следующих ответов:
-
"unavailable"
означает, что реализация не поддерживает запрошенные параметры или вообще не поддерживает запрос языковой модели. -
"downloadable"
означает, что реализация поддерживает запрошенные параметры, но ей придется что-то загрузить (например, саму языковую модель или тонкую настройку), прежде чем она сможет создать сеанс с использованием этих параметров. -
"downloading"
означает, что реализация поддерживает запрошенные параметры, но должна завершить текущую операцию загрузки, прежде чем она сможет создать сеанс с использованием этих параметров. -
"available"
означает, что реализация поддерживает запрошенные параметры без необходимости каких-либо новых загрузок.
Чтобы запустить загрузку модели и создать сеанс языковой модели, вызовите асинхронную функцию LanguageModel.availability()
. Если ответ на availability()
был 'downloadable'
, лучше всего прослушивать процесс загрузки. Таким образом, вы можете информировать пользователя, если загрузка займет время.
const session = await LanguageModel.create({
monitor(m) {
m.addEventListener("downloadprogress", (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
Возможности модели
Функция params()
информирует вас о параметрах языковой модели. Объект имеет следующие поля:
-
defaultTopK
: значение top-K по умолчанию (по умолчанию:3
). -
maxTopK
: максимальное значение top-K (8
). -
defaultTemperature
: Температура по умолчанию (1.0
). Значение температуры должно быть в диапазоне от0.0
до2.0
. -
maxTemperature
: максимальная температура.
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 8, defaultTemperature: 1, maxTemperature: 2}
Создать сессию
Как только API Prompt может быть запущен, вы создаете сеанс с помощью функции create()
. Вы можете вызвать модель с помощью функции prompt()
или promptStreaming()
.
Настройте свой сеанс
Каждый сеанс может быть настроен с помощью topK
и temperature
с использованием необязательного объекта параметров. Значения по умолчанию для этих параметров возвращаются из LanguageModel.params()
.
const params = await LanguageModel.params();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
temperature: Math.max(params.defaultTemperature * 1.2, 2.0),
topK: params.defaultTopK,
});
Необязательный объект параметров функции create()
также принимает поле signal
, которое позволяет передать AbortSignal
для уничтожения сеанса.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const session = await LanguageModel.create({
signal: controller.signal,
})
Первоначальные подсказки
С помощью первоначальных подсказок вы можете предоставить языковой модели контекст о предыдущих взаимодействиях, например, чтобы позволить пользователю возобновить сохраненный сеанс после перезапуска браузера.
const session = await LanguageModel.create({
initialPrompts: [
{ role: 'system', content: 'You are a helpful and friendly assistant.' },
{ role: 'user', content: 'What is the capital of Italy?' },
{ role: 'assistant', content: 'The capital of Italy is Rome.'},
{ role: 'user', content: 'What language is spoken there?' },
{ role: 'assistant', content: 'The official language of Italy is Italian. [...]' }
]
});
Ограничения сеанса
У данной языковой модели сеанса есть максимальное количество токенов, которые он может обработать. Вы можете проверить использование и прогресс в достижении этого предела, используя следующие свойства объекта сеанса:
console.log(`${session.inputUsage}/${session.inputQuota}`);
Устойчивость сеанса
Каждая сессия отслеживает контекст разговора. Предыдущие взаимодействия учитываются для будущих взаимодействий, пока окно контекста сессии не заполнится.
const session = await LanguageModel.create({
initialPrompts: [{
role: "system",
content: "You are a friendly, helpful assistant specialized in clothing choices."
}]
});
const result1 = await session.prompt(
"What should I wear today? It is sunny. I am unsure between a t-shirt and a polo."
);
console.log(result1);
const result2 = await session.prompt(
"That sounds great, but oh no, it is actually going to rain! New advice?"
);
console.log(result2);
Клонировать сессию
Чтобы сохранить ресурсы, вы можете клонировать существующий сеанс с помощью функции clone()
. Контекст разговора сбрасывается, но начальный запрос остается нетронутым. Функция clone()
принимает необязательный объект параметров с полем signal
, который позволяет вам передать AbortSignal
для уничтожения клонированного сеанса.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const clonedSession = await session.clone({
signal: controller.signal,
});
Подскажите модель
Вы можете вызвать модель с помощью функции prompt()
или promptStreaming()
.
Непотоковый вывод
Если вы ожидаете получить короткий результат, вы можете использовать функцию prompt()
, которая возвращает ответ, как только он становится доступен.
// Start by checking if it's possible to create a session based on the
// availability of the model, and the characteristics of the device.
const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
if (available !== 'unavailable') {
const session = await LanguageModel.create();
// Prompt the model and wait for the whole result to come back.
const result = await session.prompt("Write me a poem!");
console.log(result);
}
Потоковый вывод
Если вы ожидаете более длинный ответ, вам следует использовать функцию promptStreaming()
, которая позволяет вам отображать частичные результаты по мере их поступления из модели. Функция promptStreaming()
возвращает ReadableStream
.
const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
if (available !== 'unavailable') {
const session = await LanguageModel.create();
// Prompt the model and stream the result:
const stream = session.promptStreaming('Write me an extra-long poem!');
for await (const chunk of stream) {
console.log(chunk);
}
}
Остановить выполнение приглашения
Оба prompt()
и promptStreaming()
принимают необязательный второй параметр с полем signal
, который позволяет остановить выполнение подсказок.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const result = await session.prompt(
'Write me a poem!',
{ signal: controller.signal }
);
Завершить сеанс
Вызовите destroy()
, чтобы освободить ресурсы, если вам больше не нужен сеанс. Когда сеанс уничтожается, его больше нельзя использовать, и любое текущее выполнение прерывается. Вы можете сохранить сеанс, если собираетесь часто запрашивать модель, так как создание сеанса может занять некоторое время.
await session.prompt(
"You are a friendly, helpful assistant specialized in clothing choices."
);
session.destroy();
// The promise is rejected with an error explaining that
// the session is destroyed.
await session.prompt(
"What should I wear today? It is sunny, and I am unsure between a
t-shirt and a polo."
);
Мультимодальные возможности
API Prompt поддерживает аудио и графические входы из Chrome 138 Canary для локального экспериментирования. API возвращает текстовый вывод.
Используя эти возможности, вы сможете:
- Разрешить пользователям транскрибировать аудиосообщения, отправленные в чат-приложении.
- Опишите изображение, загруженное на ваш сайт, для использования в подписи или альтернативном тексте.
const session = await LanguageModel.create({
// { type: "text" } is not necessary to include explicitly, unless
// you also want to include expected input languages for text.
expectedInputs: [
{ type: "audio" },
{ type: "image" }
]
});
const referenceImage = await (await fetch("/reference-image.jpeg")).blob();
const userDrawnImage = document.querySelector("canvas");
const response1 = await session.prompt([{
role: "user",
content: [
{ type: "text", value: "Give a helpful artistic critique of how well the second image matches the first:" },
{ type: "image", value: referenceImage },
{ type: "image", value: userDrawnImage }
]
}]);
console.log(response1);
const audioBlob = await captureMicrophoneInput({ seconds: 10 });
const response2 = await session.prompt([{
role: "user",
content: [
{ type: "text", value: "My response to your critique:" },
{ type: "audio", value: audioBlob }
]
}]);
Мультимодальные демонстрации
Ознакомьтесь с демонстрацией Mediarecorder Audio Prompt по использованию Prompt API с аудиовходом и демонстрацией Canvas Image Prompt по использованию Prompt API с вводом изображений.
Обратная связь
Ваши отзывы помогают информировать о будущем этого API и улучшениях Gemini Nano. Это может даже привести к созданию API для специальных задач (например, API для аудиотранскрипции или описания изображений), гарантируя, что мы удовлетворяем ваши потребности и потребности ваших пользователей.
Участвуйте и делитесь отзывами
Ваш вклад может напрямую повлиять на то, как мы создаем и реализуем будущие версии этого API и всех встроенных API ИИ.
- Присоединяйтесь к программе предварительного просмотра .
- Чтобы оставить отзыв о реализации Chrome, отправьте отчет об ошибке или запрос на добавление функции .
- Поделитесь своим отзывом о форме API, прокомментировав существующую проблему или открыв новую в репозитории Prompt API GitHub .
- Примите участие в работе над стандартами, присоединившись к группе сообщества Web Incubator .