Перейти к основному содержимому

Справочник по Gemini API

Генерация контента

Endpoint

POST https://api.rockapi.ru/google-ai-studio/v1beta/{model=models/*}:generateContent

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

ИмяТипОписание
modelstringОбязательный. Название модели, используемой для генерации контента. Формат: name=models/{model}.

Тело запроса

Тело запроса содержит данные со следующей структурой:

Поля

ИмяТипОписание
contents[]objectОбязательный. Содержимое текущего разговора с моделью. Для одноразовых запросов это один экземпляр. Для многоразовых запросов это повторяющееся поле, содержащее историю разговора и последний запрос.
tools[]objectНеобязательный. Список инструментов, которые модель может использовать для генерации следующего ответа. Инструмент — это часть кода, которая позволяет системе взаимодействовать с внешними системами для выполнения действий за пределами знаний и возможностей модели. Единственный поддерживаемый инструмент на данный момент — это Функция.
toolConfigobjectНеобязательный. Конфигурация инструментов для любого инструмента, указанного в запросе.
safetySettings[]objectНеобязательный. Список уникальных настроек безопасности для блокировки небезопасного контента. Эти настройки будут применяться к GenerateContentRequest.contents и GenerateContentResponse.candidates. В списке не должно быть более одной настройки для каждого типа категории безопасности. API будет блокировать любой контент и ответы, которые не соответствуют установленным порогам. Этот список переопределяет настройки по умолчанию для каждой указанной категории безопасности. Если в списке не указана настройка безопасности для данной категории, API будет использовать настройку безопасности по умолчанию для этой категории. Поддерживаемые категории вреда: HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT.
systemInstructionobjectНеобязательный. Инструкция разработчика для системы. На данный момент, только текст.
generationConfigobjectНеобязательный. Настройки конфигурации для генерации модели и выходных данных.
cachedContentstringНеобязательный. Название кэшированного контента, используемого как контекст для предсказания. Примечание: используется только в явном кэшировании, когда пользователи могут контролировать кэширование (например, что кэшировать) и экономить расходы. Формат: cachedContents/{cachedContent}.

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

import google.generativeai as genai
from google.api_core.client_options import ClientOptions

genai.configure(
api_key='$ROCKAPI_API_KEY',
transport='rest',
client_options=ClientOptions(api_endpoint='https://api.rockapi.ru/google-ai-studio')
)

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Напиши историю о волшебном рюкзаке.")
print(response.text)

Тело ответа

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


Потоковая генерация контента

Endpoint

POST https://api.rockapi.ru/google-ai-studio/v1beta/{model=models/*}:streamGenerateContent

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

ИмяТипОписание
modelstringОбязательный. Название модели, используемой для генерации контента. Формат: name=models/{model}.

Тело запроса

Тело запроса содержит данные со следующей структурой:

Поля

ИмяТипОписание
contents[]objectОбязательный. Содержимое текущего разговора с моделью. Для одноразовых запросов это один экземпляр. Для многоразовых запросов это повторяющееся поле, содержащее историю разговора и последний запрос.
tools[]objectНеобязательный. Список инструментов, которые модель может использовать для генерации следующего ответа. Инструмент — это часть кода, которая позволяет системе взаимодействовать с внешними системами для выполнения действий за пределами знаний и возможностей модели. Единственный поддерживаемый инструмент на данный момент — это Функция.
toolConfigobjectНеобязательный. Конфигурация инструментов для любого инструмента, указанного в запросе.
safetySettings[]objectНеобязательный. Список уникальных настроек безопасности для блокировки небезопасного контента. Эти настройки будут применяться к GenerateContentRequest.contents и GenerateContentResponse.candidates. В списке не должно быть более одной настройки для каждого типа категории безопасности. API будет блокировать любой контент и ответы, которые не соответствуют установленным порогам. Этот список переопределяет настройки по умолчанию для каждой указанной категории безопасности. Если в списке не указана настройка безопасности для данной категории, API будет использовать настройку безопасности по умолчанию для этой категории. Поддерживаемые категории вреда: HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT.
systemInstructionobjectНеобязательный. Инструкция разработчика для системы. На данный момент, только текст.
generationConfigobjectНеобязательный. Настройки конфигурации для генерации модели и выходных данных.
cachedContentstringНеобязательный. Название кэшированного контента, используемого как контекст для предсказания. Примечание: используется только в явном кэшировании, когда пользователи могут контролировать кэширование (например, что кэшировать) и экономить расходы. Формат: cachedContents/{cachedContent}.

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

