Caching

Кэширование контекста позволяет сохранять и повторно использовать предварительно вычисленные входные токены, которые вы хотите использовать повторно, например, при задании разных вопросов об одном и том же медиафайле. Это может привести к экономии средств и скорости, в зависимости от использования. Подробное описание см. в руководстве по кэшированию контекста .

Метод: cachedContents.create

Создает ресурс CachedContent.

Конечная точка

опубликовать https: / /generativelanguage.googleapis.com /v1beta /cachedContents

Тело запроса

Тело запроса содержит экземпляр CachedContent .

Поля
объект contents[] object ( Content )

Необязательный. Только ввод. Неизменяемый. Содержимое для кэширования.

объект tools[] object ( Tool )

Необязательный. Только ввод. Неизменяемый. Список Tools модель может использовать для генерации следующего ответа.

Union type expiration
Указывает, когда истечет срок действия этого ресурса. expiration может быть только одним из следующих:
строка expireTime string ( Timestamp format)

Временная метка в формате UTC, когда срок действия этого ресурса считается истекшим. Это всегда предоставляется на выходе, независимо от того, что было отправлено на вход.

Использует RFC 3339, где генерируемые выходные данные всегда будут Z-нормализованы и используют 0, 3, 6 или 9 дробных цифр. Также принимаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка ttl string ( Duration format)

Только ввод. Новый срок жизни для этого ресурса, только входные данные.

Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « s ». Пример: "3.5s" .

string name

Необязательный. Идентификатор. Имя ресурса, относящееся к кэшированному содержимому. Формат: cachedContents/{id}

string displayName

Необязательный. Неизменяемый. Созданное пользователем значимое отображаемое имя кэшированного содержимого. Максимум 128 символов Юникода.

model string

Необходимый. Неизменяемый. Имя Model , используемой для кэшированного контента. Формат: models/{model}

object ( Content ) systemInstruction (Содержимое)

Необязательный. Только ввод. Неизменяемый. Разработчик установил системную инструкцию. Пока только текст.

объект toolConfig object ( ToolConfig )

Необязательный. Только ввод. Неизменяемый. Конфигурация инструмента. Эта конфигурация является общей для всех инструментов.

Пример запроса

Базовый

Питон

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});

console.log(cacheResult);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(cacheResult);
const result = await model.generateContent(
  "Please summarize this transcript.",
);
console.log(result.response.text());

Идти

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
prompt := "Please summarize this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Оболочка

wget https://storage.googleapis.com/generativeai-downloads/data/a11.txt
echo '{
  "model": "models/gemini-1.5-flash-001",
  "contents":[
    {
      "parts":[
        {
          "inline_data": {
            "mime_type":"text/plain",
            "data": "'$(base64 $B64FLAGS a11.txt)'"
          }
        }
      ],
    "role": "user"
    }
  ],
  "systemInstruction": {
    "parts": [
      {
        "text": "You are an expert at analyzing transcripts."
      }
    ]
  },
  "ttl": "300s"
}' > request.json

curl -X POST "https://generativelanguage.googleapis.com/v1beta/cachedContents?key=$GOOGLE_API_KEY" \
 -H 'Content-Type: application/json' \
 -d @request.json \
 > cache.json

CACHE_NAME=$(cat cache.json | grep '"name":' | cut -d '"' -f 4 | head -n 1)

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-001:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
      "contents": [
        {
          "parts":[{
            "text": "Please summarize this transcript"
          }],
          "role": "user"
        },
      ],
      "cachedContent": "'$CACHE_NAME'"
    }'

От имени

Питон

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheName = cacheResult.name; // Save the name for later.

// Later
const getCacheResult = await cacheManager.get(cacheName);
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(getCacheResult);
model.generateContent("Please summarize this transcript.");

Идти

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Из чата

Питон

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash-001" });
const chat = model.startChat();

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

let result = await chat.sendMessage([
  "Hi, could you summarize this transcript?",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(`\n\nmodel: ${result.response.text()}`);
result = await chat.sendMessage(
  "Okay, could you tell me more about the trans-lunar injection",
);
console.log(`\n\nmodel: ${result.response.text()}`);

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: await chat.getHistory(),
});

const newModel = genAI.getGenerativeModelFromCachedContent(cacheResult);

const newChat = newModel.startChat();
result = await newChat.sendMessage(
  "I didn't understand that last part, could you explain it in simpler language?",
);
console.log(`\n\nmodel: ${result.response.text()}`);

