Очень важно указать systemInstruction при отправке запроса к Gemini API

как указать systemInstruction при отправке запроса к API Gemini с помощью Vertex AI. Игровая площадка vertex ai показывает способ сделать это с помощью python, но не с помощью узла js.

Указанный метод Python:

def multiturn_generate_content():
  vertexai.init(project = "myProjectId", location = "us-central1")
  model = GenerativeModel(
    "gemini-1.0-pro-002",
    system_instruction=["""you are an ai assistant"""]
  )
  chat = model.start_chat()
  
  #rest of the code

multiturn_generate_content()

Что я пробовал с узлом js:

Обратите внимание на ошибки: ClientError: [VertexAI.ClientError]: No content is provided for sending chat message.


const { VertexAI } = require('@google-cloud/vertexai')

let generativeModel;

const projectId = 'myProjectId';
const location = 'us-central1';
const model = 'gemini-1.0-pro-002';

function initializeGenerativeModel() {
    try {
        const vertex_ai = new VertexAI({ project: projectId, location: location, model: model });

        generativeModel = vertex_ai.preview.getGenerativeModel({
            model: model,
            generationConfig: {
                'maxOutputTokens': 8192,
                'temperature': 1,
                'topP': 0.95,
            },
            safetySettings: [
                {
                    'category': 'HARM_CATEGORY_HATE_SPEECH',
                    'threshold': 'BLOCK_MEDIUM_AND_ABOVE'
                },
                {
                    'category': 'HARM_CATEGORY_DANGEROUS_CONTENT',
                    'threshold': 'BLOCK_MEDIUM_AND_ABOVE'
                },
                {
                    'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT',
                    'threshold': 'BLOCK_MEDIUM_AND_ABOVE'
                },
                {
                    'category': 'HARM_CATEGORY_HARASSMENT',
                    'threshold': 'BLOCK_MEDIUM_AND_ABOVE'
                }
            ],
        });
    } catch (error) {
        console.error('Error initializing VertexAI:', error);
        throw error;
    }
}

initializeGenerativeModel();

async function gemini_1_0_pro(query) {
  try {
      const chat = generativeModel.startChat();
      const systemInstruction = "You are an ai assistant";
      const result = await chat.sendMessageStream({
          role: 'system',
          content: systemInstruction
      });

      await chat.sendMessageStream({
          role: 'user',
          content: query
      });

      for await (const item of result.stream) {
          const response = item.candidates[0].content.parts[0].text;
          console.info(response)
      }
      const aggregatedResponse = await result.response;
      console.info(aggregatedResponse)
  } catch (error) {
      console.error('Error in gemini_1_0_pro:', error);
  }
}

module.exports = { gemini_1_0_pro };

это помогает?

DazWilkin 01.05.2024 17:33

@DazWilkin пример кода, который они предоставляют для системных инструкций, предназначен только для Python. Я пытался реализовать это для узла js (как показано выше), но не могу заставить его работать)

seriously 01.05.2024 18:56

Нет, это не так. Ссылка, которую я вам отправил, по умолчанию должна указывать на образец Node.JS. Если это не так, под «Отправить подсказки чата» есть селектор, позволяющий выбрать предпочитаемый язык.

DazWilkin 01.05.2024 19:16

Код JS узла @DazWilkin предназначен только для отправки подсказок в чат. Для системных инструкций по умолчанию используется Python и нет селектора для переключения на узел js. Вот посмотрите: cloud.google.com/vertex-ai/generative-ai/docs/multimodal/…

seriously 01.05.2024 20:02

Вы правы, мои извинения.

DazWilkin 01.05.2024 20:03
Стоит ли изучать 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
5
462
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Хорошо, извините за мое недопонимание.

Похоже, вы можете:

const generativeModel = vertexAI.getGenerativeModel({
  ...
  systemInstruction: {
    role: "system",
    parts: [{text: "You are an AI assistant"}]
  }
});

Или

const chat = generativeModel.startChat({
  systemInstruction: {
    role: "system",
    parts: [{text: "You are an AI assistant"}]
  }
});

Я нашел следующее полезным:

И я наконец (!) нашел документацию по API, которая это подтверждает:

Спасибо, это работает! мб за поздний ответ, разные часовые пояса :)

seriously 02.05.2024 07:48

Мне приятно это слышать!

DazWilkin 02.05.2024 14:47

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