סקירה כללית על Gemini API

Gemini API, יקנה לך גישה למודלים הגנרטיביים העדכניים ביותר של Google. אחרי שתכירו את התכונות הכלליות שזמינות לכם דרך ה-API, תוכלו להיעזר במדריך הזה כדי להתחיל לפתח את השפה שבחרתם.

דגמים

Gemini היא סדרה של מודלים מרובי-מצבים של בינה מלאכותית גנרטיבית שפותחה על ידי Google. מודלים של Gemini יכולים לקבל טקסט ותמונה בהנחיות, בהתאם לווריאציית המודל שבוחרים, ובהתאם לפלט של תגובות הטקסט.

למידע מפורט יותר על המודלים, עיינו בדף דגמי Gemini. אפשר גם להשתמש בשיטה list_models כדי להציג רשימה של כל המודלים הזמינים, ולאחר מכן להשתמש בשיטה get_model כדי לקבל את המטא-נתונים של מודל מסוים.

נתונים ועיצוב של ההנחיות

דגמים ספציפיים של Gemini מקבלים גם נתוני טקסט וגם קובצי מדיה כקלט. היכולת הזו יוצרת עוד הרבה אפשרויות ליצירת תוכן, לניתוח נתונים ולפתרון בעיות. יש כמה מגבלות ודרישות שצריך לשקול, כולל המגבלה הכללית של אסימון הקלט למודל שבו אתם משתמשים. למידע על מגבלות האסימונים בדגמים ספציפיים, קראו את המאמר מודלים של Gemini.

גודל הנחיות שמשתמשות ב-Gemini API לא יכול לחרוג מ-20MB. ב-Gemini API יש File API לאחסון זמני של קובצי מדיה לשימוש ביצירת הנחיות, וכך לספק נתוני הנחיות מעבר למגבלה של 20MB. מידע נוסף על השימוש ב-Files API ובפורמטים של קבצים שנתמכים לשליחת הנחיות זמין במאמר הצגת הנחיות עם קובצי מדיה.

עיצוב הנחיות וקלט טקסט

יצירת הנחיות אפקטיביות, או הנדסת פרומפטים, היא שילוב של אומנות ומדע. במבוא להנחיות מוסבר איך לגשת להנחיות ובמדריך הנחיה 101 כדי ללמוד על הגישות השונות ליצירת הנחיות.

יצירת תוכן

ב-Gemini API, אפשר להשתמש גם בנתונים של טקסט וגם בנתונים של תמונה כדי ליצור הנחיות, בהתאם לווריאציית המודל שבה משתמשים. לדוגמה, אפשר ליצור טקסט באמצעות הנחיות טקסט עם המודל gemini-pro, ולהשתמש גם בנתוני טקסט וגם בנתוני תמונה כדי להציג את המודל gemini-pro-vision. בקטע הזה מובאות דוגמאות פשוטות של קוד לכל אחת מהן. בדוגמה מפורטת יותר לכל הפרמטרים, אפשר לעיין בהפניה ל-API generateContent.

קלט טקסט ותמונה

אפשר לשלוח למודל gemini-pro-vision הודעת טקסט עם תמונה כדי לבצע משימה שקשורה לראייה. לדוגמה, הוספת כיתוב לתמונה או זיהוי תוכן התמונה.

דוגמאות הקוד הבאות מדגימות הטמעה פשוטה של הנחיות טקסט ותמונה בכל שפה נתמכת:

Python

model = genai.GenerativeModel('gemini-pro-vision')

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-pro-vision",
    content=[prompt, cookie_picture]
)
print(response.text)

כדי לראות את קטע הקוד המלא, קראו את המדריך ל-Python.

Go

vmodel := client.GenerativeModel("gemini-pro-vision")

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-pro-vision" });

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-pro-vision" });

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-pro-vision', 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).

Swift

let model = GenerativeModel(name: "gemini-pro-vision", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"

let response = try await model.generateContent(prompt, cookieImage)

ראו את המדריך של Swift לקבלת דוגמה מלאה.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro-vision",
    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

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro-vision: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)'"
                  }
                }
              ]
            }
          ]
         }')

לפרטים נוספים, ראו מדריך ל-API ל-REST.

קלט טקסט בלבד

ממשק ה-API של Gemini יכול לטפל גם בקלט טקסט בלבד. התכונה הזו מאפשרת לבצע משימות של עיבוד שפה טבעית (NLP) כמו השלמת טקסט וסיכום.