import google.generativeai as genai
from google.api_core.client_options import ClientOptions

genai.configure(
api_key='$ROCKAPI_API_KEY',
transport='rest',
client_options=ClientOptions(api_endpoint='https://api.rockapi.ru/google-ai-studio')
)

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Напиши историю о волшебном рюкзаке.", stream=True)
for chunk in response:
print(chunk.text)
print("_" * 80)

Тело ответа

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


GenerateContentResponse

Ответ от модели, поддерживающей несколько кандидатов.

Представление JSON

Примечание о рейтингах безопасности и фильтрации контента. Они сообщаются как для запроса в GenerateContentResponse.prompt_feedback, так и для каждого кандидата в finishReason и в safetyRatings. Контракт API заключается в следующем: - либо все запрошенные кандидаты возвращаются, либо не возвращается ни один - кандидаты не возвращаются только в том случае, если что-то не так с запросом (см. promptFeedback) - отзывы по каждому кандидату сообщаются в finishReason и safetyRatings.

{
"candidates": [
{
object (Candidate)
}
],
"promptFeedback": {
object (PromptFeedback)
},
"usageMetadata": {
object (UsageMetadata)
}
}

Поля

ИмяТипОписание
candidates[]objectОтветы-кандидаты от модели.
promptFeedbackobjectВозвращает отзывы о запросе, связанные с фильтрами контента.
usageMetadataobjectМетаданные о использовании токенов в запросе на генерацию.

PromptFeedback

Набор метаданных отзывов о запросе, указанных в GenerateContentRequest.content.

Представление JSON

{
"blockReason": "enum (BlockReason)",
"safetyRatings": [
{
"object": "SafetyRating"
}
]
}

Поля

ИмяТипОписание
blockReasonenumНеобязательный. Если установлено, запрос был заблокирован и кандидаты не возвращаются. Переформулируйте ваш запрос.
safetyRatings[]objectРейтинги безопасности запроса. В каждой категории может быть не более одного рейтинга.

BlockReason

Указывает, по какой причине запрос был заблокирован.

Перечисления

ИмяОписание
BLOCK_REASON_UNSPECIFIEDЗначение по умолчанию. Это значение не используется.
SAFETYЗапрос был заблокирован по соображениям безопасности. Вы можете изучить safetyRatings, чтобы понять, какая категория безопасности его заблокировала.
OTHERЗапрос был заблокирован по неизвестным причинам.

UsageMetadata

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

Представление JSON

{
"promptTokenCount": "integer",
"cachedContentTokenCount": "integer",
"candidatesTokenCount": "integer",
"totalTokenCount": "integer"
}

Поля

ИмяТипОписание
promptTokenCountintegerКоличество токенов в запросе. Когда установлено cachedContent, это все равно общее количество токенов запроса.
cachedContentTokenCountintegerКоличество токенов в кэшированной части запроса, то есть в кэшированном контенте.
candidatesTokenCountintegerОбщее количество токенов среди сгенерированных кандидатов.
totalTokenCountintegerОбщее количество токенов для запроса на генерацию (запрос + кандидаты).

Candidate

Ответ-кандидат, сгенерированный моделью.

Представление JSON

{
"content": {
"object": "Content"
},
"finishReason": "enum (FinishReason)",
"safetyRatings": [
{
"object": "SafetyRating"
}
],
"citationMetadata": {
"object": "CitationMetadata"
},
"tokenCount": "integer",
"groundingAttributions": [
{
"object": "GroundingAttribution"
}
],
"index": "integer"
}

Поля

ИмяТипОписание
contentobjectСгенерированный контент, возвращенный моделью.
finishReasonenumНеобязательный. Причина, по которой модель прекратила генерацию токенов.
safetyRatings[]objectСписок рейтингов безопасности для ответа-кандидата. В каждой категории может быть не более одного рейтинга.
citationMetadataobjectИнформация о цитировании для сгенерированного кандидата.
tokenCountintegerКоличество токенов для этого кандидата.
groundingAttributions[]objectИнформация об источниках, которые внесли вклад в создание ответа.
indexintegerИндекс кандидата в списке кандидатов.

FinishReason

Определяет причину, по которой модель прекратила генерацию токенов.

Перечисления

