Gemini API предоставляет вам доступ к новейшим генеративным моделям Google. Ознакомившись с общими функциями, доступными вам через API, попробуйте руководство для выбранного вами языка, чтобы начать разработку.
Модели
Gemini — это серия мультимодальных генеративных моделей искусственного интеллекта, разработанная Google. Модели Gemini могут принимать текст и изображения в подсказках, в зависимости от выбранного вами варианта модели, и выводить текстовые ответы.
Для получения более подробной информации о модели посетите страницу моделей Gemini . Вы также можете использовать метод list_models
для получения списка всех доступных моделей, а затем метод get_model
для получения метаданных для конкретной модели.
Подскажите данные и дизайн
Определенные модели Gemini принимают в качестве входных данных как текстовые данные, так и мультимедийные файлы. Эта возможность создает множество дополнительных возможностей для создания контента, анализа данных и решения проблем. Необходимо учитывать некоторые ограничения и требования, включая общий лимит входных токенов для используемой вами модели. Информацию об ограничениях токенов для конкретных моделей см. в разделе Модели Gemini .
Размер приглашений с использованием Gemini API не может превышать 20 МБ. Gemini API предоставляет файловый API для временного хранения медиафайлов для использования в подсказках, что позволяет предоставлять данные подсказок размером более 20 МБ. Дополнительные сведения об использовании Files API и форматах файлов, поддерживаемых для запросов, см. в разделе Запросы с помощью медиафайлов .
Оперативное оформление и ввод текста
Создание эффективных подсказок или разработка подсказок — это сочетание искусства и науки. Ознакомьтесь с введением в подсказки, чтобы узнать, как подходить к подсказкам, и в руководстве «Подсказка 101» , чтобы узнать о различных подходах к подсказкам.
Генерировать контент
API Gemini позволяет использовать для подсказок как текстовые, так и графические данные, в зависимости от того, какой вариант модели вы используете. Например, вы можете генерировать текст либо из текстовых подсказок, либо из мультимодальных подсказок, используя модель Gemini 1.5. В этом разделе приведены основные примеры кода каждого из них. Более подробный пример, охватывающий все параметры, см. в справочнике по generateContent
.
Ввод текста и изображений
Вы можете отправить текстовую подсказку с изображением на модель Gemini 1.5 для выполнения задачи, связанной со зрением. Например, подпись к изображению или определение того, что находится на изображении.
Следующие примеры кода демонстрируют базовую реализацию текстового и графического приглашения для каждого поддерживаемого языка:
Питон
model = genai.GenerativeModel('gemini-1.5-flash')
cookie_picture = {
'mime_type': 'image/png',
'data': pathlib.Path('cookie.png').read_bytes()
}
prompt = "Do these look store-bought or homemade?"
response = model.generate_content(
model="gemini-1.5-flash",
content=[prompt, cookie_picture]
)
print(response.text)
См. руководство по Python , чтобы увидеть полный фрагмент кода.
Идти
vmodel := client.GenerativeModel("gemini-1.5-flash")
data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
log.Fatal(err)
}
Полный пример смотрите в руководстве по Go .
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
Полный пример см. в руководстве по Node.js.
Интернет
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: base64EncodedImage /* see JavaScript quickstart for details */,
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
Полный пример см. в веб-руководстве .
Дарт (Флаттер)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
Content.multi([
TextPart(prompt),
DataPart('image/png', imageBytes),
])
];
final response = await model.generateContent(content);
print(response.text);
Полный пример см. в руководстве Dart (Flutter) .
Быстрый
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"
let response = try await model.generateContent(prompt, cookieImage)
Полный пример см. в руководстве по Swift .
Андроид
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val cookieImage: Bitmap = // ...
val inputContent = content() {
image(cookieImage)
text("Do these look store-bought or homemade?")
}
val response = generativeModel.generateContent(inputContent)
print(response.text)
Полный пример см. в руководстве по Android .
КУЛЬ
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
-X POST \
-d @<(echo'{
"contents":[
{ "parts":[
{"text": "Do these look store-bought or homemade?"},
{ "inlineData": {
"mimeType": "image/png",
"data": "'$(base64 -w0 cookie.png)'"
}
}
]
}
]
}')
Дополнительные сведения см. в руководстве по REST API .
Ввод только текста
API Gemini также может обрабатывать только текстовый ввод. Эта функция позволяет выполнять задачи обработки естественного языка (NLP), такие как завершение текста и суммирование.
Следующие примеры кода демонстрируют базовую реализацию текстового приглашения для каждого поддерживаемого языка:
Питон
model = genai.GenerativeModel('gemini-1.5-flash')
prompt = "Write a story about a magic backpack."
response = model.generate_content(prompt)
Полный пример см. в руководстве по Python .
Идти
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-1.5-flash")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
log.Fatal(err)
}
Полный пример смотрите в руководстве по Go .
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
Полный пример см. в руководстве по Node.js.
Интернет
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
Полный пример см. в веб-руководстве .
Дарт (Флаттер)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);
Полный пример см. в руководстве Dart (Flutter) .
Быстрый
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let response = try await model.generateContent(prompt)
Полный пример см. в руководстве по Swift .
Андроид
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)
Полный пример см. в руководстве по Android .
КУЛЬ
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{ "contents":[
{ "parts":[{"text": "Write a story about a magic backpack"}]}
]
}'
Дополнительные сведения см. в руководстве по REST API .
Многоходовые разговоры (чат)
Вы можете использовать API Gemini для создания интерактивного чата для ваших пользователей. Использование функции чата API позволяет собирать несколько раундов вопросов и ответов, позволяя пользователям постепенно приближаться к ответам или получать помощь при решении проблем, состоящих из нескольких частей. Эта функция идеально подходит для приложений, требующих постоянного общения, таких как чат-боты, интерактивные репетиторы или помощники по поддержке клиентов.
Следующие примеры кода демонстрируют базовую реализацию взаимодействия в чате для каждого поддерживаемого языка:
Питон
model = genai.GenerativeModel('gemini-1.5-flash')
chat = model.start_chat(history=[])
response = chat.send_message(
"Pretend you\'re a snowman and stay in character for each response.")
print(response.text)
response = chat.send_message(
"What\'s your favorite season of the year?")
print(response.text)
Полный пример см. в демо-версии чата в руководстве по Python .
Идти
model := client.GenerativeModel("gemini-1.5-flash")
cs := model.StartChat()
cs.History = []*genai.Content{
&genai.Content{
Parts: []genai.Part{
genai.Text("Pretend you're a snowman and stay in character for each response."),
},
Role: "user",
},
&genai.Content{
Parts: []genai.Part{
genai.Text("Hello! It's cold! Isn't that great?"),
},
Role: "model",
},
}
resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
log.Fatal(err)
}
Полный пример см. в демо-версии чата в руководстве по Go .
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
Полный пример см. в демонстрации чата в руководстве по Node.js.
Интернет
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's so cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
Полный пример см. в демо-версии чата в веб-руководстве .
Дарт (Флаттер)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final chat = model.startChat(history: [
Content.text(
"Pretend you're a snowman and stay in character for each response."),
Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);
Полный пример см. в демо-версии чата в руководстве по Dart (Flutter) .
Быстрый
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let chat = model.startChat()
var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)
message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)
Полный пример см. в демо-версии чата в руководстве по Swift .
Андроид
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
character for each response.")
print(response.text)
Полный пример см. в руководстве по Android .
КУЛЬ
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -X POST \ -d '{ "contents": [ {"role":"user", "parts":[{ "text": "Pretend you're a snowman and stay in character for each {"role": "model", response."}]}, "parts":[{ "text": "Hello! It's so cold! Isn't that great?"}]}, {"role": "user", "parts":[{ "text": "What\'s your favorite season of the year?"}]}, ] }' 2> /dev/null | grep "text"
# response example: "text": "Winter, of course!"
Дополнительные сведения см. в руководстве по REST API .
Потоковые ответы
Gemini API предоставляет дополнительный способ получения ответов от генеративных моделей ИИ: в виде потока данных. Потоковый ответ отправляет дополнительные фрагменты данных обратно в ваше приложение по мере того, как они генерируются моделью. Эта функция позволяет быстро реагировать на запрос пользователя, чтобы показать прогресс и создать более интерактивный интерфейс.
Потоковые ответы – это вариант подсказок в произвольной форме и общения в чате с моделями Близнецов. В следующих примерах кода показано, как запросить потоковый ответ на запрос для каждого поддерживаемого языка:
Питон
prompt = "Write a story about a magic backpack."
response = genai.stream_generate_content(
model="models/gemini-1.5-flash",
prompt=prompt
)
См. руководство по Python , чтобы увидеть полный фрагмент кода.
Идти
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-1.5-flash")
iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
resp, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatal(err)
}
// print resp
}
Полный пример смотрите в руководстве по Go .
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
Полный пример см. в руководстве по Node.js.
Интернет
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
Полный пример см. в веб-руководстве .
Дарт (Флаттер)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
print(chunk.text);
}
Полный пример см. в руководстве Dart (Flutter) .
Быстрый
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let stream = model.generateContentStream(prompt)
for try await chunk in stream {
print(chunk.text ?? "No content")
}
Полный пример см. в руководстве по Swift .
Андроид
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val inputContent = content {
text("Write a story about a magic backpack.")
}
var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
print(chunk.text)
fullResponse += chunk.text
}
Полный пример см. в руководстве по Android .
КУЛЬ
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:streamGenerateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[
{"role": "user",
"parts":[{"text": "Write a story about a magic backpack."}]
}
]
}' > response.json
Дополнительные сведения см. в руководстве по REST API .
Ответы в формате JSON
В зависимости от вашего приложения вы можете захотеть, чтобы ответ на приглашение возвращался в формате структурированных данных, особенно если вы используете ответы для заполнения программных интерфейсов. API Gemini предоставляет параметр конфигурации для запроса ответа в формате JSON.
Вы можете вывести модель в формате JSON, установив для параметра конфигурации response_mime_type
значение application/json
и в приглашении опишите формат JSON, который вы хотите получить в ответ:
Питон
model = genai.GenerativeModel('gemini-1.5-flash',
generation_config={"response_mime_type": "application/json"})
prompt = """
List 5 popular cookie recipes.
Using this JSON schema:
Recipe = {"recipe_name": str}
Return a `list[Recipe]`
"""
response = model.generate_content(prompt)
print(response.text)
КУЛЬ
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "\nList 5 popular cookie recipes.\n\nUsing this JSON schema:\n\n Recipe = {\"recipe_name\": str}\n\nReturn a `list[Recipe]`\n "
}
]
}
]
"generationConfig": {
"response_mime_type": "application/json",
}
}'
В то время как модели Gemini 1.5 Flash принимают только текстовое описание схемы JSON, которое вы хотите вернуть, модели Gemini 1.5 Pro позволяют передавать объект схемы (или эквивалент типа Python), и выходные данные модели будут строго следовать этой схеме. Это также известно как контролируемая генерация или ограниченное декодирование .
Например, чтобы получить список объектов Recipe
, передайте list[Recipe]
в поле response_schema
аргумента generation_config
:
Питон
import typing_extensions as typing
class Recipe(typing.TypedDict):
recipe_name: str
model = genai.GenerativeModel(model_name="models/gemini-1.5-pro")
result = model.generate_content(
"List 5 popular cookie recipes",
generation_config=genai.GenerationConfig(response_mime_type="application/json",
response_schema = list[Recipe]))
print(result.text)
КУЛЬ
curl https://generativelanguage.googleapis.com/v1beta/models/models/gemini-1.5-pro:generateContent?
-H 'Content-Type: application/json'
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "List 5 popular cookie recipes"
}
]
}
],
"generationConfig": {
"responseMimeType": "application/json",
"responseSchema": {
"type": "ARRAY",
"items": {
"type": "OBJECT",
"properties": {
"recipe_name": {
"type": "STRING"
}
}
}
}
}
}'
```
Дополнительную информацию см. в кратком руководстве по режиму JSON в кулинарной книге Gemini API .
Вложения
Служба встраивания в Gemini API генерирует современные встраивания для слов, фраз и предложений. Полученные вложения затем можно использовать для задач НЛП, таких как семантический поиск, классификация текста и кластеризация, среди многих других. См. руководство по внедрению , чтобы узнать, что такое внедрение, а также некоторые ключевые варианты использования службы внедрения, которые помогут вам начать работу.
Следующие шаги
- Начните работу с пользовательским интерфейсом Google AI Studio, воспользовавшись кратким руководством по Google AI Studio .
- Попробуйте доступ к API Gemini на стороне сервера с помощью руководств по Python , Go или Node.js.
- Начните разработку для Интернета с помощью веб-руководства .
- Начните создавать мобильные приложения с помощью руководства по Swift или руководства по Android .
- Если вы уже являетесь пользователем Google Cloud (или хотите использовать Gemini на Vertex, чтобы воспользоваться преимуществами мощной экосистемы Google Cloud), ознакомьтесь с разделом Генеративный искусственный интеллект на Vertex AI, чтобы узнать больше.