Идти

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

modelName := "gemini-1.5-flash-001"
model := client.GenerativeModel(modelName)
model.SystemInstruction = genai.NewUserContent(genai.Text("You are an expert analyzing transcripts."))

cs := model.StartChat()
resp, err := cs.SendMessage(ctx, genai.Text("Hi, could you summarize this transcript?"), fd)
if err != nil {
	log.Fatal(err)
}

resp, err = cs.SendMessage(ctx, genai.Text("Okay, could you tell me more about the trans-lunar injection"))
if err != nil {
	log.Fatal(err)
}

// To cache the conversation so far, pass the chat history as the list of
// contents.

argcc := &genai.CachedContent{
	Model:             modelName,
	SystemInstruction: model.SystemInstruction,
	Contents:          cs.History,
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
cs = modelWithCache.StartChat()
resp, err = cs.SendMessage(ctx, genai.Text("I didn't understand that last part, could you please explain it in simpler language?"))
if err != nil {
	log.Fatal(err)
}
printResponse(resp)

Тело ответа

В случае успеха тело ответа содержит вновь созданный экземпляр CachedContent .

Метод: cachedContents.list

Перечисляет кэшированное содержимое.

Конечная точка

получить https: / /generativelanguage.googleapis.com /v1beta /cachedContents

Параметры запроса

pageSize integer

Необязательный. Максимальное количество возвращаемого кэшированного содержимого. Служба может возвращать меньшее значение, чем это значение. Если не указано, будет возвращено некоторое количество элементов по умолчанию (меньше максимального). Максимальное значение — 1000; значения выше 1000 будут приведены к 1000.

string pageToken

Необязательный. Токен страницы, полученный в результате предыдущего вызова cachedContents.list . Предоставьте это, чтобы получить следующую страницу.

При разбиении на страницы все остальные параметры, предоставленные в файле cachedContents.list , должны соответствовать вызову, который предоставил токен страницы.

Тело запроса

Тело запроса должно быть пустым.

Тело ответа

Ответ со списком CachedContents.

В случае успеха тело ответа содержит данные следующей структуры:

Поля
объект cachedContents[] object ( CachedContent )

Список кэшированного содержимого.

nextPageToken string PageToken

Токен, который можно отправить как pageToken для получения следующей страницы. Если это поле опущено, последующие страницы отсутствуют.

JSON-представление
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

Метод: кэшедКонтентс.get

Читает ресурс CachedContent.

Конечная точка

получить https: / /generativelanguage.googleapis.com /v1beta /{name=cachedContents /*}

Параметры пути

string name

Необходимый. Имя ресурса, относящееся к записи кэша контента. Формат: cachedContents/{id} Он принимает форму cachedContents/{cachedcontent} .

Тело запроса

Тело запроса должно быть пустым.

Пример запроса

Питон

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheGetResult = await cacheManager.get(cacheResult.name);
console.log(cacheGetResult);

Идти

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

Оболочка

curl "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GOOGLE_API_KEY"

Тело ответа

В случае успеха тело ответа содержит экземпляр CachedContent .

Метод: cachedContents.patch

Обновляет ресурс CachedContent (обновляется только срок действия).

Конечная точка

патч https: / /generativelanguage.googleapis.com /v1beta /{cachedContent.name=cachedContents /*}
PATCH https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

Параметры пути

string cachedContent.name

Необязательный. Идентификатор. Имя ресурса, относящееся к кэшированному содержимому. Формат: cachedContents/{id} Он принимает форму cachedContents/{cachedcontent} .

Параметры запроса

string ( FieldMask format) updateMask (формат FieldMask)

Список полей для обновления.

Это разделенный запятыми список полных имен полей. Пример: "user.displayName,photo" .

Тело запроса

Тело запроса содержит экземпляр CachedContent .

Поля
Union type expiration
Указывает, когда истечет срок действия этого ресурса. expiration может быть только одним из следующих:
строка expireTime string ( Timestamp format)

Временная метка в формате UTC, когда срок действия этого ресурса считается истекшим. Это всегда предоставляется на выходе, независимо от того, что было отправлено на вход.

Использует RFC 3339, где генерируемые выходные данные всегда будут нормализованы по Z и используют 0, 3, 6 или 9 дробных цифр. Также принимаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка ttl string ( Duration format)

Только ввод. Новый срок жизни для этого ресурса, только входные данные.

Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « s ». Пример: "3.5s" .

string name

Необязательный. Идентификатор. Имя ресурса, относящееся к кэшированному содержимому. Формат: cachedContents/{id}

Пример запроса

Питон

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
console.log("initial cache data:", cacheResult);
const cacheUpdateResult = await cacheManager.update(cacheResult.name, {
  cachedContent: {
    // 2 hours
    ttlSeconds: 60 * 60 * 2,
  },
});
console.log("updated cache data:", cacheUpdateResult);

Идти

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

Оболочка

curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GOOGLE_API_KEY" \
 -H 'Content-Type: application/json' \
 -d '{"ttl": "600s"}'

Тело ответа

В случае успеха тело ответа содержит экземпляр CachedContent .

Метод: cachedContents.delete

Удаляет ресурс CachedContent.

Конечная точка

удалить https: / /generativelanguage.googleapis.com /v1beta /{name=cachedContents /*}

Параметры пути

string name

Необходимый. Имя ресурса, относящееся к записи кэша контента. Формат: cachedContents/{id} Он принимает форму cachedContents/{cachedcontent} .

Тело запроса

Тело запроса должно быть пустым.

Пример запроса

Питон

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
await cacheManager.delete(cacheResult.name);

Идти

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

Оболочка

curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GOOGLE_API_KEY"

Тело ответа

В случае успеха тело ответа представляет собой пустой объект JSON.

Ресурс REST: кэшированный контент

Ресурс: CachedContent

Содержимое, которое было предварительно обработано и может использоваться в последующем запросе к GenerativeService.

Кэшированный контент можно использовать только с моделью, для которой он был создан.

Поля
объект contents[] object ( Content )

Необязательный. Только ввод. Неизменяемый. Содержимое для кэширования.

tools[] object ( Tool )

Необязательный. Только ввод. Неизменяемый. Список Tools модель может использовать для генерации следующего ответа.

строка createTime string ( Timestamp format)

Только вывод. Время создания записи кэша.

Использует RFC 3339, где генерируемые выходные данные всегда будут Z-нормализованы и используют 0, 3, 6 или 9 дробных цифр. Также принимаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

Строка updateTime string ( Timestamp format)

Только вывод. Когда запись кэша была последний раз обновлена ​​по времени UTC.

Использует RFC 3339, где генерируемые выходные данные всегда будут нормализованы по Z и используют 0, 3, 6 или 9 дробных цифр. Также принимаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

объект usageMetadata object ( UsageMetadata )

Только вывод. Метаданные об использовании кэшированного контента.

Union type expiration
Указывает, когда истечет срок действия этого ресурса. expiration может быть только одним из следующих:
строка expireTime string ( Timestamp format)

Временная метка в формате UTC, когда срок действия этого ресурса считается истекшим. Это всегда предоставляется на выходе, независимо от того, что было отправлено на вход.

Использует RFC 3339, где генерируемые выходные данные всегда будут Z-нормализованы и используют 0, 3, 6 или 9 дробных цифр. Также принимаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

строка ttl string ( Duration format)

Только ввод. Новый срок жизни для этого ресурса, только входные данные.

Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « s ». Пример: "3.5s" .

string name

Необязательный. Идентификатор. Имя ресурса, относящееся к кэшированному содержимому. Формат: cachedContents/{id}

string displayName

Необязательный. Неизменяемый. Созданное пользователем значимое отображаемое имя кэшированного содержимого. Максимум 128 символов Юникода.

model string

Необходимый. Неизменяемый. Имя Model , используемой для кэшированного контента. Формат: models/{model}

object ( Content ) systemInstruction (Содержимое)

Необязательный. Только ввод. Неизменяемый. Разработчик установил системную инструкцию. Пока только текст.

объект toolConfig object ( ToolConfig )

Необязательный. Только ввод. Неизменяемый. Конфигурация инструмента. Эта конфигурация является общей для всех инструментов.

JSON-представление
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // expiration
  "expireTime": string,
  "ttl": string
  // Union type
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}

Содержание

Базовый структурированный тип данных, содержащий содержимое сообщения, состоящее из нескольких частей.

Content включает в себя поле role , обозначающее производителя Content , и поле parts , содержащее данные, состоящие из нескольких частей, которые содержат содержимое очереди сообщения.

Поля
object ( Part ) parts[] ( Часть )

Заказанные Parts , составляющие одно сообщение. Части могут иметь разные типы MIME.

role string

Необязательный. Производитель контента. Должно быть либо «пользователь», либо «модель».

Полезно для многоходовых разговоров, в противном случае его можно оставить пустым или не установить.

JSON-представление
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Часть

Тип данных, содержащий медиафайлы, которые являются частью сообщения Content состоящего из нескольких частей.

Part состоит из данных, имеющих связанный тип данных. Part может содержать только один из типов, принятых в Part.data .

Part должна иметь фиксированный тип IANA MIME, определяющий тип и подтип носителя, если поле inlineData заполнено необработанными байтами.

Поля
Union type data
data могут быть только одним из следующих:
text string

Встроенный текст.

объект inlineData object ( Blob )

Встроенные медиабайты.

object ( FunctionCall ) functionCall ( FunctionCall )

Прогнозируемый вызов FunctionCall возвращенный из модели, содержит строку, представляющую FunctionDeclaration.name с аргументами и их значениями.

объект functionResponse object ( FunctionResponse )

Результат вызова FunctionCall , содержащий строку, представляющую FunctionDeclaration.name , и структурированный объект JSON, содержащий любые выходные данные функции, используется в качестве контекста для модели.

объект fileData object ( FileData )

Данные на основе URI.

object ( ExecutableCode ) executableCode (ExexetableCode)

Код, сгенерированный моделью, предназначенный для выполнения.

object ( CodeExecutionResult ) codeExecutionResult ( CodeExecutionResult )

Результат выполнения ExecutableCode .

JSON-представление
{

  // data
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  }
  // Union type
}

Блоб

Необработанные медиабайты.

Текст не следует отправлять в виде необработанных байтов, используйте поле «текст».

Поля
string mimeType

Стандартный MIME-тип IANA исходных данных. Примеры: - image/png - image/jpeg Если указан неподдерживаемый тип MIME, будет возвращена ошибка. Полный список поддерживаемых типов см. в разделе Поддерживаемые форматы файлов .

string ( bytes format) data (формат байтов)

Необработанные байты для медиаформатов.

Строка в кодировке Base64.

JSON-представление
{
  "mimeType": string,
  "data": string
}

Вызов функции

Прогнозируемый вызов FunctionCall возвращенный из модели, содержит строку, представляющую FunctionDeclaration.name с аргументами и их значениями.

Поля
string id

Необязательный. Уникальный идентификатор вызова функции. Если оно заполнено, клиент выполняет functionCall и возвращает ответ с соответствующим id .

string name

Необходимый. Имя функции, которую нужно вызвать. Должен быть az, AZ, 0–9 или содержать символы подчеркивания и тире, максимальная длина — 63.

объект args object ( Struct format)

Необязательный. Параметры и значения функции в формате объекта JSON.

JSON-представление
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

ФункцияОтвет

Выходные данные FunctionCall , содержащие строку, представляющую FunctionDeclaration.name , и структурированный объект JSON, содержащий любые выходные данные функции, используются в качестве контекста для модели. Он должен содержать результат вызова FunctionCall , созданного на основе предсказания модели.

Поля
string id

Необязательный. Идентификатор вызова функции, для которого предназначен этот ответ. Заполняется клиентом в соответствии с id вызова соответствующей функции.

string name

Необходимый. Имя функции, которую нужно вызвать. Должен быть az, AZ, 0–9 или содержать символы подчеркивания и тире, максимальная длина — 63.

объект response object ( Struct format)

Необходимый. Ответ функции в формате объекта JSON.

JSON-представление
{
  "id": string,
  "name": string,
  "response": {
    object
  }
}

ФайлДанные

Данные на основе URI.

Поля
string mimeType

Необязательный. Стандартный MIME-тип IANA исходных данных.

string fileUri

Необходимый. УРИ.

JSON-представление
{
  "mimeType": string,
  "fileUri": string
}

Исполняемыйкод

Код, сгенерированный моделью, предназначенный для выполнения, и результат, возвращаемый в модель.

Генерируется только при использовании инструмента CodeExecution , в котором код будет автоматически выполнен, а также будет сгенерирован соответствующий CodeExecutionResult .

Поля
language enum ( Language )

Необходимый. Язык программирования code .

code string

Необходимый. Код, который будет выполнен.

JSON-представление
{
  "language": enum (Language),
  "code": string
}

Язык

Поддерживаемые языки программирования для сгенерированного кода.

Перечисления
LANGUAGE_UNSPECIFIED Неуказанный язык. Это значение не следует использовать.
PYTHON Python >= 3.10, доступны numpy и simpy.

КодExecutionResult

Результат выполнения ExecutableCode .

Генерируется только при использовании CodeExecution и всегда следует за part содержащей ExecutableCode .

Поля
перечисление outcome enum ( Outcome )

Необходимый. Результат выполнения кода.

output string

Необязательный. Содержит стандартный вывод в случае успешного выполнения кода, в противном случае — стандартный вывод или другое описание.

JSON-представление
{
  "outcome": enum (Outcome),
  "output": string
}

Исход

Перечисление возможных результатов выполнения кода.

Перечисления
OUTCOME_UNSPECIFIED Неопределенный статус. Это значение не следует использовать.
OUTCOME_OK Выполнение кода завершено успешно.
OUTCOME_FAILED Выполнение кода завершилось, но с ошибкой. stderr должен содержать причину.
OUTCOME_DEADLINE_EXCEEDED Выполнение кода продолжалось слишком долго и было отменено. Частичный вывод может присутствовать или отсутствовать.

Инструмент

Сведения об инструменте, которые модель может использовать для генерации ответа.

Tool — это часть кода, которая позволяет системе взаимодействовать с внешними системами для выполнения действия или набора действий за пределами знаний и области действия модели.

Поля
объект functionDeclarations[] object ( FunctionDeclaration )

Необязательный. Список FunctionDeclarations доступных для модели, которые можно использовать для вызова функций.

Модель или система не выполняет функцию. Вместо этого определенная функция может быть возвращена как FunctionCall с аргументами на стороне клиента для выполнения. Модель может решить вызвать подмножество этих функций, заполнив FunctionCall в ответе. Следующий ход диалога может содержать FunctionResponse с контекстом генерации «функции» Content.role для следующего хода модели.

object ( GoogleSearchRetrieval ) googleSearchRetrieval ( GoogleSearchRetrival )

Необязательный. Инструмент поиска, работающий на основе поиска Google.

object ( CodeExecution ) codeExecution ( CodeExecution )

Необязательный. Позволяет модели выполнять код в рамках генерации.

JSON-представление
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  }
}

Объявление функции

Структурированное представление объявления функции, определенное спецификацией OpenAPI 3.03 . В это объявление включены имя функции и параметры. Это объявление функции является представлением блока кода, который может использоваться моделью в качестве Tool и выполняться клиентом.

Поля
string name

Необходимый. Имя функции. Должен быть az, AZ, 0–9 или содержать символы подчеркивания и тире, максимальная длина — 63.

string description

Необходимый. Краткое описание функции.

объект parameters object ( Schema )

Необязательный. Описывает параметры этой функции. Отражает строку объекта параметра Open API 3.03. Ключ: имя параметра. Имена параметров чувствительны к регистру. Значение схемы: схема, определяющая тип, используемый для параметра.

объект response object ( Schema )

Необязательный. Описывает выходные данные этой функции в формате JSON Schema. Отражает объект ответа Open API 3.03. Схема определяет тип, используемый для значения ответа функции.

JSON-представление
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  },
  "response": {
    object (Schema)
  }
}

Схема

Объект Schema позволяет определять типы входных и выходных данных. Эти типы могут быть объектами, а также примитивами и массивами. Представляет выбранное подмножество объекта схемы OpenAPI 3.0 .

Поля
type enum ( Type )

Необходимый. Тип данных.

string format

Необязательный. Формат данных. Это используется только для примитивных типов данных. Поддерживаемые форматы: для типа NUMBER: float, double для типа INTEGER: int32, int64 для типа STRING: enum, date-time.

string description

Необязательный. Краткое описание параметра. Это может содержать примеры использования. Описание параметра может быть отформатировано как Markdown.

boolean nullable

Необязательный. Указывает, может ли значение быть нулевым.

string enum[]

Необязательный. Возможные значения элемента Type.STRING в формате перечисления. Например, мы можем определить направление перечисления как: {type:STRING, format:enum, enum:["ВОСТОК", СЕВЕР", "ЮГ", "ЗАПАД"]}

string ( int64 format) maxItems (формат int64)

Необязательный. Максимальное количество элементов для Type.ARRAY.

string ( int64 format) minItems (формат int64)

Необязательный. Минимальное количество элементов для Type.ARRAY.

карта properties map (key: string, value: object ( Schema ))

Необязательный. Свойства Type.OBJECT.

Объект, содержащий список пар "key": value . Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" } .

required[] string

Необязательный. Обязательные свойства Type.OBJECT.

propertyOrdering[] string

Необязательный. Порядок свойств. Не стандартное поле в спецификации открытого API. Используется для определения порядка свойств в ответе.

объект items object ( Schema )

Необязательный. Схема элементов Type.ARRAY.

JSON-представление
{
  "type": enum (Type),
  "format": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "propertyOrdering": [
    string
  ],
  "items": {
    object (Schema)
  }
}

Тип

Тип содержит список типов данных OpenAPI, как определено https://spec.openapis.org/oas/v3.0.3#data-types .

Перечисления
TYPE_UNSPECIFIED Не указано, не следует использовать.
STRING Тип строки.
NUMBER Тип номера.
INTEGER Целочисленный тип.
BOOLEAN Булев тип.
ARRAY Тип массива.
OBJECT Тип объекта.

Поиск GoogleПоиск

Инструмент для получения общедоступных веб-данных для заземления, созданный Google.

Поля
object ( DynamicRetrievalConfig ) dynamicRetrievalConfig ( DynamicRetrivalConfig )

Указывает конфигурацию динамического получения для данного источника.

JSON-представление
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

Динамическая ретривалконфиг

Описывает параметры настройки динамического извлечения.

Поля
перечисление mode enum ( Mode )

Режим предиктора, который будет использоваться при динамическом поиске.

number dynamicThreshold

Порог, который будет использоваться при динамическом извлечении. Если не установлено, используется системное значение по умолчанию.

JSON-представление
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Режим

Режим предиктора, который будет использоваться при динамическом поиске.

Перечисления
MODE_UNSPECIFIED Всегда запускайте извлечение.
MODE_DYNAMIC Запускайте извлечение только тогда, когда система сочтет это необходимым.

Выполнение кода

Этот тип не имеет полей.

Инструмент, который выполняет код, сгенерированный моделью, и автоматически возвращает результат в модель.

См. также ExecutableCode и CodeExecutionResult , которые генерируются только при использовании этого инструмента.

GoogleПоиск

Этот тип не имеет полей.

Тип инструмента GoogleSearch. Инструмент для поддержки поиска Google в модели. При поддержке Google.

ИнструментКонфигурация

Конфигурация инструмента, содержащая параметры для указания использования Tool в запросе.

Поля
object ( FunctionCallingConfig ) functionCallingConfig ( FunctionCallingConfig )

Необязательный. Конфигурация вызова функции.

JSON-представление
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

ФункцияCallingConfig

Конфигурация для указания поведения вызова функций.

Поля
перечисление mode enum ( Mode )

Необязательный. Указывает режим, в котором должен выполняться вызов функции. Если не указано, значение по умолчанию будет установлено на АВТО.

allowedFunctionNames[] string

Необязательный. Набор имен функций, который, если он указан, ограничивает функции, которые будет вызывать модель.

Это значение следует устанавливать только в том случае, если выбран режим ЛЮБОЙ. Имена функций должны соответствовать [FunctionDeclaration.name]. Если для режима установлено значение ЛЮБОЙ, модель будет прогнозировать вызов функции на основе предоставленного набора имен функций.

JSON-представление
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

Режим

Определяет поведение выполнения для вызова функции путем определения режима выполнения.

Перечисления
MODE_UNSPECIFIED Неопределенный режим вызова функции. Это значение не следует использовать.
AUTO Поведение модели по умолчанию: модель решает предсказать либо вызов функции, либо ответ на естественном языке.
ANY Модель ограничена всегда прогнозированием только вызова функции. Если установлены «allowedFunctionNames», прогнозируемый вызов функции будет ограничен любым из «allowedFunctionNames», в противном случае прогнозируемый вызов функции будет любым из предоставленных «объявлений функций».
NONE Модель не будет предсказывать какой-либо вызов функции. Поведение модели такое же, как и при отсутствии каких-либо объявлений функций.

Использованиеметаданные

Метаданные об использовании кэшированного контента.

Поля
totalTokenCount integer

Общее количество токенов, которые потребляет кэшированный контент.

JSON-представление
{
  "totalTokenCount": integer
}