ИмяОписание
FINISH_REASON_UNSPECIFIEDЗначение по умолчанию. Это значение не используется.
STOPЕстественная точка остановки модели или предоставленная последовательность остановки.
MAX_TOKENSДостигнуто максимальное количество токенов, указанное в запросе.
SAFETYКонтент кандидата был помечен по соображениям безопасности.
RECITATIONКонтент кандидата был помечен по причинам пересказа.
LANGUAGEКонтент кандидата был помечен за использование неподдерживаемого языка.
OTHERНеизвестная причина.

GroundingAttribution

Атрибуция для источника, который внес вклад в ответ.

Представление JSON

{
"sourceId": {
"object": "AttributionSourceId"
},
"content": {
"object": "Content"
}
}

Поля

ИмяТипОписание
sourceIdobjectИдентификатор источника, внесшего вклад в этот ответ.
contentobjectКонтент источника, внесший вклад в этот ответ.

AttributionSourceId

Идентификатор источника, внесшего вклад в этот ответ.

Представление JSON

{
"groundingPassage": {
"object": "GroundingPassageId"
},
"semanticRetrieverChunk": {
"object": "SemanticRetrieverChunk"
}
}

Поля

ИмяТипОписание
groundingPassageobjectИдентификатор для встроенного отрывка.
semanticRetrieverChunkobjectИдентификатор для Чанка, извлеченного с помощью Semantic Retriever.

GroundingPassageId

Идентификатор части в GroundingPassage.

Представление JSON

{
"passageId": "string",
"partIndex": "integer"
}

Поля

ИмяТипОписание
passageIdstringИдентификатор отрывка, соответствующего GenerateAnswerRequest GroundingPassage.id.
partIndexintegerИндекс части в контенте GenerateAnswerRequest GroundingPassage.

SemanticRetrieverChunk

Идентификатор Чанка, извлеченного с помощью Semantic Retriever, указанного в GenerateAnswerRequest с использованием SemanticRetrieverConfig.

Представление JSON

{
"source": "string",
"chunk": "string"
}

Поля

ИмяТипОписание
sourcestringНазвание источника, соответствующего SemanticRetrieverConfig.source в запросе. Пример: corpora/123 или corpora/123/documents/abc.
chunkstringНазвание Чанка, содержащего атрибутированный текст. Пример: corpora/123/documents/abc/chunks/xyz.

CitationMetadata

Коллекция источников атрибуции для части контента.

Представление JSON

{
"citationSources": [
{
"object": "CitationSource"
}
]
}

Поля

ИмяТипОписание
citationSources[]objectЦитаты источников для конкретного ответа.

CitationSource

Цитата источника для части конкретного ответа.

Представление JSON

{
"startIndex": "integer",
"endIndex": "integer",
"uri": "string",
"license": "string"
}

Поля

ИмяТипОписание
startIndexintegerНеобязательный. Начало сегмента ответа, который атрибутируется этому источнику. Индекс указывает начало сегмента, измеряется в байтах.
endIndexintegerНеобязательный. Конец атрибутированного сегмента, исключительно.
uristringНеобязательный. URI, который атрибутируется как источник для части текста.
licensestringНеобязательный. Лицензия для проекта на GitHub, который атрибутируется как источник для сегмента. Лицензионная информация требуется для цитирования кода.

GenerationConfig

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

Представление JSON

{
"stopSequences": [
"string"
],
"responseMimeType": "string",
"responseSchema": {
"object": "Schema"
},
"candidateCount": "integer",
"maxOutputTokens": "integer",
"temperature": "number",
"topP": "number",
"topK": "integer"
}

Поля

