Görüntü anlama

Gemini modelleri, geçmişte alana özgü modeller gerektiren birçok yenilikçi geliştirici kullanım alanını etkinleştirerek resimleri işleyebilir. Gemini'nin görüntüleme özelliklerinden bazıları şunlardır:

  • Görsellere altyazı ekleme ve görsellerle ilgili soruları yanıtlama
  • 2 milyon jetona kadar olan PDF'leri metne dönüştürme ve bunlarla ilgili çıkarım yapma
  • Bir resimdeki nesneleri algılayıp bu nesnelerin sınırlayıcı kutu koordinatlarını döndürme
  • Resimdeki nesneleri segmentlere ayırma

Gemini, sıfırdan çok formatlı olacak şekilde tasarlandı ve yapabileceklerimizin sınırlarını zorlamaya devam ediyoruz. Bu kılavuzda, resim girişlerine göre metin yanıtları oluşturmak ve yaygın görüntü anlama görevlerini gerçekleştirmek için Gemini API'nin nasıl kullanılacağı gösterilmektedir.

Başlamadan önce

Gemini API'yi çağırmadan önce seçtiğiniz SDK'nın yüklü olduğundan ve Gemini API anahtarının yapılandırılmış ve kullanıma hazır olduğundan emin olun.

Resim girişi

Gemini'ye resimleri aşağıdaki şekillerde gönderebilirsiniz:

  • generateContent isteğinde bulunmadan önce File API'yi kullanarak bir resim dosyası yükleyin. 20 MB'tan büyük dosyalar veya dosyayı birden fazla istekte yeniden kullanmak istediğinizde bu yöntemi kullanın.
  • generateContent isteğiyle satır içi resim verilerini iletin. Bu yöntemi, daha küçük dosyalar (<20 MB toplam istek boyutu) veya doğrudan URL'lerden alınan resimler için kullanın.

Resim dosyası yükleme

Resim dosyası yüklemek için Files API'yi kullanabilirsiniz. Toplam istek boyutu (dosya, metin istemi, sistem talimatları vb. dahil) 20 MB'tan büyükse veya aynı resmi birden fazla istemde kullanmayı planlıyorsanız her zaman Files API'yi kullanın.

Aşağıdaki kod, bir resim dosyası yükler ve ardından dosyayı generateContent çağrısında kullanır.

from google import genai

client = genai.Client(api_key="GOOGLE_API_KEY")

myfile = client.files.upload(file="path/to/sample.jpg")

response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=[myfile, "Caption this image."])

print(response.text)
import {
  GoogleGenAI,
  createUserContent,
  createPartFromUri,
} from "@google/genai";

const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });

async function main() {
  const myfile = await ai.files.upload({
    file: "path/to/sample.jpg",
    config: { mimeType: "image/jpeg" },
  });

  const response = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents: createUserContent([
      createPartFromUri(myfile.uri, myfile.mimeType),
      "Caption this image.",
    ]),
  });
  console.log(response.text);
}

await main();
file, err := client.UploadFileFromPath(ctx, "path/to/sample.jpg", nil)
if err != nil {
    log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

model := client.GenerativeModel("gemini-2.0-flash")
resp, err := model.GenerateContent(ctx,
    genai.FileData{URI: file.URI},
    genai.Text("Caption this image."))
if err != nil {
    log.Fatal(err)
}

printResponse(resp)
IMAGE_PATH="path/to/sample.jpg"
MIME_TYPE=$(file -b --mime-type "${IMAGE_PATH}")
NUM_BYTES=$(wc -c < "${IMAGE_PATH}")
DISPLAY_NAME=IMAGE

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "https://generativelanguage.googleapis.com/upload/v1beta/files?key=${GOOGLE_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${IMAGE_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"file_data":{"mime_type": "${MIME_TYPE}", "file_uri": '$file_uri'}},
          {"text": "Caption this image."}]
        }]
      }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

Medya dosyalarıyla çalışma hakkında daha fazla bilgi edinmek için Files API başlıklı makaleyi inceleyin.

Resim verilerini satır içi olarak iletin

Resim dosyası yüklemek yerine, istekteki satır içi resim verilerini generateContent'e iletebilirsiniz. Bu yöntem, daha küçük resimler (toplam istek boyutu 20 MB'tan az) veya doğrudan URL'lerden alınan resimler için uygundur.