דוגמאות הקוד הבאות מדגימות הטמעה פשוטה של בקשה לטקסט בלבד בכל שפה נתמכת:

Python

model = genai.GenerativeModel('gemini-pro-vision')

prompt = "Write a story about a magic backpack."

response = model.generate_content(prompt)

כדי לראות את הדוגמה המלאה, קראו את המדריך ל-Python.

Go

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-pro")
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-pro" });
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-pro" });
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-pro', 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).

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let response = try await model.generateContent(prompt)

ראו את המדריך של Swift לקבלת דוגמה מלאה.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)

לדוגמה מלאה, ראו מדריך ל-Android.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[
      { "parts":[{"text": "Write a story about a magic backpack"}]}
    ]
}'

לפרטים נוספים, ראו מדריך ל-API ל-REST.

שיחות עם פניות מרובות (צ'אט)

ניתן להשתמש ב-Gemini API כדי לבנות חוויות צ'אט אינטראקטיביות עבור המשתמשים. תכונת הצ'אט ב-API מאפשרת לאסוף כמה סבבים של שאלות ותשובות, וכך לאפשר למשתמשים להתקדם בהדרגה לקבלת תשובות או לקבל עזרה בבעיות מרובות-חלקים. התכונה הזו אידיאלית לאפליקציות שדורשות תקשורת מתמשכת, כמו צ'אט בוטים, מורים פרטיים אינטראקטיביים או עוזרים של תמיכת לקוחות.

דוגמאות הקוד הבאות מדגימות הטמעה פשוטה של אינטראקציה בצ'אט בכל אחת מהשפות הנתמכות:

Python

  model = genai.GenerativeModel('gemini-pro')
  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.

Go

model := client.GenerativeModel("gemini-pro")
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-pro"});

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-pro"});

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-pro', 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) כדי לראות דוגמה מלאה.

Swift

let model = GenerativeModel(name: "gemini-pro", 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.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro: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!"

לפרטים נוספים, ראו מדריך ל-API ל-REST.

תשובות משודרות

Gemini API מספק דרך נוספת לקבלת תשובות ממודלים של בינה מלאכותית גנרטיבית: כמקור נתונים. בתגובה שמשודרת בסטרימינג, קטעי נתונים מצטברים נשלחים חזרה לאפליקציה שלכם, כאשר היא נוצרת על ידי המודל. התכונה הזו מאפשרת להגיב במהירות לבקשה של משתמש, כדי להראות את ההתקדמות וליצור חוויה אינטראקטיבית יותר.

במודלים של Gemini, אפשר להשתמש בתשובות בשידור חי ובשיחות צ'אט חופשיות. דוגמאות הקוד הבאות מראות איך לבקש תשובה שמשודרת בשידור חי לשאלה בכל שפה נתמכת:

Python

prompt = "Write a story about a magic backpack."

response = genai.stream_generate_content(
    model="models/gemini-pro",
    prompt=prompt
)

כדי לראות את קטע הקוד המלא, קראו את המדריך ל-Python.

Go

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-pro")

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-pro" });
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-pro" });
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-pro', 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).

Swift

let model = GenerativeModel(name: "gemini-pro", 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 לקבלת דוגמה מלאה.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    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

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro: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

לפרטים נוספים, ראו מדריך ל-API ל-REST.

תגובות בפורמט JSON

יכול להיות שתרצו להחזיר את התשובה להנחיה בפורמט של נתונים מובְנים, במיוחד אם אתם משתמשים בתגובות כדי לאכלס ממשקי תכנות. Gemini API מספק פרמטר של הגדרה כדי לבקש תשובה בפורמט JSON.

כדי להשתמש בתכונת הפלט הזו, מגדירים את אפשרות ההגדרה response_mime_type לערך application/json וכוללים מפרט של פורמט JSON בגוף הבקשה. דוגמת הקוד הבאה מציגה איך לבקש תגובת JSON להנחיה:

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[{
            "parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
          "generationConfig": {
            "response_mime_type": "application/json",
          } }'

הטמעות

שירות ההטמעה ב-Gemini API יוצר הטמעות מתקדמות למילים, לביטויים ולמשפטים. אחר כך אפשר להשתמש בהטמעות שיתקבלו למשימות NLP, כמו חיפוש סמנטי, סיווג טקסט וקיבוץ לאשכולות. קראו את המדריך להטמעות כדי ללמוד מהן הטמעות, ולגלות תרחישים לדוגמה עיקריים לשימוש בשירות ההטמעה.

השלבים הבאים