ИмяТипОписание
stopSequences[]stringНеобязательный. Набор последовательностей символов (до 5), которые остановят генерацию ответа. Если указано, API остановится при первом появлении последовательности остановки. Последовательность остановки не будет включена в ответ.
responseMimeTypestringНеобязательный. MIME-тип ответа сгенерированного текста. Поддерживаемые MIME-типы: text/plain (по умолчанию), application/json (JSON-ответ в кандидатах).
responseSchemaobjectНеобязательный. Схема ответа сгенерированного текста, когда MIME-тип ответа может иметь схему. Схема может быть объектами, примитивами или массивами и является подмножеством схемы OpenAPI. Если установлено, также должен быть установлен совместимый MIME-тип ответа. Совместимые MIME-типы: application/json (Схема для JSON-ответа).
candidateCountintegerНеобязательный. Количество сгенерированных ответов для возврата. На данный момент это значение может быть установлено только на 1. Если не установлено, по умолчанию будет 1.
maxOutputTokensintegerНеобязательный. Максимальное количество токенов, которые будут включены в кандидата. Примечание: значение по умолчанию зависит от модели, см. атрибут Model.output_token_limit модели, возвращенной функцией getModel.
temperaturenumberНеобязательный. Управляет случайностью выхода. Примечание: значение по умолчанию зависит от модели, см. атрибут Model.temperature модели, возвращенной функцией getModel. Значения могут варьироваться от [0.0, 2.0].
topPnumberНеобязательный. Максимальная совокупная вероятность токенов для рассмотрения при выборке. Модель использует комбинированную выборку Top-k и выборку ядра. Токены сортируются на основе их вероятностей, так что рассматриваются только наиболее вероятные токены. Выборка Top-k напрямую ограничивает максимальное количество рассматриваемых токенов, в то время как выборка ядра ограничивает количество токенов на основе совокупной вероятности. Примечание: значение по умолчанию зависит от модели, см. атрибут Model.top_p модели, возвращенной функцией getModel.
topKintegerНеобязательный. Максимальное количество токенов для рассмотрения при выборке. Модели используют выборку ядра или комбинированную выборку Top-k и выборку ядра. Выборка Top-k рассматривает набор из topK наиболее вероятных токенов. Модели, работающие с выборкой ядра, не позволяют устанавливать topK. Примечание: значение по умолчанию зависит от модели, см. атрибут Model.top_k модели, возвращенной функцией getModel. Пустое поле topK в модели указывает на то, что модель не применяет выборку top-k и не позволяет устанавливать topK в запросах.

HarmCategory

Категория рейтинга. Эти категории охватывают различные виды вреда, которые разработчики могут хотеть регулировать.

Перечисления

ИмяОписание
HARM_CATEGORY_UNSPECIFIEDКатегория не указана.
HARM_CATEGORY_DEROGATORYНегативные или вредные комментарии, направленные на личность и/или защищенный атрибут.
HARM_CATEGORY_TOXICITYСодержит грубый, неуважительный или непристойный контент.
HARM_CATEGORY_VIOLENCEОписывает сценарии, изображающие насилие против человека или группы, или общие описания жестокости.
HARM_CATEGORY_SEXUALСодержит ссылки на сексуальные действия или другой непристойный контент.
HARM_CATEGORY_MEDICALПродвигает непроверенные медицинские советы.
HARM_CATEGORY_DANGEROUSОпасный контент, который продвигает, способствует или поощряет вредоносные действия.
HARM_CATEGORY_HARASSMENTКонтент, содержащий домогательства.
HARM_CATEGORY_HATE_SPEECHКонтент, содержащий ненависть.
HARM_CATEGORY_SEXUALLY_EXPLICITСексуально откровенный контент.
HARM_CATEGORY_DANGEROUS_CONTENTОпасный контент.

SafetyRating

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

Представление JSON

{
"category": "enum (HarmCategory)",
"probability": "enum (HarmProbability)",
"blocked": "boolean"
}

Поля

ИмяТипОписание
categoryenumОбязательный. Категория для этого рейтинга.
probabilityenumОбязательный. Вероятность вреда для этого контента.
blockedbooleanБыл ли этот контент заблокирован из-за этого рейтинга?

HarmProbability

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

Перечисления

ИмяОписание
HARM_PROBABILITY_UNSPECIFIEDВероятность не указана.
NEGLIGIBLEКонтент имеет незначительную вероятность быть небезопасным.
LOWКонтент имеет низкую вероятность быть небезопасным.
MEDIUMКонтент имеет среднюю вероятность быть небезопасным.
HIGHКонтент имеет высокую вероятность быть небезопасным.

SafetySetting

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

Представление JSON

{
"category": "enum (HarmCategory)",
"threshold": "enum (HarmBlockThreshold)"
}

Поля

ИмяТипОписание
categoryenumОбязательный. Категория для этой настройки.
thresholdenumОбязательный. Контролирует порог вероятности, при котором вред блокируется.

HarmBlockThreshold

Блокировка при и выше указанного порога вероятности вреда.

Перечисления

ИмяОписание
HARM_BLOCK_THRESHOLD_UNSPECIFIEDПорог не указан.
BLOCK_LOW_AND_ABOVEКонтент с незначительной вероятностью вреда будет разрешен.
BLOCK_MEDIUM_AND_ABOVEКонтент с незначительной и низкой вероятностью вреда будет разрешен.
BLOCK_ONLY_HIGHКонтент с незначительной, низкой и средней вероятностью вреда будет разрешен.
BLOCK_NONEВесь контент будет разрешен.