Görüntü verilerini Base64 olarak kodlanmış dizeler olarak veya yerel dosyaları doğrudan okuyarak (SDK'ya bağlı olarak) sağlayabilirsiniz.

Yerel resim dosyası:

  from google.genai import types

  with open('path/to/small-sample.jpg', 'rb') as f:
      img_bytes = f.read()

  response = client.models.generate_content(
    model='gemini-2.0-flash',
    contents=[
      types.Part.from_bytes(
        data=img_bytes,
        mime_type='image/jpeg',
      ),
      'Caption this image.'
    ]
  )

  print(response.text)
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
const base64ImageFile = fs.readFileSync("path/to/small-sample.jpg", {
  encoding: "base64",
});

const contents = [
  {
    inlineData: {
      mimeType: "image/jpeg",
      data: base64ImageFile,
    },
  },
  { text: "Caption this image." },
];

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: contents,
});
console.log(response.text);
model := client.GenerativeModel("gemini-2.0-flash")

bytes, err := os.ReadFile("path/to/small-sample.jpg")
if err != nil {
  log.Fatal(err)
}

prompt := []genai.Part{
  genai.Blob{MIMEType: "image/jpeg", Data: bytes},
  genai.Text("Caption this image."),
}

resp, err := model.GenerateContent(ctx, prompt...)
if err != nil {
  log.Fatal(err)
}

for _, c := range resp.Candidates {
  if c.Content != nil {
    fmt.Println(*c.Content)
  }
}
IMG_PATH=/path/to/your/image1.jpg

if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
            {
              "inline_data": {
                "mime_type":"image/jpeg",
                "data": "'\$(base64 \$B64FLAGS \$IMG_PATH)'"
              }
            },
            {"text": "Caption this image."},
        ]
      }]
    }' 2> /dev/null

URL'den resim:

from google import genai
from google.genai import types

import requests

image_path = "https://goo.gle/instrument-img"
image = requests.get(image_path)

client = genai.Client(api_key="GOOGLE_API_KEY")
response = client.models.generate_content(
    model="gemini-2.0-flash-exp",
    contents=["What is this image?",
              types.Part.from_bytes(data=image.content, mime_type="image/jpeg")])

print(response.text)
import { GoogleGenAI } from "@google/genai";

async function main() {
  const ai = new GoogleGenAI({ apiKey: process.env.GOOGLE_API_KEY });

  const imageUrl = "https://goo.gle/instrument-img";

  const response = await fetch(imageUrl);
  const imageArrayBuffer = await response.arrayBuffer();
  const base64ImageData = Buffer.from(imageArrayBuffer).toString('base64');

  const result = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents: [
    {
      inlineData: {
        mimeType: 'image/jpeg',
        data: base64ImageData,
      },
    },
    { text: "Caption this image." }
  ],
  });
  console.log(result.text);
}

main();
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GOOGLE_API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-2.0-flash")

// Download the image.
imageResp, err := http.Get("https://goo.gle/instrument-img")
if err != nil {
  panic(err)
}
defer imageResp.Body.Close()

imageBytes, err := io.ReadAll(imageResp.Body)
if err != nil {
  panic(err)
}

// Create the request.
req := []genai.Part{
  genai.ImageData("jpeg", imageBytes),

  genai.Text("Caption this image."),
}

// Generate content.
resp, err := model.GenerateContent(ctx, req...)
if err != nil {
  panic(err)
}

// Handle the response of generated text.
for _, c := range resp.Candidates {
  if c.Content != nil {
    fmt.Println(*c.Content)
  }
}

}
IMG_URL="https://goo.gle/instrument-img"

MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
  MIME_TYPE="image/jpeg"
fi

if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
            {
              "inline_data": {
                "mime_type":"'"$MIME_TYPE"'",
                "data": "'$(curl -sL "$IMG_URL" | base64 $B64FLAGS)'"
              }
            },
            {"text": "Caption this image."}
        ]
      }]
    }' 2> /dev/null

