Ky udhëzues shpjegon mënyrat e ndryshme se si mund të përfshish skedarë të mediave si imazhe, audio, video dhe dokumente kur bën kërkesa te Gemini API. Metodat e reja mbështeten në të gjitha pikat fundore të Gemini API, duke përfshirë API-n e "Serisë", "Ndërveprimeve" dhe "Transmetimit të drejtpërdrejtë". Zgjedhja e metodës së duhur varet nga madhësia e skedarit, vendi ku ruhen të dhënat dhe sa shpesh planifikon ta përdorësh skedarin.
Mënyra më e thjeshtë për të përfshirë një skedar si hyrje është të lexosh një skedar lokal dhe ta përfshish atë në një kërkesë. Shembulli i mëposhtëm tregon se si të lexosh një skedar lokal PDF. Dokumentet PDF janë të kufizuara në 50 MB për këtë metodë. Shiko Tabelën e krahasimit të metodave të hyrjes për një listë të plotë të llojeve dhe kufijve të hyrjes së skedarëve.
Python
from google import genai
import pathlib
import base64
client = genai.Client()
filepath = pathlib.Path('my_local_file.pdf')
prompt = "Summarize this document"
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=[
{"type": "text", "text": prompt},
{"type": "document", "data": base64.b64encode(filepath.read_bytes()).decode('utf-8'), "mime_type": "application/pdf"}
]
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from 'node:fs';
const client = new GoogleGenAI({});
const prompt = "Summarize this document";
async function main() {
const filePath = 'my_local_file.pdf';
const interaction = await client.interactions.create({
model: "gemini-3.8-flash",
input: [
{ type: "text", text: prompt },
{
type: "document",
data: fs.readFileSync(filePath).toString("base64"),
mime_type: "application/pdf"
}
]
});
console.log(interaction.output_text);
}
main();
Java
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.DocumentContent;
import com.google.genai.gaos.models.interactions.DocumentContentMimeType;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
Client client = new Client();
byte[] pdfBytes = Files.readAllBytes(Paths.get("my_local_file.pdf"));
String base64Pdf = Base64.getEncoder().encodeToString(pdfBytes);
String prompt = "Summarize this document";
Content textContent = TextContent.builder().text(prompt).build();
Content docContent =
DocumentContent.builder()
.data(base64Pdf)
.mimeType(DocumentContentMimeType.APPLICATION_PDF)
.build();
List contents = Arrays.asList(textContent, docContent);
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.8-flash"))
.input(InteractionsInput.ofContent(contents))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
System.out.println(interaction.outputText().orElse(""));
Go
package main
import (
"context"
"encoding/base64"
"fmt"
"log"
"os"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
pdfBytes, err := os.ReadFile("my_local_file.pdf")
if err != nil {
log.Fatal(err)
}
base64Pdf := base64.StdEncoding.EncodeToString(pdfBytes)
prompt := "Summarize this document"
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.TextContent{
Text: prompt,
}),
interactions.NewContent(interactions.DocumentContent{
Data: genai.Ptr(base64Pdf),
MimeType: interactions.DocumentContentMimeTypeApplicationPdf.ToPointer(),
}),
}),
}),
})
if err != nil {
log.Fatal(err)
}
if res.Interaction.OutputText != nil {
fmt.Println(*res.Interaction.OutputText)
}
}
QETËSI
# Encode the local file to base64
B64_CONTENT=$(base64 -w 0 my_local_file.pdf)
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.8-flash",
"input": [
{"type": "text", "text": "Summarize this document"},
{
"type": "document",
"data": "'${B64_CONTENT}'",
"mime_type": "application/pdf"
}
]
}'
Krahasimi i metodave të hyrjes
Tabela e mëposhtme krahason çdo metodë hyrjeje me kufijtë e skedarëve dhe rastet më të mira të përdorimit. Ki parasysh se kufiri i madhësisë së skedarit mund të ndryshojë në varësi të llojit të skedarit dhe modelit ose tokenizuesit të përdorur për të përpunuar skedarin.
| Metoda | Më e mira për | Madhësia maksimale e skedarit | Vazhdimësia |
|---|---|---|---|
| Të dhënat e ndërfutura | Testim i shpejtë, skedarë të vegjël, aplikime në kohë reale. | 100 MB për kërkesë ose ngarkesë (50 MB për skedarët PDF) |
Asnjë (dërgohet me çdo kërkesë) |
| Ngarkimi i skedarit me API | Skedarë të mëdhenj, skedarë të përdorur disa herë. | 2 GB për skedar, deri në 20 GB për projekt |
48 orë |
| Regjistrimi i URI-së së GCS-së të File API-së | Skedarë të mëdhenj që janë tashmë në Google Cloud Storage, skedarë të përdorur disa herë. | 2 GB për skedar, pa kufij të përgjithshëm të hapësirës ruajtëse | Asnjë (merret sipas kërkesës). Regjistrimi një herë mund të japë qasje për deri në 30 ditë. |
| URL-të e jashtme | Të dhënat publike ose të dhënat në depozitat e resë kompjuterike (AWS, Azure, GCS) pa i ngarkuar përsëri. | 15 MB për skedar | Asnjë (merret sipas kërkesës) |
Të dhënat e ndërfutura
Për skedarët më të vegjël (nën 100 MB ose 50 MB për skedarët PDF), mund t'i kalosh të dhënat drejtpërdrejt në ngarkesën e kërkesës. Kjo është metoda më e thjeshtë për testime të shpejta ose aplikacione që menaxhojnë të dhëna kalimtare në kohë reale. Mund të japësh të dhëna si vargje të koduara me base64 ose duke lexuar drejtpërdrejt skedarët lokalë.
Për një shembull të leximit nga një skedar lokal, shiko shembullin në fillim të kësaj faqeje.
Merr nga një URL
Mund të marrësh gjithashtu një skedar nga një URL, ta konvertosh atë në bajt dhe ta përfshish atë në hyrje.
Python
from google import genai
import httpx
client = genai.Client()
doc_url = "https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf"
doc_data = httpx.get(doc_url).content
prompt = "Summarize this document"
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=[
{"type": "document", "data": base64.b64encode(doc_data).decode('utf-8'), "mime_type": "application/pdf"},
{"type": "text", "text": prompt}
]
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const docUrl = 'https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf';
const prompt = "Summarize this document";
async function main() {
const pdfResp = await fetch(docUrl)
.then((response) => response.arrayBuffer());
const interaction = await client.interactions.create({
model: "gemini-3.8-flash",
input: [
{ type: "text", text: prompt },
{
type: "document",
data: Buffer.from(pdfResp).toString("base64"),
mime_type: "application/pdf"
}
]
});
console.log(interaction.output_text);
}
main();
Java
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.DocumentContent;
import com.google.genai.gaos.models.interactions.DocumentContentMimeType;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
Client client = new Client();
String docUrl = "https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf";
HttpClient httpClient = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(docUrl)).build();
byte[] docData = httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray()).body();
String base64Pdf = Base64.getEncoder().encodeToString(docData);
String prompt = "Summarize this document";
Content docContent =
DocumentContent.builder()
.data(base64Pdf)
.mimeType(DocumentContentMimeType.APPLICATION_PDF)
.build();
Content textContent = TextContent.builder().text(prompt).build();
List contents = Arrays.asList(docContent, textContent);
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.8-flash"))
.input(InteractionsInput.ofContent(contents))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
System.out.println(interaction.outputText().orElse(""));
Go
package main
import (
"context"
"encoding/base64"
"fmt"
"io"
"log"
"net/http"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
docURL := "https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf"
resp, err := http.Get(docURL)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
docData, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
base64Pdf := base64.StdEncoding.EncodeToString(docData)
prompt := "Summarize this document"
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.DocumentContent{
Data: genai.Ptr(base64Pdf),
MimeType: interactions.DocumentContentMimeTypeApplicationPdf.ToPointer(),
}),
interactions.NewContent(interactions.TextContent{
Text: prompt,
}),
}),
}),
})
if err != nil {
log.Fatal(err)
}
if res.Interaction.OutputText != nil {
fmt.Println(*res.Interaction.OutputText)
}
}
QETËSI
DOC_URL="https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf"
PROMPT="Summarize this document"
DISPLAY_NAME="base64_pdf"
# Download the PDF
wget -O "${DISPLAY_NAME}.pdf" "${DOC_URL}"
# Check for FreeBSD base64 and set flags accordingly
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
# Base64 encode the PDF
ENCODED_PDF=$(base64 $B64FLAGS "${DISPLAY_NAME}.pdf")
# Create JSON payload file
cat < > payload.json
{
"model": "gemini-3.8-flash",
"input": [
{"type": "document", "data": "${ENCODED_PDF}", "mime_type": "application/pdf"},
{"type": "text", "text": "${PROMPT}"}
]
}
EOF
# Generate content using interactions
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d @payload.json 2> /dev/null > response.json
cat response.json
echo
jq ".outputs[] | select(.type == \"text\") | .text" response.json
Gemini File API
File API është krijuar për skedarë më të mëdhenj (deri në 2 GB) ose skedarë që synon t'i përdorësh në disa kërkesa.
Ngarkimi standard i skedarit
Ngarko një skedar lokal te Gemini API. Skedarët e ngarkuar në këtë mënyrë ruhen përkohësisht (48 orë) dhe përpunohen për marrje efikase nga modeli.
Python
from google import genai
client = genai.Client()
doc_file = client.files.upload(file="path/to/your/sample.pdf")
prompt = "Summarize this document"
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=[
{"type": "text", "text": prompt},
{"type": "document", "uri": doc_file.uri, "mime_type": doc_file.mime_type}
]
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const prompt = "Summarize this document";
async function main() {
const filePath = "path/to/your/sample.pdf";
const myfile = await client.files.upload({
file: filePath,
config: { mime_type: "application/pdf" },
});
const interaction = await client.interactions.create({
model: "gemini-3.8-flash",
input: [
{ type: "text", text: prompt },
{ type: "document", uri: myfile.uri, mime_type: myfile.mimeType }
]
});
console.log(interaction.output_text);
}
await main();
Java
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.DocumentContent;
import com.google.genai.gaos.models.interactions.DocumentContentMimeType;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import com.google.genai.types.File;
import com.google.genai.types.UploadFileConfig;
import java.util.Arrays;
import java.util.List;
Client client = new Client();
File docFile =
client.files.upload(
new java.io.File("path/to/your/sample.pdf"),
UploadFileConfig.builder().mimeType("application/pdf").build());
String prompt = "Summarize this document";
Content textContent = TextContent.builder().text(prompt).build();
Content docContent =
DocumentContent.builder()
.uri(docFile.uri().orElse(""))
.mimeType(DocumentContentMimeType.of(docFile.mimeType().orElse("application/pdf")))
.build();
List contents = Arrays.asList(textContent, docContent);
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.8-flash"))
.input(InteractionsInput.ofContent(contents))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
System.out.println(interaction.outputText().orElse(""));
Go
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
docFile, err := client.Files.UploadFromPath(ctx, "path/to/your/sample.pdf", &genai.UploadFileConfig{
MIMEType: "application/pdf",
})
if err != nil {
log.Fatal(err)
}
prompt := "Summarize this document"
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.TextContent{
Text: prompt,
}),
interactions.NewContent(interactions.DocumentContent{
URI: genai.Ptr(docFile.URI),
MimeType: interactions.DocumentContentMimeType(docFile.MIMEType).ToPointer(),
}),
}),
}),
})
if err != nil {
log.Fatal(err)
}
if res.Interaction.OutputText != nil {
fmt.Println(*res.Interaction.OutputText)
}
}
QETËSI
FILE_PATH="path/to/sample.pdf"
MIME_TYPE=$(file -b --mime-type "${FILE_PATH}")
NUM_BYTES=$(wc -c < "${FILE_PATH}")
DISPLAY_NAME=DOCUMENT
tmp_header_file=upload-header.tmp
# Initial resumable request defining metadata.
curl "https://generativelanguage.googleapis.com/upload/v1beta/files" \
-D "${tmp_header_file}" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-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 "@${FILE_PATH}" 2> /dev/null > file_info.json
file_uri=$(jq ".file.uri" file_info.json)
# Now use in an interaction
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.8-flash",
"input": [
{"type": "text", "text": "Summarize this document"},
{"type": "document", "uri": '$file_uri', "mime_type": "'${MIME_TYPE}'"}
]
}'
Regjistro skedarët e Google Cloud Storage
Nëse të dhënat e tua janë tashmë në Google Cloud Storage, nuk është e nevojshme t'i shkarkosh dhe t'i ngarkosh përsëri. Mund ta regjistrosh drejtpërdrejt me File API.
Jep qasje për Agjentin e shërbimit për çdo grupim
Aktivizo Gemini API në projektin tënd të Google Cloud.
Krijo agjentin e shërbimit:
gcloud beta services identity create --service=generativelanguage.googleapis.com --project=Jepi leje Gemini API Service Agent për të lexuar grupet e tua të hapësirës ruajtëse.
Përdoruesi duhet t'i caktojë
Storage Object Viewerrolin e IAM-së këtij agjenti shërbimi në segmentet specifike të hapësirës ruajtëse që synon të përdorë.
Kjo qasje nuk skadon si parazgjedhje, por mund të ndryshohet në çdo kohë. Mund të përdorësh gjithashtu komandat e SDK-së së IAM-së së Google Cloud Storage për të dhënë leje.
Vërteto shërbimin tënd
Parakushtet
- Aktivizo API-në
- Krijo një llogari shërbimi ose agjent me lejet e duhura.
Në fillim duhet të vërtetosh identitetin si shërbimi që ka lejet e shikuesit të objektit të hapësirës ruajtëse. Mënyra se si ndodh kjo varet nga mjedisi në të cilin do të ekzekutohet kodi yt i menaxhimit të skedarëve.
Jashtë Google Cloud
Nëse kodi yt po ekzekutohet nga jashtë Google Cloud, si p.sh. nga desktopi yt, shkarko kredencialet e llogarisë nga "Konsola e Google Cloud" me hapat e mëposhtëm:
- Shfleto te Konsola e llogarisë së shërbimit
- Zgjidh llogarinë përkatëse të shërbimit
- Zgjidh skedën Çelësat dhe zgjidh Shto çelës, Krijo çelës të ri
- Zgjidh llojin e çelësit JSON dhe mbaj shënim se ku është shkarkuar skedari në makinën tënde.
Për më shumë detaje, shiko dokumentacionin zyrtar të Google Cloud për menaxhimin e çelësave të llogarive të shërbimit.
Më pas përdor komandat e mëposhtme për t'u identifikuar. Këto komanda supozojnë se skedari i llogarisë sate të shërbimit është në direktorinë aktuale, me emrin
service-account.json.Python
from google.oauth2.service_account import Credentials GCS_READ_SCOPES = [ 'https://www.googleapis.com/auth/devstorage.read_only', 'https://www.googleapis.com/auth/cloud-platform' ] SERVICE_ACCOUNT_FILE = 'service-account.json' credentials = Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=GCS_READ_SCOPES )JavaScript
const { GoogleAuth } = require('google-auth-library'); const GCS_READ_SCOPES = [ 'https://www.googleapis.com/auth/devstorage.read_only', 'https://www.googleapis.com/auth/cloud-platform' ]; const SERVICE_ACCOUNT_FILE = 'service-account.json'; const auth = new GoogleAuth({ keyFile: SERVICE_ACCOUNT_FILE, scopes: GCS_READ_SCOPES });CLI
gcloud auth application-default login \ --client-id-file=service-account.json \ --scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/devstorage.read_only'Në Google Cloud
Nëse po ekzekuton drejtpërdrejt në Google Cloud, për shembull duke përdorur funksionet e Cloud Run ose një shembull të Compute Engine, do të kesh kredenciale të nënkuptuara, por do të duhet të riautentikohesh për të dhënë shtrirjet e duhura.
Python
Ky kod pret që shërbimi të ekzekutohet në një mjedis ku Kredencialet e parazgjedhura të aplikacionit mund të merren automatikisht, si p.sh. Cloud Run ose Compute Engine.
import google.auth GCS_READ_SCOPES = [ 'https://www.googleapis.com/auth/devstorage.read_only', 'https://www.googleapis.com/auth/cloud-platform' ] credentials, project = google.auth.default(scopes=GCS_READ_SCOPES)JavaScript
Ky kod pret që shërbimi të ekzekutohet në një mjedis ku Kredencialet e parazgjedhura të aplikacionit mund të merren automatikisht, si p.sh. Cloud Run ose Compute Engine.
const { GoogleAuth } = require('google-auth-library'); const auth = new GoogleAuth({ scopes: [ 'https://www.googleapis.com/auth/devstorage.read_only', 'https://www.googleapis.com/auth/cloud-platform' ] });
Java
import com.google.auth.oauth2.GoogleCredentials;
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.List;
List gcsReadScopes =
Arrays.asList(
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/cloud-platform");
String serviceAccountFile = "service-account.json";
GoogleCredentials credentials =
GoogleCredentials.fromStream(new FileInputStream(serviceAccountFile))
.createScoped(gcsReadScopes);
Go
package main
import (
"log"
"google.golang.org/genai"
)
func main() {
cc := &genai.ClientConfig{}
if err := cc.UseDefaultCredentials(); err != nil {
log.Fatal(err)
}
_ = cc.Credentials
}
CLI
Kjo është një komandë interaktive. Për shërbime si Compute Engine, mund të bashkëngjitësh fushëveprime te shërbimi që ekzekutohet në nivelin e konfigurimit. Shiko dokumentet e shërbimit të menaxhuar nga përdoruesi për një shembull.
gcloud auth application-default login \
--scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/devstorage.read_only"
- Regjistrimi i skedarëve (Files API)
Përdor Files API për të regjistruar skedarët dhe për të prodhuar një shteg të Files API që mund të përdoret drejtpërdrejt në Gemini API.
Python
from google import genai client = genai.Client(credentials=credentials) registered_gcs_files = client.files.register_files( uris=["gs://my_bucket/some_object.pdf", "gs://bucket2/object2.txt"] ) prompt = "Summarize this file." for f in registered_gcs_files.files: print(f.name) interaction = client.interactions.create( model="gemini-3.8-flash", input=[ {"type": "text", "text": prompt}, {"type": "document", "uri": f.uri, "mime_type": f.mime_type} ], ) print(interaction.output_text)JavaScript
import { GoogleGenAI } from "@google/genai"; const ai = new GoogleGenAI({ auth: auth }); async function main() { const registeredGcsFiles = await ai.files.registerFiles({ uris: ["gs://my_bucket/some_object.pdf", "gs://bucket2/object2.txt"] }); const prompt = "Summarize this file."; for (const file of registeredGcsFiles.files) { console.log(file.name); const interaction = await ai.interactions.create({ model: "gemini-3.8-flash", input: [ { type: "text", text: prompt }, { type: "document", uri: file.uri, mime_type: file.mimeType } ] }); console.log(interaction.output_text); } } main();
Java
import com.google.auth.oauth2.GoogleCredentials;
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.DocumentContent;
import com.google.genai.gaos.models.interactions.DocumentContentMimeType;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import com.google.genai.types.File;
import com.google.genai.types.RegisterFilesResponse;
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
GoogleCredentials credentials =
GoogleCredentials.fromStream(new FileInputStream("service-account.json"))
.createScoped(
Arrays.asList(
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/cloud-platform"));
Client client = Client.builder().credentials(credentials).build();
RegisterFilesResponse registeredGcsFiles =
client.files.registerFiles(
credentials,
Arrays.asList("gs://my_bucket/some_object.pdf", "gs://bucket2/object2.txt"),
null);
String prompt = "Summarize this file.";
for (File f : registeredGcsFiles.files().orElse(Collections.emptyList())) {
System.out.println(f.name().orElse(""));
Content textContent = TextContent.builder().text(prompt).build();
Content docContent =
DocumentContent.builder()
.uri(f.uri().orElse(""))
.mimeType(DocumentContentMimeType.of(f.mimeType().orElse("application/pdf")))
.build();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.8-flash"))
.input(InteractionsInput.ofContent(Arrays.asList(textContent, docContent)))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
System.out.println(interaction.outputText().orElse(""));
}
Go
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
cc := &genai.ClientConfig{}
if err := cc.UseDefaultCredentials(); err != nil {
log.Fatal(err)
}
client, err := genai.NewClient(ctx, cc)
if err != nil {
log.Fatal(err)
}
registeredGcsFiles, err := client.Files.RegisterFiles(
ctx,
[]string{"gs://my_bucket/some_object.pdf", "gs://bucket2/object2.txt"},
cc.Credentials,
nil,
)
if err != nil {
log.Fatal(err)
}
prompt := "Summarize this file."
for _, f := range registeredGcsFiles.Files {
fmt.Println(f.Name)
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.8-flash"),
Input: interactions.NewInteractionsInput([]interactions.Content{
interactions.NewContent(interactions.TextContent{
Text: prompt,
}),
interactions.NewContent(interactions.DocumentContent{
URI: genai.Ptr(f.URI),
MimeType: interactions.DocumentContentMimeType(f.MIMEType).ToPointer(),
}),
}),
}),
})
if err != nil {
log.Fatal(err)
}
if res.Interaction.OutputText != nil {
fmt.Println(*res.Interaction.OutputText)
}
}
}
CLI
access_token=$(gcloud auth application-default print-access-token)
project_id=$(gcloud config get-value project)
curl -X POST https://generativelanguage.googleapis.com/v1beta/files:register \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ${access_token}" \
-H "x-goog-user-project: ${project_id}" \
-d '{"uris": ["gs://bucket/object1", "gs://bucket/object2"]}'
URL-të e jashtme HTTP / të nënshkruara
Mund të kalosh URL-të HTTPS të qasshme publikisht ose URL-të e nënshkruara paraprakisht drejtpërdrejt në kërkesën tënde. Gemini API do t'i marrë përmbajtjet në mënyrë të sigurt gjatë përpunimit. Kjo është ideale për skedarët që nuk dëshiron t'i ngarkosh përsëri. Çdo skedar mund të jetë deri në 15 MB. Për skedarë më të mëdhenj, përdor File API.
Python
from google import genai
uri = "https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf"
prompt = "Summarize this file"
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=[
{"type": "document", "uri": uri, "mime_type": "application/pdf"},
{"type": "text", "text": prompt}
]
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from '@google/genai';
const client = new GoogleGenAI({});
const uri = "https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf";
async function main() {
const interaction = await client.interactions.create({
model: 'gemini-3.8-flash',
input: [
{ type: "document", uri: uri, mime_type: "application/pdf" },
{ type: "text", text: "summarize this file" }
]
});
console.log(interaction.output_text);
}
main();
QETËSI
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H 'x-goog-api-key: $GEMINI_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.8-flash",
"input": [
{"type": "text", "text": "Summarize this pdf"},
{
"type": "document",
"uri": "https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf",
"mime_type": "application/pdf"
}
]
}'
Qasshmëria
Verifiko që URL-të që jep nuk të çojnë në faqe që kërkojnë një identifikim ose që janë pas një muri pagese. Për bazat e të dhënave private, sigurohu që të krijosh një URL të nënshkruar me lejet e duhura të qasjes dhe skadimin.
Kontrollet e sigurisë
Sistemi kryen një kontroll të moderimit të përmbajtjes në URL për të konfirmuar që ato i përmbushin standardet e sigurisë dhe të politikave. Nëse URL-ja dështon në këtë kontroll, do të marrësh një url_retrieval_status me URL_RETRIEVAL_STATUS_UNSAFE.
Llojet e mbështetura të përmbajtjes
Kjo listë e llojeve të mbështetura të skedarëve dhe kufizimeve synohet si udhëzim fillestar dhe nuk është gjithëpërfshirëse. Paketa efektive e llojeve të mbështetura është subjekt i ndryshimit dhe mund të variojë bazuar në modelin specifik dhe versionin e tokenizuesit në përdorim. Llojet e pambështetura do të shkaktojnë një gabim. Përveç kësaj, marrja e përmbajtjes për këto lloje skedarësh mbështet vetëm URL-të të qasshme në mënyrë publike.
Llojet e skedarëve të tekstit
text/htmltext/csstext/plaintext/xmltext/csvtext/rtftext/javascript
Llojet e skedarëve të aplikacioneve
application/jsonapplication/pdf
Llojet e skedarëve të imazheve
image/bmpimage/jpegimage/pngimage/webp
Llojet e skedarëve të videove
video/mp4video/mpegvideo/quicktimevideo/avivideo/x-flvvideo/mpgvideo/webmvideo/wmvvideo/3gpp
Praktikat më të mira
- Zgjidh metodën e duhur: Përdor të dhënat e integruara për skedarët e vegjël dhe të përkohshëm. Përdor File API për skedarët më të mëdhenj ose të përdorur shpesh. Përdor URL-të e jashtme për të dhënat që janë strehuar tashmë online.
- Specifiko llojet e MIME-s: Jep gjithmonë llojin e saktë të MIME-s për të dhënat e skedarit për të siguruar përpunimin e duhur.
- Menaxho gabimet: Zbato menaxhimin e gabimeve në kodin tënd për të menaxhuar problemet e mundshme si dështimet e rrjetit, problemet e qasjes në skedar ose gabimet e API-së.
Kufizimet
- Kufijtë e madhësisë së skedarit ndryshojnë sipas metodës (shiko tabelën e krahasimit) dhe llojit të skedarit.
- Të dhënat e integruara rritin madhësinë e ngarkesës së kërkesës.
- Ngarkimet e API-së së skedarëve janë të përkohshme dhe skadojnë pas 48 orësh.
- Marrja e URL-ve të jashtme është e kufizuar në 15 MB për skedar dhe mbështet lloje specifike të përmbajtjeve.
Çfarë ka më pas
- Provo të shkruash kërkesat e tua multimodale duke përdorur Google AI Studio.
- Për informacione në lidhje me përfshirjen e skedarëve në kërkesat e tua, shiko udhëzuesit e Vision, Audio dhe Përpunimit të dokumenteve.