Поддержка Gemini 1.0 Pro Vision прекращена 12 июля 2024 г. Рассмотрите возможность перехода на другую модель, например Gemini-1.5-flash

Я следую инструкциям из пункта 5. Вызов Gemini API с изображениями из Автоматизация задач Google Workspace с помощью Gemini API. При запуске testGeminiVision я получил сокращенное сообщение об ошибке с предложением использовать muteHttpExceptions.

Я изменил код, добавив 'muteHttpExceptions': true к объявлению переменной options в функции callGeminiProVision. Теперь в журналах выполнения я получил следующее:

13 авг. 2024 г., 11:09:46 Отлаживать
Provide a fun fact about this object. {
"error": {
"code": 404,
"message": "Gemini 1.0 Pro Vision has been deprecated on July 12, 2024. Consider switching to different model, for example gemini-1.5-flash.",
"status": "NOT_FOUND"
}
}

Погуглив сообщение, я обнаружил проблему в репозитории GitHub: https://github.com/OthersideAI/self-operating-computer/issues/204, но пока не исправлена.

Я также искал примечания к выпуску и документацию Gemini, но мне нужна была помощь в исправлении кода Codelab. Я нашел предложения перейти на Google AI Vertex, но для этого требуются существенные изменения.


Минимальный полный пример

Код адаптирован из упомянутой Codelab. Я удалил части, которые не нужны для воспроизведения проблемы, с которой я столкнулся. Чтобы запустить этот код, вам необходимо получить ключ Gemini API и добавить свойство скрипта, используя GOOGLE_API_KEY в качестве имени свойства. В упомянутой Codelab есть подробные инструкции для этого.

После завершения настройки проекта Apps Script в редакторе сценариев Google Apps выберите testGeminiVision, затем нажмите «Выполнить».


const properties = PropertiesService.getScriptProperties().getProperties();
const geminiApiKey = properties['GOOGLE_API_KEY'];
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;

function callGeminiProVision(prompt, image, temperature = 0) {
    const imageData = Utilities.base64Encode(image.getAs('image/png').getBytes());

    const payload = {
        "contents": [
            {
                "parts": [
                    {
                        "text": prompt
                    },
                    {
                        "inlineData": {
                            "mimeType": "image/png",
                            "data": imageData
                        }
                    }
                ]
            }
        ],
        "generationConfig": {
            "temperature": temperature,
        },
    };
    
    const options = {
        'method': 'post',
        'contentType': 'application/json',
        'payload': JSON.stringify(payload),
        'muteHttpExceptions': true
    };
    
    const response = UrlFetchApp.fetch(geminiProVisionEndpoint, options);
    if (response.getResponseCode() !== 200) {
        return response.getContentText();
    }
    const data = JSON.parse(response);
    const content = data["candidates"][0]["content"]["parts"][0]["text"];
    return content;

}

function testGeminiVision() {
    const prompt = "Provide a fun fact about this object.";
    const image = UrlFetchApp.fetch('https://storage.googleapis.com/generativeai-downloads/images/instrument.jpg').getBlob();
    const output = callGeminiProVision(prompt, image);
    console.info(prompt, output);
}

Это вопрос, на который можно ответить самому себе. Я опустил несколько вещей, которые пробовал. Некоторые были очень тупыми, а другие не очень.

Wicket 13.08.2024 19:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TLDR:

Замените models/gemini-1.0-pro-vision-latest на models/gemini-1.5-flash-latest.


От

const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;

К

const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=${geminiApiKey}`;

Другие вопросы по теме