Satır içi resim verileriyle ilgili göz önünde bulundurulması gereken birkaç nokta:

  • Maksimum toplam istek boyutu 20 MB'tır. Bu boyut, metin istemlerini, sistem talimatlarını ve satır içi olarak sağlanan tüm dosyaları içerir. Dosyanızın boyutu toplam istek boyutunu 20 MB'ı aşacaksa istekte kullanılacak bir resim dosyası yüklemek için Files API'yi kullanın.
  • Bir resim örneğini birden fazla kez kullanıyorsanız File API'yi kullanarak resim dosyası yüklemek daha verimlidir.

Birden fazla resimle istem verme

contents dizisine birden fazla resim Part nesnesi ekleyerek tek bir istemde birden fazla resim sağlayabilirsiniz. Bunlar satır içi verilerin (yerel dosyalar veya URL'ler) ve File API referanslarının bir karışımı olabilir.

from google import genai
from google.genai import types

client = genai.Client(api_key="GOOGLE_API_KEY")

# Upload the first image
image1_path = "path/to/image1.jpg"
uploaded_file = client.files.upload(file=image1_path)

# Prepare the second image as inline data
image2_path = "path/to/image2.png"
with open(image2_path, 'rb') as f:
    img2_bytes = f.read()

# Create the prompt with text and multiple images
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=[
        "What is different between these two images?",
        uploaded_file,  # Use the uploaded file reference
        types.Part.from_bytes(
            data=img2_bytes,
            mime_type='image/png'
        )
    ]
)

print(response.text)
import {
  GoogleGenAI,
  createUserContent,
  createPartFromUri,
} from "@google/genai";
import * as fs from "node:fs";

const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });

async function main() {
  // Upload the first image
  const image1_path = "path/to/image1.jpg";
  const uploadedFile = await ai.files.upload({
    file: image1_path,
    config: { mimeType: "image/jpeg" },
  });

  // Prepare the second image as inline data
  const image2_path = "path/to/image2.png";
  const base64Image2File = fs.readFileSync(image2_path, {
    encoding: "base64",
  });

  // Create the prompt with text and multiple images
  const response = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents: createUserContent([
      "What is different between these two images?",
      createPartFromUri(uploadedFile.uri, uploadedFile.mimeType),
      {
        inlineData: {
          mimeType: "image/png",
          data: base64Image2File,
        },
      },
    ]),
  });
  console.log(response.text);
}

await main();
+    // Upload the first image
image1Path := "path/to/image1.jpg"
uploadedFile, err := client.UploadFileFromPath(ctx, image1Path, nil)
if err != nil {
    log.Fatal(err)
}
defer client.DeleteFile(ctx, uploadedFile.Name)

// Prepare the second image as inline data
image2Path := "path/to/image2.png"
img2Bytes, err := os.ReadFile(image2Path)
if err != nil {
  log.Fatal(err)
}

// Create the prompt with text and multiple images
model := client.GenerativeModel("gemini-2.0-flash")
prompt := []genai.Part{
  genai.Text("What is different between these two images?"),
  genai.FileData{URI: uploadedFile.URI},
  genai.Blob{MIMEType: "image/png", Data: img2Bytes},
}

resp, err := model.GenerateContent(ctx, prompt...)
if err != nil {
  log.Fatal(err)
}

printResponse(resp)
# Upload the first image
IMAGE1_PATH="path/to/image1.jpg"
MIME1_TYPE=$(file -b --mime-type "${IMAGE1_PATH}")
NUM1_BYTES=$(wc -c < "${IMAGE1_PATH}")
DISPLAY_NAME1=IMAGE1

tmp_header_file1=upload-header1.tmp

curl "https://generativelanguage.googleapis.com/upload/v1beta/files?key=${GOOGLE_API_KEY}" \
  -D upload-header1.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM1_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME1_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME1}'}}" 2> /dev/null

upload_url1=$(grep -i "x-goog-upload-url: " "${tmp_header_file1}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file1}"

curl "${upload_url1}" \
  -H "Content-Length: ${NUM1_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${IMAGE1_PATH}" 2> /dev/null > file_info1.json

file1_uri=$(jq ".file.uri" file_info1.json)
echo file1_uri=$file1_uri

# Prepare the second image (inline)
IMAGE2_PATH="path/to/image2.png"
MIME2_TYPE=$(file -b --mime-type "${IMAGE2_PATH}")

if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
IMAGE2_BASE64=$(base64 $B64FLAGS $IMAGE2_PATH)

# Now generate content using both images
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "What is different between these two images?"},
          {"file_data":{"mime_type": "'"${MIME1_TYPE}"'", "file_uri": '$file1_uri'}},
          {
            "inline_data": {
              "mime_type":"'"${MIME2_TYPE}"'",
              "data": "'"$IMAGE2_BASE64"'"
            }
          }
        ]
      }]
    }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

