diff --git a/functional-samples/ai.gemini-on-device-alt-texter/background.js b/functional-samples/ai.gemini-on-device-alt-texter/background.js
index 4781a7e3..f427e562 100644
--- a/functional-samples/ai.gemini-on-device-alt-texter/background.js
+++ b/functional-samples/ai.gemini-on-device-alt-texter/background.js
@@ -8,7 +8,7 @@ chrome.runtime.onInstalled.addListener(() => {
async function generateAltText(imgSrc) {
// Create the model (we're not checking availability here, but will simply fail with an exception
const session = await self.LanguageModel.create({
- temperature: 0.8,
+ temperature: 0.0,
topK: 1.0,
expectedInputs: [{ type: 'image' }]
});
diff --git a/functional-samples/ai.gemini-on-device-calendar-mate/background.js b/functional-samples/ai.gemini-on-device-calendar-mate/background.js
index ec21430c..f5bdc98f 100644
--- a/functional-samples/ai.gemini-on-device-calendar-mate/background.js
+++ b/functional-samples/ai.gemini-on-device-calendar-mate/background.js
@@ -84,7 +84,7 @@ function createGoogleCalendarUrl(eventDetails) {
async function parseEventDetails(text) {
const session = await LanguageModel.create({
- temperature: 1.0,
+ temperature: 0,
topK: 1.0
});
diff --git a/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.html b/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.html
index 63cad5d4..5659177e 100644
--- a/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.html
+++ b/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.html
@@ -11,7 +11,7 @@
diff --git a/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.js b/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.js
index 807510b5..991d8b0b 100644
--- a/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.js
+++ b/functional-samples/ai.gemini-on-device-summarization/sidepanel/index.js
@@ -1,3 +1,4 @@
+/* global Summarizer */
import DOMPurify from 'dompurify';
import { marked } from 'marked';
@@ -58,18 +59,31 @@ async function onContentChange(newContent) {
async function generateSummary(text) {
try {
- const session = await createSummarizer(
- {
- type: summaryTypeSelect.value,
- format: summaryFormatSelect.value,
- length: length.value
- },
- (message, progress) => {
- console.log(`${message} (${progress.loaded}/${progress.total})`);
- }
- );
- const summary = await session.summarize(text);
- session.destroy();
+ const options = {
+ sharedContext: 'this is a website',
+ type: summaryTypeSelect.value,
+ format: summaryFormatSelect.value,
+ length: length.value
+ };
+
+ const availability = await Summarizer.availability();
+ let summarizer;
+ if (availability === 'unavailable') {
+ return 'Summarizer API is not available';
+ }
+ if (availability === 'available') {
+ // The Summarizer API can be used immediately .
+ summarizer = await Summarizer.create(options);
+ } else {
+ // The Summarizer API can be used after the model is downloaded.
+ summarizer = await Summarizer.create(options);
+ summarizer.addEventListener('downloadprogress', (e) => {
+ console.log(`Downloaded ${e.loaded * 100}%`);
+ });
+ await summarizer.ready;
+ }
+ const summary = await summarizer.summarize(text);
+ summarizer.destroy();
return summary;
} catch (e) {
console.log('Summary generation failed');
@@ -78,27 +92,6 @@ async function generateSummary(text) {
}
}
-async function createSummarizer(config, downloadProgressCallback) {
- if (!window.Summarizer) {
- throw new Error('AI Summarization is not supported in this browser');
- }
- const available = await window.Summarizer.availability();
- if (available === 'unavailable') {
- throw new Error('AI Summarization is not supported');
- }
- const summarizationSession = await window.Summarizer.create(
- config,
- downloadProgressCallback
- );
- if (available === 'downloadable') {
- summarizationSession.addEventListener(
- 'downloadprogress',
- downloadProgressCallback
- );
- }
- return summarizationSession;
-}
-
async function showSummary(text) {
summaryElement.innerHTML = DOMPurify.sanitize(marked.parse(text));
}