Bir nesne için sınırlayıcı kutu alma

Gemini modelleri, görüntüdeki nesneleri tanımlamak ve sınırlayıcı kutu koordinatlarını sağlamak için eğitilir. Koordinatlar, görüntü boyutlarına göre döndürülür ve [0, 1000] ölçeğine göre ayarlanır. Bu koordinatların ölçeğini orijinal resim boyutunuza göre küçültmeniz gerekir.

prompt = "Detect the all of the prominent items in the image. The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000."
const prompt = "Detect the all of the prominent items in the image. The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000.";
prompt := []genai.Part{
    genai.FileData{URI: sampleImage.URI},
    genai.Text("Detect the all of the prominent items in the image. The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000."),
}
PROMPT="Detect the all of the prominent items in the image. The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000."

Görüntü ve videolarda nesne algılama ve yerelleştirme için sınırlayıcı kutuları kullanabilirsiniz. Nesneleri sınır kutularıyla doğru şekilde tanımlayıp sınırlandırarak çok çeşitli uygulamalardan yararlanabilir ve projelerinizin zekasını artırabilirsiniz.

Temel avantajlar

  • Basit: Bilgisayar görüşü uzmanlığınızdan bağımsız olarak nesne algılama özelliklerini uygulamalarınıza kolayca entegre edin.
  • Özelleştirilebilir: Özel bir model eğitmeniz gerekmeden özel talimatlara (ör. "Bu resimdeki tüm yeşil nesnelerin sınırlayıcı kutularını görmek istiyorum") göre sınırlayıcı kutular oluşturun.

Teknik ayrıntılar

  • Giriş: İsteminiz ve ilişkili resimler veya video kareleri.
  • Çıkış: [y_min, x_min, y_max, x_max] biçiminde sınırlayıcı kutular. Başlangıç noktası sol üst köşedir. x ve y ekseni sırasıyla yatay ve dikey olarak gider. Koordinat değerleri her resim için 0-1000 olarak normalleştirilir.
  • Görselleştirme: AI Studio kullanıcıları, kullanıcı arayüzünde sınır kutularının çizildiğini görür.

Python geliştiricileri 2D uzamsal anlama not defterini veya deneysel 3D işaretleme not defterini deneyebilir.

Koordinatları normalleştirme

Model, [y_min, x_min, y_max, x_max] biçiminde sınırlayıcı kutu koordinatlarını döndürür. Bu normalleştirilmiş koordinatları orijinal resminizin piksel koordinatlarına dönüştürmek için aşağıdaki adımları uygulayın:

  1. Her çıkış koordinatını 1.000'e bölün.
  2. X koordinatlarını orijinal resim genişliğiyle çarpın.
  3. Y koordinatlarını orijinal resim yüksekliğiyle çarpın.

Sınırlayıcı kutu koordinatları oluşturma ve bunları resimlerde görselleştirmeyle ilgili daha ayrıntılı örnekleri incelemek için Nesne Algılama yemek kitabı örneğini inceleyin.

Görüntü segmentasyonu

Gemini 2.5 modellerinden itibaren Gemini modelleri, yalnızca öğeleri algılamakla kalmayıp öğeleri segmentlere ayırmak ve dış hatlarının maskesini sağlamak için eğitilir.

Model, her öğenin bir segmentasyon maskesini temsil ettiği bir JSON listesi tahmin eder. Her öğenin 0 ile 1000 arasında normalleştirilmiş koordinatlara sahip [y0, x0, y1, x1] biçiminde bir sınırlayıcı kutusu ("box_2d"), nesneyi tanımlayan bir etiket ("label") ve son olarak, 0 ile 255 arasında değerlere sahip bir olasılık haritası olan base64 kodlu png olarak sınırlayıcı kutunun içindeki segmentasyon maskesi vardır. Maskenin, sınırlayıcı kutu boyutlarıyla eşleşecek şekilde yeniden boyutlandırılması ve ardından güven eşiğinize göre (orta nokta için 127) ikili kodlanması gerekir.

prompt = """
  Give the segmentation masks for the wooden and glass items.
  Output a JSON list of segmentation masks where each entry contains the 2D
  bounding box in the key "box_2d", the segmentation mask in key "mask", and
  the text label in the key "label". Use descriptive labels.
"""
const prompt = `
  Give the segmentation masks for the wooden and glass items.
  Output a JSON list of segmentation masks where each entry contains the 2D
  bounding box in the key "box_2d", the segmentation mask in key "mask", and
  the text label in the key "label". Use descriptive labels.
`;    
prompt := []genai.Part{
    genai.FileData{URI: sampleImage.URI},
    genai.Text(`
      Give the segmentation masks for the wooden and glass items.
      Output a JSON list of segmentation masks where each entry contains the 2D
      bounding box in the key "box_2d", the segmentation mask in key "mask", and
      the text label in the key "label". Use descriptive labels.
    `),
}
PROMPT='''
  Give the segmentation masks for the wooden and glass items.
  Output a JSON list of segmentation masks where each entry contains the 2D
  bounding box in the key "box_2d", the segmentation mask in key "mask", and
  the text label in the key "label". Use descriptive labels.
'''
Ahşap ve cam nesnelerin vurgulandığı, üzerinde cupcake&#39;lerin bulunduğu bir masa
Resimdeki ahşap ve cam nesnelerin maskesi

Daha ayrıntılı bir örnek için yemek tarifi kılavuzundaki segmentasyon örneğine göz atın.

Desteklenen görsel biçimleri

Gemini, aşağıdaki resim biçimi MIME türlerini destekler:

  • PNG - image/png
  • JPEG - image/jpeg
  • WEBP - image/webp
  • HEIC - image/heic
  • HEIF - image/heif

Resimlerle ilgili teknik ayrıntılar

  • Dosya sınırı: Gemini 2.5 Pro, 2.0 Flash, 1.5 Pro ve 1.5 Flash, istek başına en fazla 3.600 resim dosyası destekler.
  • Jeton hesaplama:
    • Gemini 1.5 Flash ve Gemini 1.5 Pro: Her iki boyut da 384 pikselden küçükse 258 jeton. Daha büyük resimler karolara bölünür (min. karo 256 piksel, maks. 768 piksel, 768x768'e yeniden boyutlandırılır) ve her karo 258 jeton maliyetlidir.
    • Gemini 2.0 Flash: Her iki boyut da 384 pikselden küçükse 258 jeton. Daha büyük resimler, her biri 258 jeton maliyeti olan 768x768 piksellik bloklara bölünür.
  • En iyi uygulamalar:
    • Resimlerin doğru şekilde döndürüldüğünden emin olun.
    • Net ve bulanık olmayan resimler kullanın.
    • Metin içeren tek bir resim kullanırken metin istemini contents dizisindeki resim kısmının ardından yerleştirin.

Sırada ne var?

Bu kılavuzda, resim dosyalarının nasıl yükleneceği ve resim girişlerinden metin çıkışlarının nasıl oluşturulacağı gösterilmektedir. Daha fazla bilgi edinmek için aşağıdaki kaynakları inceleyin:

  • Sistem talimatları: Sistem talimatları, modelin davranışını belirli ihtiyaçlarınıza ve kullanım alanlarınıza göre yönlendirmenize olanak tanır.
  • Videoları anlama: Video girişleriyle nasıl çalışacağınızı öğrenin.
  • Files API: Gemini ile kullanmak üzere dosya yükleme ve yönetme hakkında daha fazla bilgi edinin.
  • Dosya istemi stratejileri: Gemini API, çoklu formatlı istem olarak da bilinen metin, resim, ses ve video verileriyle istemleri destekler.
  • Güvenlik kılavuzu: Üretken yapay zeka modelleri bazen yanlış, önyargılı veya rahatsız edici sonuçlar gibi beklenmedik sonuçlar üretebilir. Bu tür çıkışlardan kaynaklanan zarar riskini sınırlamak için işlem sonrası ve gerçek kişiler tarafından değerlendirme yapılması önemlidir.