Generating content

تتيح Gemini API إنشاء المحتوى باستخدام الصور والملفات الصوتية والرموز البرمجية والأدوات وغير ذلك. للاطّلاع على تفاصيل حول كل من هذه الميزات، واصِل القراءة واطّلِع على نموذج الرمز البرمجي الذي يركّز على المهام، أو اقرأ الأدلة الشاملة.

الطريقة: models.generateContent

ينشئ ردًا من النموذج بناءً على الإدخال GenerateContentRequest. راجِع دليل إنشاء النصوص للحصول على معلومات مفصّلة حول الاستخدام. تختلف إمكانات الإدخال بين النماذج، بما في ذلك النماذج المضبوطة. يُرجى الرجوع إلى دليل النماذج ودليل الضبط للاطّلاع على التفاصيل.

نقطة نهاية

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

مَعلمات المسار

model string

الحقل مطلوب. اسم Model المطلوب استخدامه لإنشاء الإكمال.

التنسيق: models/{model} ويكون بالتنسيق التالي: models/{model}.

نص الطلب

يتضمن نص الطلب بيانات بالبنية التالية:

الحقول
contents[] object (Content)

الحقل مطلوب. محتوى المحادثة الحالية مع النموذج

بالنسبة إلى طلبات البحث ذات الدورات الفردية، يكون هذا مثيلاً واحدًا. بالنسبة إلى الاستعلامات المتعددة الأدوار، مثل المحادثة، هذا حقل متكرّر يحتوي على سجلّ المحادثات وآخر طلب.

tools[] object (Tool)

اختياريّ. قائمة Tools يمكن Model استخدامها لإنشاء الرد التالي.

Tool هي جزء من الرمز البرمجي يتيح للنظام التفاعل مع أنظمة خارجية لتنفيذ إجراء أو مجموعة من الإجراءات خارج نطاق معرفة Model. Tool المتاحة هي Function وcodeExecution. لمزيد من المعلومات، يُرجى الرجوع إلى دليلَي استدعاء الدالة وتطبيق الرموز البرمجية.

toolConfig object (ToolConfig)

اختياريّ. إعدادات الأداة لأي Tool محدّدة في الطلب راجِع دليل استدعاء الدوال للاطّلاع على مثال على الاستخدام.

safetySettings[] object (SafetySetting)

اختياريّ. قائمة بحالات SafetySetting الفريدة لحظر المحتوى غير الآمن

سيتم فرض ذلك على GenerateContentRequest.contents وGenerateContentResponse.candidates. يجب ألا يكون هناك أكثر من إعداد واحد لكل نوع SafetyCategory. ستحظر واجهة برمجة التطبيقات أي محتوى وردود لا تستوفي الحدود التي تحدّدها هذه الإعدادات. تلغي هذه القائمة الإعدادات التلقائية لكل SafetyCategory محدّد في safetySettings. إذا لم يكن هناك SafetySetting لـ SafetyCategory معيّن مُقدَّم في القائمة، ستستخدم واجهة برمجة التطبيقات إعداد الأمان التلقائي لهذه الفئة. تتوفّر فئات الضرر التالية: HARM_CATEGORY_HATE_SPEECH وHARM_CATEGORY_SEXUALLY_EXPLICIT وHARM_CATEGORY_DANGEROUS_CONTENT وHARM_CATEGORY_HARASSMENT وHARM_CATEGORY_CIVIC_INTEGRITY وHARM_CATEGORY_JAILBREAK. راجِع الدليل للحصول على معلومات مفصّلة حول إعدادات الأمان المتاحة. يمكنك أيضًا الرجوع إلى إرشادات الأمان للتعرّف على كيفية تضمين اعتبارات الأمان في تطبيقات الذكاء الاصطناعي.

systemInstruction object (Content)

اختياريّ. وضع المطوّر تعليمات النظام. في الوقت الحالي، يمكن إدخال نص فقط.

generationConfig object (GenerationConfig)

اختياريّ. خيارات الإعدادات لإنشاء النماذج والمخرجات

cachedContent string

اختياريّ. اسم المحتوى المخزَّن مؤقتًا لاستخدامه كسياق لعرض التوقّع التنسيق: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

اختياريّ. فئة الخدمة للطلب

store boolean

اختياريّ. تضبط هذه السمة سلوك التسجيل لطلب معيّن. في حال ضبطها، تكون لها الأولوية على إعدادات تسجيل البيانات على مستوى المشروع.

مثال على الطلب

نص

Python

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

محارة

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

جافا

Client client = new Client();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

System.out.println(response.text());

صورة

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

محارة

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

جافا

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));

GenerateContentResponse response = client.models.generateContent("gemini-3.7-flash", content, null);

System.out.println(response.text());

الصوت

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const audio = await ai.files.upload({
  file: path.join(media, "sample.mp3"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Give me a summary of this audio file.",
      createPartFromUri(audio.uri, audio.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

محارة

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

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 "${BASE_URL}/upload/v1beta/files?key=${GEMINI_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 "@${AUDIO_PATH}" 2> /dev/null > file_info.json

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

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

فيديو

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

محارة

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D "${tmp_header_file}" \
  -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 "@${VIDEO_PATH}" 2> /dev/null > file_info.json

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

state=$(jq ".file.state" file_info.json)
echo state=$state

name=$(jq ".file.name" file_info.json)
echo name=$name

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

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

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

محارة

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
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 "${BASE_URL}/upload/v1beta/files?key=${GEMINI_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 "@${PDF_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=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

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

محادثة

Python

from google import genai
from google.genai import types

client = genai.Client()
# Pass initial history using the "history" argument
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

const response1 = await chat.sendMessage({
  message: "I have 2 dogs in my house.",
});
console.log("Chat response 1:", response1.text);

const response2 = await chat.sendMessage({
  message: "How many paws are in my house?",
});
console.log("Chat response 2:", response2.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Pass initial history using the History field.
history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}

chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

firstResp, err := chat.SendMessage(ctx, genai.Part{Text: "I have 2 dogs in my house."})
if err != nil {
	log.Fatal(err)
}
fmt.Println(firstResp.Text())

secondResp, err := chat.SendMessage(ctx, genai.Part{Text: "How many paws are in my house?"})
if err != nil {
	log.Fatal(err)
}
fmt.Println(secondResp.Text())

محارة

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

جافا

Client client = new Client();

Content userContent = Content.fromParts(Part.fromText("Hello"));
Content modelContent =
        Content.builder()
                .role("model")
                .parts(
                        Collections.singletonList(
                                Part.fromText("Great to meet you. What would you like to know?")
                        )
                ).build();

Chat chat = client.chats.create(
        "gemini-3.7-flash",
        GenerateContentConfig.builder()
                .systemInstruction(userContent)
                .systemInstruction(modelContent)
                .build()
);

GenerateContentResponse response1 = chat.sendMessage("I have 2 dogs in my house.");
System.out.println(response1.text());

GenerateContentResponse response2 = chat.sendMessage("How many paws are in my house?");
System.out.println(response2.text());

ذاكرة التخزين المؤقت

Python

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.7-flash"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
print(cache)

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.7-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
console.log("Cache created:", cache);

const response = await ai.models.generateContent({
  model: modelName,
  contents: "Please summarize this transcript",
  config: { cachedContent: cache.name },
});
console.log("Response text:", response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.7-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

النموذج المعدَّل

Python

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

وضع JSON

Python

from google import genai
from google.genai import types
from typing_extensions import TypedDict

class Recipe(TypedDict):
    recipe_name: str
    ingredients: list[str]

client = genai.Client()
result = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "List a few popular cookie recipes.",
  config: {
    responseMimeType: "application/json",
    responseSchema: {
      type: "array",
      items: {
        type: "object",
        properties: {
          recipeName: { type: "string" },
          ingredients: { type: "array", items: { type: "string" } },
        },
        required: ["recipeName", "ingredients"],
      },
    },
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

schema := &genai.Schema{
	Type: genai.TypeArray,
	Items: &genai.Schema{
		Type: genai.TypeObject,
		Properties: map[string]*genai.Schema{
			"recipe_name": {Type: genai.TypeString},
			"ingredients": {
				Type:  genai.TypeArray,
				Items: &genai.Schema{Type: genai.TypeString},
			},
		},
		Required: []string{"recipe_name"},
	},
}

config := &genai.GenerateContentConfig{
	ResponseMIMEType: "application/json",
	ResponseSchema:   schema,
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

محارة

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

جافا

Client client = new Client();

Schema recipeSchema = Schema.builder()
        .type(Array.class.getSimpleName())
        .items(Schema.builder()
                .type(Object.class.getSimpleName())
                .properties(
                        Map.of("recipe_name", Schema.builder()
                                        .type(String.class.getSimpleName())
                                        .build(),
                                "ingredients", Schema.builder()
                                        .type(Array.class.getSimpleName())
                                        .items(Schema.builder()
                                                .type(String.class.getSimpleName())
                                                .build())
                                        .build())
                )
                .required(List.of("recipe_name", "ingredients"))
                .build())
        .build();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .responseMimeType("application/json")
                .responseSchema(recipeSchema)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "List a few popular cookie recipes.",
                config);

System.out.println(response.text());

تنفيذ الرموز البرمجية

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=(
        "Write and execute code that calculates the sum of the first 50 prime numbers. "
        "Ensure that only the executable code and its resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
    print(part, "\n")

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text(
		`Write and execute code that calculates the sum of the first 50 prime numbers.
		 Ensure that only the executable code and its resulting output are generated.`,
	),
	&genai.GenerateContentConfig{},
)
if err != nil {
	log.Fatal(err)
}

// Print the response.
printResponse(response)

fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())

جافا

Client client = new Client();

String prompt = """
        Write and execute code that calculates the sum of the first 50 prime numbers.
        Ensure that only the executable code and its resulting output are generated.
        """;

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                prompt,
                null);

for (Part part : response.candidates().get().getFirst().content().get().parts().get()) {
    System.out.println(part + "\n");
}

System.out.println("-".repeat(80));
System.out.println(response.text());

استدعاء الدالة

Python

from google import genai
from google.genai import types

client = genai.Client()

def add(a: float, b: float) -> float:
    """returns a + b."""
    return a + b

def subtract(a: float, b: float) -> float:
    """returns a - b."""
    return a - b

def multiply(a: float, b: float) -> float:
    """returns a * b."""
    return a * b

def divide(a: float, b: float) -> float:
    """returns a / b."""
    return a / b

# Create a chat session; function calling (via tools) is enabled in the config.
chat = client.chats.create(
    model="gemini-3.7-flash",
    config=types.GenerateContentConfig(tools=[add, subtract, multiply, divide]),
)
response = chat.send_message(
    message="I have 57 cats, each owns 44 mittens, how many mittens is that in total?"
)
print(response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
modelName := "gemini-3.7-flash"

// Create the function declarations for arithmetic operations.
addDeclaration := createArithmeticToolDeclaration("addNumbers", "Return the result of adding two numbers.")
subtractDeclaration := createArithmeticToolDeclaration("subtractNumbers", "Return the result of subtracting the second number from the first.")
multiplyDeclaration := createArithmeticToolDeclaration("multiplyNumbers", "Return the product of two numbers.")
divideDeclaration := createArithmeticToolDeclaration("divideNumbers", "Return the quotient of dividing the first number by the second.")

// Group the function declarations as a tool.
tools := []*genai.Tool{
	{
		FunctionDeclarations: []*genai.FunctionDeclaration{
			addDeclaration,
			subtractDeclaration,
			multiplyDeclaration,
			divideDeclaration,
		},
	},
}

// Create the content prompt.
contents := []*genai.Content{
	genai.NewContentFromText(
		"I have 57 cats, each owns 44 mittens, how many mittens is that in total?", genai.RoleUser,
	),
}

// Set up the generate content configuration with function calling enabled.
config := &genai.GenerateContentConfig{
	Tools: tools,
	ToolConfig: &genai.ToolConfig{
		FunctionCallingConfig: &genai.FunctionCallingConfig{
			// The mode equivalent to FunctionCallingConfigMode.ANY in JS.
			Mode: genai.FunctionCallingConfigModeAny,
		},
	},
}

genContentResp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
if err != nil {
	log.Fatal(err)
}

// Assume the response includes a list of function calls.
if len(genContentResp.FunctionCalls()) == 0 {
	log.Println("No function call returned from the AI.")
	return nil
}
functionCall := genContentResp.FunctionCalls()[0]
log.Printf("Function call: %+v\n", functionCall)

// Marshal the Args map into JSON bytes.
argsMap, err := json.Marshal(functionCall.Args)
if err != nil {
	log.Fatal(err)
}

// Unmarshal the JSON bytes into the ArithmeticArgs struct.
var args ArithmeticArgs
if err := json.Unmarshal(argsMap, &args); err != nil {
	log.Fatal(err)
}

// Map the function name to the actual arithmetic function.
var result float64
switch functionCall.Name {
	case "addNumbers":
		result = add(args.FirstParam, args.SecondParam)
	case "subtractNumbers":
		result = subtract(args.FirstParam, args.SecondParam)
	case "multiplyNumbers":
		result = multiply(args.FirstParam, args.SecondParam)
	case "divideNumbers":
		result = divide(args.FirstParam, args.SecondParam)
	default:
		return fmt.Errorf("unimplemented function: %s", functionCall.Name)
}
log.Printf("Function result: %v\n", result)

// Prepare the final result message as content.
resultContents := []*genai.Content{
	genai.NewContentFromText("The final result is " + fmt.Sprintf("%v", result), genai.RoleUser),
}

// Use GenerateContent to send the final result.
finalResponse, err := client.Models.GenerateContent(ctx, modelName, resultContents, &genai.GenerateContentConfig{})
if err != nil {
	log.Fatal(err)
}

printResponse(finalResponse)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

  /**
   * The add function returns the sum of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function add(a, b) {
    return a + b;
  }

  /**
   * The subtract function returns the difference (a - b).
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function subtract(a, b) {
    return a - b;
  }

  /**
   * The multiply function returns the product of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function multiply(a, b) {
    return a * b;
  }

  /**
   * The divide function returns the quotient of a divided by b.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function divide(a, b) {
    return a / b;
  }

  const addDeclaration = {
    name: "addNumbers",
    parameters: {
      type: "object",
      description: "Return the result of adding two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description:
            "The first parameter which can be an integer or a floating point number.",
        },
        secondParam: {
          type: "number",
          description:
            "The second parameter which can be an integer or a floating point number.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const subtractDeclaration = {
    name: "subtractNumbers",
    parameters: {
      type: "object",
      description:
        "Return the result of subtracting the second number from the first.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const multiplyDeclaration = {
    name: "multiplyNumbers",
    parameters: {
      type: "object",
      description: "Return the product of two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const divideDeclaration = {
    name: "divideNumbers",
    parameters: {
      type: "object",
      description:
        "Return the quotient of dividing the first number by the second.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  // Step 1: Call generateContent with function calling enabled.
  const generateContentResponse = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents:
      "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
    config: {
      toolConfig: {
        functionCallingConfig: {
          mode: FunctionCallingConfigMode.ANY,
        },
      },
      tools: [
        {
          functionDeclarations: [
            addDeclaration,
            subtractDeclaration,
            multiplyDeclaration,
            divideDeclaration,
          ],
        },
      ],
    },
  });

  // Step 2: Extract the function call.(
  // Assuming the response contains a 'functionCalls' array.
  const functionCall =
    generateContentResponse.functionCalls &&
    generateContentResponse.functionCalls[0];
  console.log(functionCall);

  // Parse the arguments.
  const args = functionCall.args;
  // Expected args format: { firstParam: number, secondParam: number }

  // Step 3: Invoke the actual function based on the function name.
  const functionMapping = {
    addNumbers: add,
    subtractNumbers: subtract,
    multiplyNumbers: multiply,
    divideNumbers: divide,
  };
  const func = functionMapping[functionCall.name];
  if (!func) {
    console.error("Unimplemented error:", functionCall.name);
    return generateContentResponse;
  }
  const resultValue = func(args.firstParam, args.secondParam);
  console.log("Function result:", resultValue);

  // Step 4: Use the chat API to send the result as the final answer.
  const chat = ai.chats.create({ model: "gemini-3.7-flash" });
  const chatResponse = await chat.sendMessage({
    message: "The final result is " + resultValue,
  });
  console.log(chatResponse.text);
  return chatResponse;
}

محارة


cat > tools.json << EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
} 
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>/dev/null |sed -n '/"content"/,/"finishReason"/p'

جافا

Client client = new Client();

FunctionDeclaration addFunction =
        FunctionDeclaration.builder()
                .name("addNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration subtractFunction =
        FunctionDeclaration.builder()
                .name("subtractNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration multiplyFunction =
        FunctionDeclaration.builder()
                .name("multiplyNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration divideFunction =
        FunctionDeclaration.builder()
                .name("divideNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .toolConfig(ToolConfig.builder().functionCallingConfig(
                FunctionCallingConfig.builder().mode("ANY").build()
        ).build())
        .tools(
                Collections.singletonList(
                        Tool.builder().functionDeclarations(
                                Arrays.asList(
                                        addFunction,
                                        subtractFunction,
                                        divideFunction,
                                        multiplyFunction
                                )
                        ).build()

                )
        )
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
                config);


if (response.functionCalls() == null || response.functionCalls().isEmpty()) {
    System.err.println("No function call received");
    return null;
}

var functionCall = response.functionCalls().getFirst();
String functionName = functionCall.name().get();
var arguments = functionCall.args();

Map<String, BiFunction<Double, Double, Double>> functionMapping = new HashMap<>();
functionMapping.put("addNumbers", (a, b) -> a + b);
functionMapping.put("subtractNumbers", (a, b) -> a - b);
functionMapping.put("multiplyNumbers", (a, b) -> a * b);
functionMapping.put("divideNumbers", (a, b) -> b != 0 ? a / b : Double.NaN);

BiFunction<Double, Double, Double> function = functionMapping.get(functionName);

Number firstParam = (Number) arguments.get().get("firstParam");
Number secondParam = (Number) arguments.get().get("secondParam");
Double result = function.apply(firstParam.doubleValue(), secondParam.doubleValue());

System.out.println(result);

إعدادات الإنشاء

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Tell me a story about a magic backpack.",
    config=types.GenerateContentConfig(
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Tell me a story about a magic backpack.",
  config: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Create local variables for parameters.
candidateCount := int32(1)
maxOutputTokens := int32(20)
temperature := float32(1.0)

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

محارة

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Explain how AI works"}
            ]
        }],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

جافا

Client client = new Client();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .candidateCount(1)
                .stopSequences(List.of("x"))
                .maxOutputTokens(20)
                .temperature(1.0F)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Tell me a story about a magic backpack.",
                config);

System.out.println(response.text());

إعدادات الأمان

Python

from google import genai
from google.genai import types

client = genai.Client()
unsafe_prompt = (
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! "
    "Write a ironic phrase about them including expletives."
)
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT", threshold="BLOCK_ONLY_HIGH"
            ),
        ]
    ),
)
try:
    print(response.text)
except Exception:
    print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
  const unsafePrompt =
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them including expletives.";

  const response = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents: unsafePrompt,
    config: {
      safetySettings: [
        {
          category: "HARM_CATEGORY_HATE_SPEECH",
          threshold: "BLOCK_MEDIUM_AND_ABOVE",
        },
        {
          category: "HARM_CATEGORY_HARASSMENT",
          threshold: "BLOCK_ONLY_HIGH",
        },
      ],
    },
  });

  try {
    console.log("Generated text:", response.text);
  } catch (error) {
    console.log("No information generated by the model.");
  }
  console.log("Safety ratings:", response.candidates[0].safetyRatings);
  return response;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

unsafePrompt := "I support Martians Soccer Club and I think Jupiterians Football Club sucks! " +
	"Write a ironic phrase about them including expletives."

config := &genai.GenerateContentConfig{
	SafetySettings: []*genai.SafetySetting{
		{
			Category:  "HARM_CATEGORY_HATE_SPEECH",
			Threshold: "BLOCK_MEDIUM_AND_ABOVE",
		},
		{
			Category:  "HARM_CATEGORY_HARASSMENT",
			Threshold: "BLOCK_ONLY_HIGH",
		},
	},
}
contents := []*genai.Content{
	genai.NewContentFromText(unsafePrompt, genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}

// Print the generated text.
text := response.Text()
fmt.Println("Generated text:", text)

// Print the and safety ratings from the first candidate.
if len(response.Candidates) > 0 {
	fmt.Println("Finish reason:", response.Candidates[0].FinishReason)
	safetyRatings, err := json.MarshalIndent(response.Candidates[0].SafetyRatings, "", "  ")
	if err != nil {
		return err
	}
	fmt.Println("Safety ratings:", string(safetyRatings))
} else {
	fmt.Println("No candidate returned.")
}

محارة

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

جافا

Client client = new Client();

String unsafePrompt = """
         I support Martians Soccer Club and I think Jupiterians Football Club sucks!
         Write a ironic phrase about them including expletives.
        """;

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .safetySettings(Arrays.asList(
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HATE_SPEECH")
                                .threshold("BLOCK_MEDIUM_AND_ABOVE")
                                .build(),
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HARASSMENT")
                                .threshold("BLOCK_ONLY_HIGH")
                                .build()
                )).build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                unsafePrompt,
                config);

try {
    System.out.println(response.text());
} catch (Exception e) {
    System.out.println("No information generated by the model");
}

System.out.println(response.candidates().get().getFirst().safetyRatings());

تعليمات النظام

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Good morning! How are you?",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Good morning! How are you?",
  config: {
    systemInstruction: "You are a cat. Your name is Neko.",
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Construct the user message contents.
contents := []*genai.Content{
	genai.NewContentFromText("Good morning! How are you?", genai.RoleUser),
}

// Set the system instruction as a *genai.Content.
config := &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText("You are a cat. Your name is Neko.", genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

محارة

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

جافا

Client client = new Client();

Part textPart = Part.builder().text("You are a cat. Your name is Neko.").build();

Content content = Content.builder().role("system").parts(ImmutableList.of(textPart)).build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .systemInstruction(content)
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Good morning! How are you?",
                config);

System.out.println(response.text());

نص الاستجابة

إذا كانت الاستجابة ناجحة، يحتوي نص الاستجابة على مثال GenerateContentResponse.

الطريقة: models.streamGenerateContent

ينشئ ردًا متسلسلاً من النموذج بناءً على الإدخال GenerateContentRequest.

نقطة نهاية

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

مَعلمات المسار

model string

الحقل مطلوب. اسم Model المطلوب استخدامه لإنشاء الإكمال.

التنسيق: models/{model} ويكون بالتنسيق التالي: models/{model}.

نص الطلب

يتضمن نص الطلب بيانات بالبنية التالية:

الحقول
contents[] object (Content)

الحقل مطلوب. محتوى المحادثة الحالية مع النموذج

بالنسبة إلى طلبات البحث ذات الدورات الفردية، يكون هذا مثيلاً واحدًا. بالنسبة إلى الاستعلامات المتعددة الأدوار، مثل المحادثة، هذا حقل متكرّر يحتوي على سجلّ المحادثات وآخر طلب.

tools[] object (Tool)

اختياريّ. قائمة Tools يمكن Model استخدامها لإنشاء الرد التالي.

Tool هي جزء من الرمز البرمجي يتيح للنظام التفاعل مع أنظمة خارجية لتنفيذ إجراء أو مجموعة من الإجراءات خارج نطاق معرفة Model. Tool المتاحة هي Function وcodeExecution. لمزيد من المعلومات، يُرجى الرجوع إلى دليلَي استدعاء الدالة وتطبيق الرموز البرمجية.

toolConfig object (ToolConfig)

اختياريّ. إعدادات الأداة لأي Tool محدّدة في الطلب يمكنك الرجوع إلى دليل استخدام ميزة "استدعاء الدوال" للاطّلاع على مثال على الاستخدام.

safetySettings[] object (SafetySetting)

اختياريّ. قائمة بحالات SafetySetting الفريدة لحظر المحتوى غير الآمن

سيتم فرض هذا الشرط على GenerateContentRequest.contents وGenerateContentResponse.candidates. يجب ألا يكون هناك أكثر من إعداد واحد لكل نوع SafetyCategory. ستحظر واجهة برمجة التطبيقات أي محتوى وردود لا تستوفي الحدود التي تحدّدها هذه الإعدادات. تلغي هذه القائمة الإعدادات التلقائية لكل SafetyCategory محدّد في safetySettings. إذا لم يكن هناك SafetySetting لـ SafetyCategory معيّن مُقدَّم في القائمة، ستستخدم واجهة برمجة التطبيقات إعداد الأمان التلقائي لهذه الفئة. تتوفّر فئات الضرر التالية: HARM_CATEGORY_HATE_SPEECH وHARM_CATEGORY_SEXUALLY_EXPLICIT وHARM_CATEGORY_DANGEROUS_CONTENT وHARM_CATEGORY_HARASSMENT وHARM_CATEGORY_CIVIC_INTEGRITY وHARM_CATEGORY_JAILBREAK. راجِع الدليل للحصول على معلومات مفصّلة حول إعدادات الأمان المتاحة. يمكنك أيضًا الرجوع إلى إرشادات الأمان للتعرّف على كيفية تضمين اعتبارات الأمان في تطبيقات الذكاء الاصطناعي.

systemInstruction object (Content)

اختياريّ. وضع المطوّر تعليمات النظام. في الوقت الحالي، يمكن إدخال نص فقط.

generationConfig object (GenerationConfig)

اختياريّ. خيارات الإعدادات لإنشاء النماذج والمخرجات

cachedContent string

اختياريّ. اسم المحتوى المخزَّن مؤقتًا لاستخدامه كسياق لعرض التوقّع التنسيق: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

اختياريّ. فئة الخدمة للطلب

store boolean

اختياريّ. تضبط هذه السمة سلوك التسجيل لطلب معيّن. في حال ضبطها، تكون لها الأولوية على إعدادات تسجيل البيانات على مستوى المشروع.

مثال على الطلب

نص

Python

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

محارة

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

جافا

Client client = new Client();

ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

صورة

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

محارة

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

جافا

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));


ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                content,
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

الصوت

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

محارة

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

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 "${BASE_URL}/upload/v1beta/files?key=${GEMINI_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 "@${AUDIO_PATH}" 2> /dev/null > file_info.json

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

فيديو

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

محارة

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO_PATH

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_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 "@${VIDEO_PATH}" 2> /dev/null > file_info.json

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

state=$(jq ".file.state" file_info.json)
echo state=$state

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

محارة

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
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 "${BASE_URL}/upload/v1beta/files?key=${GEMINI_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 "@${PDF_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:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

محادثة

Python

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message_stream(message="I have 2 dogs in my house.")
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message_stream(message="How many paws are in my house?")
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.get_history())

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

console.log("Streaming response for first message:");
const stream1 = await chat.sendMessageStream({
  message: "I have 2 dogs in my house.",
});
for await (const chunk of stream1) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log("Streaming response for second message:");
const stream2 = await chat.sendMessageStream({
  message: "How many paws are in my house?",
});
for await (const chunk of stream2) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log(chat.getHistory());

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}
chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "I have 2 dogs in my house."}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "How many paws are in my house?"}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

fmt.Println(chat.History(false))

محارة

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

نص الاستجابة

إذا كانت الاستجابة ناجحة، يحتوي نص الاستجابة على سلسلة من أمثلة GenerateContentResponse.

GenerateContentResponse

ردّ من النموذج يتضمّن عدة ردود مرشّحة

يتم عرض تقييمات الأمان وفلترة المحتوى لكل من الطلب في GenerateContentResponse.prompt_feedback ولكل مرشّح في finishReason وsafetyRatings. تتضمّن واجهة برمجة التطبيقات ما يلي: - تعرض إما جميع المرشّحين المطلوبين أو لا تعرض أيًا منهم - لا تعرض أي مرشّحين على الإطلاق إلا إذا كان هناك خطأ في الطلب (راجِع promptFeedback) - تقدّم ملاحظات حول كل مرشّح في finishReason وsafetyRatings.

الحقول
candidates[] object (Candidate)

ردود المرشحين من النموذج

promptFeedback object (PromptFeedback)

تعرض هذه السمة الملاحظات حول طلبك المرتبطة بفلاتر المحتوى.

usageMetadata object (UsageMetadata)

النتائج فقط. بيانات وصفية حول استخدام الرموز المميزة لطلبات الإنشاء

modelVersion string

النتائج فقط. إصدار النموذج المستخدَم لإنشاء الردّ.

responseId string

حقل إخراج فقط، ويُستخدم responseId لتحديد كل رد.

modelStatus object (ModelStatus)

النتائج فقط. تعرض هذه السمة حالة النموذج الحالية.

تمثيل JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

مجموعة من البيانات الوصفية للملاحظات والآراء التي حدّدها الطلب في GenerateContentRequest.content

الحقول
blockReason enum (BlockReason)

اختياريّ. في حال ضبطها، تم حظر الطلب ولم يتم عرض أي نتائج محتملة. أعِد صياغة الطلب.

safetyRatings[] object (SafetyRating)

تقييمات أمان الطلب يمكنك إضافة تقييم واحد كحدّ أقصى لكل فئة.

تمثيل JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

تحدّد هذه السمة سبب حظر الطلب.

عمليات التعداد
BLOCK_REASON_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
SAFETY تم حظر الطلب لأسباب تتعلق بالأمان. افحص safetyRatings لمعرفة فئة الأمان التي حظرته.
OTHER تم حظر الطلب لأسباب غير معروفة.
BLOCKLIST تم حظر الطلب بسبب العبارات التي تم تضمينها من قائمة الحظر الخاصة بالمصطلحات.
PROHIBITED_CONTENT تم حظر الطلب بسبب المحتوى المحظور.
IMAGE_SAFETY تم حظر المرشّحين بسبب المحتوى غير الآمن الذي تم إنشاؤه من الصور.

UsageMetadata

البيانات الوصفية المتعلقة باستخدام الرموز المميزة لطلب الإنشاء

الحقول
promptTokenCount integer

عدد الرموز المميزة في الطلب عند ضبط cachedContent، يظلّ هذا هو إجمالي حجم الطلب الفعّال، ما يعني أنّه يشمل عدد الرموز المميزة في المحتوى المخزّن مؤقتًا.

cachedContentTokenCount integer

عدد الرموز المميّزة في الجزء المخزّن مؤقتًا من الطلب (المحتوى المخزّن مؤقتًا)

candidatesTokenCount integer

إجمالي عدد الرموز المميزة في جميع الردود المقترَحة التي تم إنشاؤها

toolUsePromptTokenCount integer

النتائج فقط. عدد الرموز المميزة المتوفّرة في طلبات استخدام الأدوات

thoughtsTokenCount integer

النتائج فقط. عدد الرموز المميّزة للأفكار في نماذج التفكير

totalTokenCount integer

إجمالي عدد الرموز المميّزة لطلب الإنشاء (الطلب + الأفكار + الردود المحتملة)

promptTokensDetails[] object (ModalityTokenCount)

النتائج فقط. قائمة بالوسائط التي تمت معالجتها في بيانات الإدخال الخاصة بالطلب

cacheTokensDetails[] object (ModalityTokenCount)

النتائج فقط. قائمة بأنواع المحتوى المخزّن مؤقتًا في بيانات طلب البحث.

candidatesTokensDetails[] object (ModalityTokenCount)

النتائج فقط. قائمة بالوسائط التي تم عرضها في الردّ.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

النتائج فقط. قائمة بالوسائط التي تمت معالجتها لإدخالات طلب استخدام الأدوات

serviceTier enum (ServiceTier)

النتائج فقط. فئة الخدمة للطلب

تمثيل JSON
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "cacheTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "candidatesTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "toolUsePromptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "serviceTier": enum (ServiceTier)
}

ModelStatus

حالة النموذج الأساسي. يُستخدَم هذا الحقل للإشارة إلى مرحلة النموذج الأساسي ووقت إيقافه نهائيًا، إذا كان ذلك منطبقًا.

الحقول
modelStage enum (ModelStage)

مرحلة النموذج الأساسي

retirementTime string (Timestamp format)

الوقت الذي سيتم فيه إيقاف النموذج نهائيًا.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

message string

رسالة تشرح حالة النموذج

تمثيل JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

تحدّد هذه السمة مرحلة النموذج الأساسي.

عمليات التعداد
MODEL_STAGE_UNSPECIFIED مرحلة النموذج غير محدَّدة.
UNSTABLE_EXPERIMENTAL

يخضع النموذج الأساسي للكثير من عمليات الضبط.

EXPERIMENTAL النماذج في هذه المرحلة مخصّصة لأغراض تجريبية فقط.
PREVIEW تكون النماذج في هذه المرحلة أكثر تطورًا من النماذج التجريبية.
STABLE تُعدّ النماذج في هذه المرحلة ثابتة وجاهزة للاستخدام في بيئة إنتاجية.
LEGACY إذا كان النموذج في هذه المرحلة، يعني ذلك أنّه سيتم إيقافه نهائيًا في المستقبل القريب. يمكن للعملاء الحاليين فقط استخدام هذا النموذج.
DEPRECATED

تم إيقاف النماذج في هذه المرحلة نهائيًا. لا يمكن استخدام هذه النماذج.

RETIRED يتم إيقاف النماذج في هذه المرحلة. لا يمكن استخدام هذه النماذج.

مرشح

مرشّح ردّ تم إنشاؤه من النموذج

الحقول
content object (Content)

النتائج فقط. المحتوى الذي تم إنشاؤه والذي تم إرجاعه من النموذج

finishReason enum (FinishReason)

اختياريّ. النتائج فقط. سبب توقّف النموذج عن إنشاء الرموز المميزة.

إذا كان الحقل فارغًا، يعني ذلك أنّ النموذج لم يتوقف عن إنشاء الرموز المميزة.

safetyRatings[] object (SafetyRating)

قائمة بتقييمات أمان الردّ المقترَح.

يمكنك إضافة تقييم واحد كحدّ أقصى لكل فئة.

citationMetadata object (CitationMetadata)

النتائج فقط. معلومات الاقتباس الخاصة بالمرشح الذي تم إنشاؤه بواسطة النموذج

قد تتم تعبئة هذا الحقل بمعلومات التلاوة لأي نص مضمّن في content. وهي عبارة عن مقاطع "مقتبسة" من مواد محمية بحقوق الطبع والنشر في بيانات التدريب الخاصة بنموذج اللغة الكبير الأساسي.

tokenCount integer

النتائج فقط. عدد الرموز المميّزة لهذا المرشّح.

groundingAttributions[] object (GroundingAttribution)

النتائج فقط. تمثّل هذه السمة معلومات تحديد المصدر للمصادر التي ساهمت في تقديم إجابة مستندة إلى مصادر.

يتم ملء هذا الحقل لطلبات GenerateAnswer.

groundingMetadata object (GroundingMetadata)

النتائج فقط. البيانات الوصفية الأساسية للمرشّح

يتم ملء هذا الحقل لطلبات GenerateContent.

avgLogprobs number

النتائج فقط. متوسط نتيجة الاحتمالية اللوغاريتمية للمرشّح

logprobsResult object (LogprobsResult)

النتائج فقط. نتائج احتمالية اللوغاريتم لرموز الردّ المميزة وأهم الرموز المميزة

urlContextMetadata object (UrlContextMetadata)

النتائج فقط. بيانات وصفية مرتبطة بأداة استرجاع سياق عنوان URL

index integer

النتائج فقط. فهرس المرشّح في قائمة المرشّحين للردّ

finishMessage string

اختياريّ. النتائج فقط. تعرض هذه السمة تفاصيل حول سبب توقّف النموذج عن إنشاء الرموز المميزة. لا تتم تعبئة هذا الحقل إلا عند ضبط finishReason.

تمثيل JSON
{
  "content": {
    object (Content)
  },
  "finishReason": enum (FinishReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "citationMetadata": {
    object (CitationMetadata)
  },
  "tokenCount": integer,
  "groundingAttributions": [
    {
      object (GroundingAttribution)
    }
  ],
  "groundingMetadata": {
    object (GroundingMetadata)
  },
  "avgLogprobs": number,
  "logprobsResult": {
    object (LogprobsResult)
  },
  "urlContextMetadata": {
    object (UrlContextMetadata)
  },
  "index": integer,
  "finishMessage": string
}

FinishReason

تحدّد هذه السمة سبب توقّف النموذج عن إنشاء الرموز المميزة.

عمليات التعداد
FINISH_REASON_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
STOP نقطة التوقّف الطبيعية للنموذج أو تسلسل التوقّف المقدَّم
MAX_TOKENS تم بلوغ الحد الأقصى لعدد الرموز المميّزة المحدّد في الطلب.
SAFETY تم الإبلاغ عن المحتوى المرشّح للردّ لأسباب تتعلّق بالأمان.
RECITATION تم الإبلاغ عن محتوى الردّ المرشّح لأسباب تتعلّق بالتلاوة.
LANGUAGE تم الإبلاغ عن المحتوى المرشّح للردّ بسبب استخدام لغة غير متاحة.
OTHER السبب غير معروف.
BLOCKLIST توقّف إنشاء الرموز المميزة لأنّ المحتوى يتضمّن عبارات محظورة.
PROHIBITED_CONTENT تم إيقاف إنشاء الرموز المميزة لاحتمال احتوائها على محتوى محظور.
SPII تم إيقاف إنشاء الرموز المميزة لأنّ المحتوى قد يتضمّن معلومات حسّاسة تكشف عن الهويّة (SPII).
MALFORMED_FUNCTION_CALL طلب الدالة الذي أنشأه النموذج غير صالح.
IMAGE_SAFETY توقّف إنشاء الرموز المميزة لأنّ الصور التي تم إنشاؤها تتضمّن انتهاكات متعلّقة بالأمان.
IMAGE_PROHIBITED_CONTENT توقّفت عملية إنشاء الصور لأنّ الصور التي تم إنشاؤها تتضمّن محتوًى محظورًا آخر.
IMAGE_OTHER تم إيقاف عملية إنشاء الصورة بسبب مشكلة أخرى متنوّعة.
NO_IMAGE كان من المتوقّع أن ينشئ النموذج صورة، ولكن لم يتم إنشاء أي صورة.
IMAGE_RECITATION تم إيقاف عملية إنشاء الصورة بسبب التلاوة.
UNEXPECTED_TOOL_CALL أنشأ النموذج طلبًا لاستخدام أداة، ولكن لم يتم تفعيل أي أدوات في الطلب.
TOO_MANY_TOOL_CALLS استدعى النموذج عددًا كبيرًا جدًا من الأدوات بشكل متتالٍ، وبالتالي أوقف النظام التنفيذ.
MISSING_THOUGHT_SIGNATURE يتضمّن الطلب توقيع فكرة واحدًا على الأقل غير متوفّر.
MALFORMED_RESPONSE تم إنهاء المحادثة بسبب ردّ مكتوب بشكل غير صحيح.
ESCALATION تمت فلترة الطلب حسب قاعدة تصعيد.

GroundingAttribution

معلومات تحديد المصدر الذي ساهم في تقديم إجابة

الحقول
sourceId object (AttributionSourceId)

النتائج فقط. معرّف المصدر الذي يساهم في تحديد مصدر الإحالة هذا.

content object (Content)

محتوى المصدر الأساسي الذي يتضمّنه هذا البيان

تمثيل JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

معرّف المصدر الذي يساهم في تحديد مصدر الإحالة هذا.

الحقول
source Union type
يمكن أن يكون التعليق source إحدى القيم التالية فقط:
groundingPassage object (GroundingPassageId)

تمثّل هذه السمة معرّفًا لمقطع مضمّن.

semanticRetrieverChunk object (SemanticRetrieverChunk)

معرّف Chunk تم استرجاعه من خلال Semantic Retriever.

تمثيل JSON
{

  // source
  "groundingPassage": {
    object (GroundingPassageId)
  },
  "semanticRetrieverChunk": {
    object (SemanticRetrieverChunk)
  }
  // Union type
}

GroundingPassageId

معرّف لجزء ضمن GroundingPassage

الحقول
passageId string

النتائج فقط. معرّف المقطع المطابق لـ GroundingPassage.id في GenerateAnswerRequest

partIndex integer

النتائج فقط. فهرس الجزء ضمن GroundingPassage.content الخاص بـ GenerateAnswerRequest

تمثيل JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

معرّف Chunk تم استرداده من خلال Semantic Retriever المحدّد في GenerateAnswerRequest باستخدام SemanticRetrieverConfig.

الحقول
source string

النتائج فقط. اسم المصدر الذي يتطابق مع SemanticRetrieverConfig.source في الطلب مثال: corpora/123 أو corpora/123/documents/abc

chunk string

النتائج فقط. اسم Chunk الذي يحتوي على النص المنسوب. مثال: corpora/123/documents/abc/chunks/xyz

تمثيل JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

البيانات الوصفية التي يتم عرضها للعميل عند تفعيل ميزة "الاستناد إلى مصادر خارجية"

الحقول
groundingChunks[] object (GroundingChunk)

قائمة بالمراجع الداعمة التي تم استرجاعها من مصدر المعلومات الأساسية المحدّد عند البث، لا يحتوي هذا الحقل إلا على أجزاء المعلومات الأساسية التي لم يتم تضمينها في البيانات الوصفية الأساسية للردود السابقة.

groundingSupports[] object (GroundingSupport)

قائمة بميزات التأسيس المتوافقة

webSearchQueries[] string

طلبات البحث على الويب التي يتم إجراؤها لمتابعة البحث على الويب

imageSearchQueries[] string

طلبات البحث بالصور المستخدَمة في التأسيس

searchEntryPoint object (SearchEntryPoint)

اختياريّ. نقطة دخول &quot;بحث Google&quot; لعمليات البحث اللاحقة على الويب

retrievalMetadata object (RetrievalMetadata)

البيانات الوصفية ذات الصلة بعملية الاسترجاع في مسار تحديد المصدر

googleMapsWidgetContextToken string

اختياريّ. اسم المورد لرمز مميّز سياقي لأداة خرائط Google الذي يمكن استخدامه مع أداة PlacesContextElement لعرض البيانات السياقية. لا تتم تعبئة هذا الحقل إلا في حال تفعيل ميزة "استخدام خرائط Google كمصدر".

تمثيل JSON
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

نقطة الدخول إلى "بحث Google"

الحقول
renderedContent string

اختياريّ. مقتطف من محتوى الويب يمكن تضمينه في صفحة ويب أو WebView في تطبيق

sdkBlob string (bytes format)

اختياريّ. تمثّل هذه السمة JSON مرمّزًا بتنسيق Base64 يتضمّن مصفوفة من مجموعة <عبارة البحث، عنوان URL الخاص بالبحث>.

سلسلة مرمّزة باستخدام Base64

تمثيل JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

يمثّل GroundingChunk جزءًا من الأدلة الداعمة التي تستند إليها استجابة النموذج. يمكن أن تكون هذه المعلومات مقتطفًا من الويب أو سياقًا تم استرجاعه من ملف أو معلومات من "خرائط Google".

الحقول
chunk_type Union type
نوع الجزء يمكن أن يكون التعليق chunk_type إحدى القيم التالية فقط:
web object (Web)

مقتطف تحديد المصدر من الويب

image object (Image)

اختياريّ. مقتطف تحديد المصدر من "بحث الصور"

retrievedContext object (RetrievedContext)

اختياريّ. جزء مستند إلى السياق تم استرداده من خلال أداة البحث عن الملفات

maps object (Maps)

اختياريّ. مقتطف مستند إلى "خرائط Google"

تمثيل JSON
{

  // chunk_type
  "web": {
    object (Web)
  },
  "image": {
    object (Image)
  },
  "retrievedContext": {
    object (RetrievedContext)
  },
  "maps": {
    object (Maps)
  }
  // Union type
}

الويب

مقتطف من الويب

الحقول
uri string

النتائج فقط. معرّف الموارد المنتظم (URI) الخاص بالجزء

title string

النتائج فقط. تمثّل هذه السمة عنوان الجزء.

تمثيل JSON
{
  "uri": string,
  "title": string
}

صورة

مقتطف من بحث الصور

الحقول
sourceUri string

معرّف الموارد المنتظم (URI) لصفحة الويب الخاصة بتحديد المصدر

imageUri string

عنوان URL لمادة عرض الصورة

title string

تمثّل عنوان صفحة الويب التي تمّت استعارة الصورة منها.

domain string

النطاق الجذر لصفحة الويب التي تأتي منها الصورة، مثل "example.com".

تمثيل JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

مقتطف من السياق الذي تم استرداده باستخدام أداة البحث عن الملفات

الحقول
customMetadata[] object (CustomMetadata)

اختياريّ. بيانات وصفية مقدَّمة من المستخدم حول السياق الذي تم استرجاعه

uri string

اختياريّ. مرجع معرّف الموارد المنتظم (URI) لمستند الاسترجاع الدلالي

title string

اختياريّ. تمثّل هذه السمة عنوان المستند.

text string

اختياريّ. نص الجزء

fileSearchStore string

اختياريّ. اسم FileSearchStore الذي يحتوي على المستند مثال: fileSearchStores/123

pageNumber integer

اختياريّ. تمثّل هذه السمة رقم الصفحة التي تم استرداد السياق منها، إذا كان ذلك منطبقًا.

mediaId string

اختياريّ. اسم مورد blob الوسائط لنتائج البحث عن الملفات المتعدّدة الوسائط التنسيق: fileSearchStores/{file_search_store_id}/media/{blobId}

تمثيل JSON
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

بيانات وصفية مقدَّمة من المستخدِم حول GroundingFact

الحقول
key string

مفتاح البيانات الوصفية

value Union type
قيمة البيانات الوصفية يمكن أن تكون سلسلة أو قائمة سلاسل أو رقمًا. يمكن أن يكون التعليق value إحدى القيم التالية فقط:
stringValue string

اختياريّ. قيمة السلسلة للبيانات الوصفية

stringListValue object (StringList)

اختياريّ. قائمة بقيم السلسلة للبيانات الوصفية

numericValue number

اختياريّ. القيمة الرقمية للبيانات الوصفية يعتمد النطاق المتوقّع لهذه القيمة على key المحدّد المستخدَم.

تمثيل JSON
{
  "key": string,

  // value
  "stringValue": string,
  "stringListValue": {
    object (StringList)
  },
  "numericValue": number
  // Union type
}

StringList

قائمة بقيم السلسلة

الحقول
values[] string

قيم السلسلة في القائمة

تمثيل JSON
{
  "values": [
    string
  ]
}

الخرائط

مقتطف من "خرائط Google" يتوافق جزء "خرائط Google" مع مكان واحد.

الحقول
uri string

يشير إلى معرّف الموارد المنتظم (URI) للمكان.

title string

تمثّل هذه السمة عنوان المكان.

text string

الوصف النصي لإجابة المكان

placeId string

معرّف المكان بالتنسيق places/{placeId} يمكن للمستخدم استخدام هذا المعرّف للبحث عن هذا المكان.

placeAnswerSources object (PlaceAnswerSources)

المصادر التي تقدّم إجابات عن ميزات مكان معيّن في "خرائط Google"

تمثيل JSON
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

مجموعة من المصادر التي تقدّم إجابات حول ميزات مكان معيّن في "خرائط Google" تتطابق كل رسالة PlaceAnswerSources مع مكان محدّد في "خرائط Google". استخدمت أداة "خرائط Google" هذه المصادر للإجابة عن أسئلة حول ميزات المكان (مثلاً: "هل يوفّر مقهى Foo خدمة Wi-Fi؟" أو "هل يمكن الوصول إلى مقهى Foo باستخدام كرسي متحرك؟"). في الوقت الحالي، لا نتيح سوى مقتطفات المراجعات كمصادر.

الحقول
reviewSnippets[] object (ReviewSnippet)

مقتطفات من المراجعات تُستخدَم لإنشاء إجابات حول ميزات مكان معيّن في "خرائط Google"

تمثيل JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

تتضمّن مقتطفًا من مراجعة مستخدم تجيب عن سؤال حول ميزات مكان معيّن في "خرائط Google".

الحقول
reviewId string

رقم تعريف مقتطف من المراجعة.

googleMapsUri string

رابط يتوافق مع مراجعة المستخدم على "خرائط Google".

title string

تمثّل هذه السمة عنوان المراجعة.

تمثيل JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

دعم تحديد المصدر

الحقول
groundingChunkIndices[] integer

اختياريّ. قائمة بالفهارس (في grounding_chunk في response.candidate.grounding_metadata) تحدّد الاقتباسات المرتبطة بالمطالبة. على سبيل المثال، تعني [1,3,4] أنّ grounding_chunk[1] وgrounding_chunk[3] وgrounding_chunk[4] هي المحتوى الذي تم استرجاعه والمستند إليه في الادعاء. إذا كانت الاستجابة يتم بثها، تشير groundingChunkIndices إلى الفهارس في جميع الاستجابات. يتحمّل العميل مسؤولية تجميع أجزاء المستندات الأساسية من جميع الردود (مع الحفاظ على الترتيب نفسه).

confidenceScores[] number

اختياريّ. درجة الثقة في مراجع الدعم تتراوح القيم بين 0 و1. ‫1 هو الأكثر ثقة. يجب أن يكون حجم هذه القائمة مماثلاً لحجم groundingChunkIndices.

renderedParts[] integer

النتائج فقط. فهارس في الحقل parts الخاص بمحتوى المرشّح تحدّد هذه الفهارس الأجزاء المعروضة المرتبطة بمصدر الدعم هذا.

segment object (Segment)

شريحة المحتوى التي ينتمي إليها هذا الدعم

تمثيل JSON
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

تقسيم

شريحة من المحتوى

الحقول
partIndex integer

فهرس كائن "الجزء" ضِمن كائن "المحتوى" الرئيسي

startIndex integer

فهرس البداية في الجزء المحدّد، ويتم قياسه بالبايت. الإزاحة من بداية الجزء، شاملة، بدءًا من الصفر

endIndex integer

فهرس النهاية في الجزء المحدّد، ويُقاس بالبايت. الإزاحة من بداية الجزء، باستثناء الجزء نفسه، بدءًا من الصفر

text string

تمثّل هذه السمة النص الذي يتطابق مع المقطع من الردّ.

تمثيل JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

البيانات الوصفية ذات الصلة بعملية الاسترجاع في مسار تحديد المصدر

الحقول
googleSearchDynamicRetrievalScore number

اختياريّ. نتيجة تشير إلى مدى احتمال أن تساعد المعلومات من "بحث Google" في الإجابة عن الطلب. تندرج النتيجة ضمن النطاق [0, 1]، حيث يشير 0 إلى الاحتمال الأقل ويشير 1 إلى الاحتمال الأكبر. لا تتم تعبئة هذه النتيجة إلا عند تفعيل ميزة "الاستناد إلى البحث على Google" و"الاسترجاع الديناميكي". ستتم مقارنته بالحدّ الأدنى لتحديد ما إذا كان سيتم تفعيل البحث على Google.

تمثيل JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

نتيجة Logprobs

الحقول
topCandidates[] object (TopCandidates)

الطول = إجمالي عدد خطوات فك الترميز.

chosenCandidates[] object (Candidate)

الطول = إجمالي عدد خطوات فك الترميز. قد يكون المرشّحون المختارون ضمن topCandidates أو لا يكونون.

logProbabilitySum number

مجموع احتمالات اللوغاريتمات لجميع الرموز المميزة

تمثيل JSON
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

المرشّحون الذين لديهم أعلى احتمالات السجلّ في كل خطوة من خطوات فك الترميز

الحقول
candidates[] object (Candidate)

مرتّبة تنازليًا حسب احتمالية اللوغاريتم.

تمثيل JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

مرشح

المرشّح للرمز المميز الخاص بـ logprobs والنتيجة

الحقول
token string

قيمة سلسلة الرمز المميّز للمرشّح.

tokenId integer

قيمة معرّف الرمز المميّز للمرشّح.

logProbability number

احتمالية السجلّ للمرشّح

تمثيل JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

بيانات وصفية مرتبطة بأداة استرجاع سياق عنوان URL

الحقول
urlMetadata[] object (UrlMetadata)

قائمة بسياق عناوين URL

تمثيل JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

سياق استرداد عنوان URL واحد

الحقول
retrievedUrl string

عنوان URL الذي استردته الأداة

urlRetrievalStatus enum (UrlRetrievalStatus)

حالة استرداد عنوان URL

تمثيل JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

حالة استرداد عنوان URL

عمليات التعداد
URL_RETRIEVAL_STATUS_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
URL_RETRIEVAL_STATUS_SUCCESS تم استرداد عنوان URL بنجاح.
URL_RETRIEVAL_STATUS_ERROR تعذّر استرداد عنوان URL بسبب حدوث خطأ.
URL_RETRIEVAL_STATUS_PAYWALL تعذّر استرداد عنوان URL لأنّ المحتوى محمي بنظام حظر الاشتراك غير المدفوع.
URL_RETRIEVAL_STATUS_UNSAFE تعذّر استرداد عنوان URL لأنّ المحتوى غير آمن.

CitationMetadata

مجموعة من بيانات تحديد المصدر الخاصة بجزء من المحتوى

الحقول
citationSources[] object (CitationSource)

اقتباسات من مصادر لردّ معيّن

تمثيل JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

اقتباس من مصدر لجزء من ردّ معيّن

الحقول
startIndex integer

اختياريّ. بداية جزء الردّ الذي يعود مصدره إلى هذا المستند

يشير الفهرس إلى بداية المقطع، ويتم قياسه بالبايت.

endIndex integer

اختياريّ. تمثّل نهاية المقطع المنسوب، وهي غير مشمولة.

uri string

اختياريّ. معرّف الموارد المنتظم (URI) الذي يتم تحديده كمصدر لجزء من النص

license string

اختياريّ. ترخيص مشروع GitHub الذي تم تحديده كمصدر للجزء

يجب توفير معلومات الترخيص عند تضمين اقتباسات من الرمز البرمجي.

تمثيل JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

تمثّل هذه السمة فئة التقييم.

وتشمل هذه الفئات أنواعًا مختلفة من الأضرار التي قد يرغب المطوّرون في تعديلها.

عمليات التعداد
HARM_CATEGORY_UNSPECIFIED الفئة غير محدَّدة.
HARM_CATEGORY_DEROGATORY PaLM: تعليقات سلبية أو مؤذية تستهدف الهوية و/أو السمات المحمية
HARM_CATEGORY_TOXICITY PaLM: المحتوى الذي يتضمّن لغة وقحة أو غير محترمة أو نابية
HARM_CATEGORY_VIOLENCE PaLM: يصف سيناريوهات تصوّر العنف ضد فرد أو مجموعة، أو أوصافًا عامة للمشاهد الدموية.
HARM_CATEGORY_SEXUAL PaLM: تتضمّن السمة إشارات إلى أفعال جنسية أو محتوًى بذيئًا آخر.
HARM_CATEGORY_MEDICAL PaLM: يروّج لنصائح طبية غير مدقَّقة.
HARM_CATEGORY_DANGEROUS PaLM: المحتوى الخطير الذي يروّج لأفعال ضارّة أو يسهّل تنفيذها أو يشجّع عليها
HARM_CATEGORY_HARASSMENT Gemini - المحتوى الذي يهدف إلى المضايقة
HARM_CATEGORY_HATE_SPEECH Gemini: الكلام الذي يحض على الكراهية والمحتوى
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini - المحتوى الجنسي الفاضح
HARM_CATEGORY_DANGEROUS_CONTENT Gemini - المحتوى الخطير
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini: المحتوى الذي قد يُستخدم للإضرار بالنزاهة المدنية تم إيقاف هذه السمة نهائيًا، لذا يُرجى استخدام enableEnhancedCivicAnswers بدلاً منها.

HARM_CATEGORY_JAILBREAK Gemini: الطلبات التي تحاول تجاوز إرشادات السلامة في النموذج أو التحايل عليها (محاولات اختراق).

ModalityTokenCount

تمثّل هذه السمة معلومات حول عدد الرموز المميزة لوسيط واحد.

الحقول
modality enum (Modality)

تمثّل هذه السمة نوع الوسائط المرتبط بعدد الرموز المميزة هذا.

tokenCount integer

عدد الرموز المميّزة

تمثيل JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

نمط البيانات

طريقة عرض جزء المحتوى

عمليات التعداد
MODALITY_UNSPECIFIED طريقة غير محدّدة
TEXT نص عادي
IMAGE صورة:
VIDEO الفيديو
AUDIO ملف صوتي:
DOCUMENT مستند، مثل PDF

SafetyRating

تمثّل هذه السمة تقييم السلامة لجزء من المحتوى.

يتضمّن تقييم الأمان فئة الضرر ومستوى احتمال الضرر في تلك الفئة لقطعة من المحتوى. يتم تصنيف المحتوى من حيث الأمان ضمن عدد من فئات الضرر، ويتم تضمين احتمالية تصنيف الضرر هنا.

الحقول
category enum (HarmCategory)

الحقل مطلوب. تمثّل هذه السمة فئة التقييم.

probability enum (HarmProbability)

الحقل مطلوب. تمثّل هذه السمة احتمال الضرر من هذا المحتوى.

blocked boolean

هل تم حظر هذا المحتوى بسبب هذا التقييم؟

تمثيل JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

تمثّل هذه السمة احتمال أن يكون المحتوى ضارًا.

يقدّم نظام التصنيف احتمال أن يكون المحتوى غير آمن. ولا يشير ذلك إلى مدى خطورة الضرر الذي قد يسبّبه المحتوى.

عمليات التعداد
HARM_PROBABILITY_UNSPECIFIED لم يتم تحديد الاحتمالية.
NEGLIGIBLE فرصة ضئيلة جدًا لأن يكون المحتوى غير آمن
LOW المحتوى لديه فرصة منخفضة لأن يكون غير آمن.
MEDIUM هناك احتمال متوسط بأن يكون المحتوى غير آمن.
HIGH من المحتمل جدًا أن يكون المحتوى غير آمن.

SafetySetting

إعدادات الأمان التي تؤثر في سلوك الحظر المتعلق بالأمان

يؤدي ضبط إعدادات الأمان لفئة معيّنة إلى تغيير الاحتمالية المسموح بها لحظر المحتوى.

الحقول
category enum (HarmCategory)

الحقل مطلوب. فئة هذا الإعداد

threshold enum (HarmBlockThreshold)

الحقل مطلوب. تتحكّم هذه السمة في حد الاحتمال الذي يتم عنده حظر المحتوى الضار.

تمثيل JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

حظر المحتوى عند مستوى احتمال ضرر محدّد أو أعلى

عمليات التعداد
HARM_BLOCK_THRESHOLD_UNSPECIFIED لم يتم تحديد الحدّ.
BLOCK_LOW_AND_ABOVE سيتم السماح بالمحتوى الذي يتضمّن مستوى "ضئيل".
BLOCK_MEDIUM_AND_ABOVE سيُسمح بالمحتوى الذي يتضمّن مستوى تأثير NEGLIGIBLE وLOW.
BLOCK_ONLY_HIGH سيُسمح بالمحتوى الذي يتضمّن مستويات "ضئيل" و"منخفض" و"متوسط".
BLOCK_NONE سيتم السماح بكل المحتوى.
OFF أوقِف فلتر الأمان.

ServiceTier

فئة الخدمة للطلب

عمليات التعداد
unspecified فئة الخدمة التلقائية، وهي الفئة العادية
standard فئة الخدمة العادية
flex فئة خدمة Flex
priority فئة الخدمة ذات الأولوية

المحتوى

نوع البيانات المنظَّمة الأساسي الذي يحتوي على محتوى متعدد الأجزاء لرسالة

يتضمّن Content حقل role يحدّد منتج Content وحقل parts يحتوي على بيانات متعدّدة الأجزاء تتضمّن محتوى دورة الرسالة.

الحقول
parts[] object (Part)

Parts بالترتيب التي تشكّل رسالة واحدة قد تحتوي الأجزاء على أنواع MIME مختلفة.

role string

اختياريّ. تمثّل هذه السمة منتج المحتوى. يجب أن تكون القيمة إما "user" أو "model".

من المفيد ضبط هذه السمة للمحادثات المترابطة، وإلا يمكن تركها فارغة أو بدون ضبط.

تمثيل JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

الجزء

نوع بيانات يحتوي على وسائط تشكّل جزءًا من رسالة Content متعددة الأجزاء.

يتألف Part من بيانات لها نوع بيانات مرتبط بها. لا يمكن أن يحتوي Part إلا على نوع واحد من الأنواع المقبولة في Part.data.

يجب أن يحتوي Part على نوع MIME ثابت من IANA يحدّد نوع الوسائط ونوعها الفرعي إذا كان الحقل inlineData مملوءًا بوحدات بايت أولية.

الحقول
thought boolean

اختياريّ. تشير إلى ما إذا كان الجزء مستنتجًا من النموذج.

thoughtSignature string (bytes format)

اختياريّ. توقيع غير شفاف للفكرة حتى يمكن إعادة استخدامه في الطلبات اللاحقة.

سلسلة مرمّزة باستخدام Base64

partMetadata object (Struct format)

بيانات وصفية مخصّصة مرتبطة بالجزء قد يحتاج الوكلاء الذين يستخدمون genai.Part كتمثيل للمحتوى إلى تتبُّع المعلومات الإضافية. على سبيل المثال، يمكن أن يكون اسم ملف أو مصدر ينشأ منه الجزء أو طريقة لدمج عدة تدفقات أجزاء.

mediaResolution object (MediaResolution)

اختياريّ. تمثّل هذه السمة دقة الوسائط التي تم إدخالها.

mediaProcessing enum (MediaProcessing)

اختياريّ. كيف يعالج النموذج وسائط هذا الجزء لفهمها هذه السمة مهمة فقط لأجزاء الفيديو (inlineData أو fileData مع نوع MIME للفيديو). تتجاهل الأجزاء غير المرتبطة بالفيديو هذا الحقل.

data Union type
يمكن أن يكون التعليق data إحدى القيم التالية فقط:
text string

نص مضمّن

inlineData object (Blob)

وحدات بايت الوسائط المضمّنة

functionCall object (FunctionCall)

تمثّل FunctionCall متوقّعة تم إرجاعها من النموذج تحتوي على سلسلة تمثّل FunctionDeclaration.name مع الوسيطات وقيمها.

functionResponse object (FunctionResponse)

يتم استخدام نتيجة تنفيذ FunctionCall التي تحتوي على سلسلة تمثّل FunctionDeclaration.name وعنصر JSON منظَّم يحتوي على أي ناتج من الدالة كسياق للنموذج.

fileData object (FileData)

البيانات المستندة إلى معرّف الموارد المنتظم (URI)

executableCode object (ExecutableCode)

الرمز الذي أنشأه النموذج والمخصّص للتنفيذ

codeExecutionResult object (CodeExecutionResult)

نتيجة تنفيذ ExecutableCode

toolCall object (ToolCall)

طلب استخدام أداة من جهة الخادم يتم ملء هذا الحقل عندما يتوقّع النموذج استدعاء أداة يجب تنفيذها على الخادم. من المتوقّع أن يعيد العميل إرسال هذه الرسالة إلى واجهة برمجة التطبيقات.

toolResponse object (ToolResponse)

الناتج من تنفيذ ToolCall من جهة الخادم يملأ العميل هذا الحقل بنتائج تنفيذ ToolCall المقابل.

metadata Union type
تتحكّم هذه السمة في المعالجة المُسبقة الإضافية للبيانات. يمكن أن يكون التعليق metadata إحدى القيم التالية فقط:
videoMetadata object (VideoMetadata)

اختياريّ. البيانات الوصفية للفيديو يجب تحديد البيانات الوصفية فقط أثناء عرض بيانات الفيديو في inlineData أو fileData.

تمثيل JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),

  // data
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  },
  "toolCall": {
    object (ToolCall)
  },
  "toolResponse": {
    object (ToolResponse)
  }
  // Union type

  // metadata
  "videoMetadata": {
    object (VideoMetadata)
  }
  // Union type
}

بلوب

وحدات بايت الوسائط الأولية

يجب عدم إرسال النص كبايتات أولية، بل استخدام الحقل "text".

الحقول
mimeType string

نوع MIME المتوافق مع معيار IANA لبيانات المصدر. أمثلة على الأنواع المتوافقة: - الصور: image/png وimage/jpeg وimage/jpg وimage/webp وimage/heic وimage/heif وimage/gif وimage/avif - الصوت: audio/* وvideo/audio/s16le وvideo/audio/wav - الفيديو: video/* - النص: text/plain وtext/html وtext/css وtext/javascript وtext/x-typescript وtext/csv وtext/markdown وtext/x-python وtext/xml وtext/rtf وvideo/text/timestamp - التطبيقات: application/x-javascript وapplication/x-typescript وapplication/x-python-code وapplication/json وapplication/x-ipynb+json وapplication/rtf وapplication/pdf لمزيد من السياق، يُرجى الاطّلاع على تنسيقات الملفات المتوافقة. //

data string (bytes format)

وحدات البايت الأولية لتنسيقات الوسائط

سلسلة مرمّزة باستخدام Base64

تمثيل JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

تمثّل FunctionCall متوقّعة تم إرجاعها من النموذج تحتوي على سلسلة تمثّل FunctionDeclaration.name مع الوسيطات وقيمها.

الحقول
id string

اختياريّ. المعرّف الفريد لطلب تنفيذ الدالة. إذا تم ملؤها، سيتم تنفيذ functionCall من خلال العميل وإرجاع الردّ مع id المطابق.

name string

الحقل مطلوب. اسم الدالة المطلوب استدعاؤها. يجب أن يتضمّن أحرفًا من a إلى z أو من A إلى Z أو أرقامًا من 0 إلى 9 أو شرطات سفلية وواصلات، وبحد أقصى 128 حرفًا.

args object (Struct format)

اختياريّ. مَعلمات الدالة وقيمها بتنسيق عنصر JSON

تمثيل JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

يتم استخدام نتيجة الإخراج من FunctionCall التي تحتوي على سلسلة تمثّل FunctionDeclaration.name وعنصر JSON منظَّم يحتوي على أي إخراج من الدالة كسياق للنموذج. يجب أن يحتوي هذا الحقل على نتيجة FunctionCall تم إجراؤها استنادًا إلى توقّعات النموذج.

الحقول
id string

اختياريّ. معرّف استدعاء الدالة الذي يخصّه هذا الردّ. يتم ملء هذا الحقل من خلال العميل لمطابقة استدعاء الدالة id ذي الصلة.

name string

الحقل مطلوب. اسم الدالة المطلوب استدعاؤها. يجب أن يتضمّن أحرفًا من a إلى z أو من A إلى Z أو أرقامًا من 0 إلى 9 أو شرطات سفلية وواصلات، وبحد أقصى 128 حرفًا.

response object (Struct format)

الحقل مطلوب. ردّ الدالة بتنسيق عنصر JSON. يمكن للمتصلين استخدام أي مفاتيح يختارونها وتناسب بنية الدالة لعرض ناتج الدالة، مثل "output" أو "result" أو غير ذلك. على وجه الخصوص، إذا تعذّر تنفيذ طلب الدالة، يمكن أن يتضمّن الردّ المفتاح "error" لعرض تفاصيل الخطأ للنموذج.

يمكن تضمين الوسائط المتعددة باستخدام عنصر فرعي يحتوي على مفتاح "$ref" واحد تكون قيمته هي inlineData.display_name لعنصر FunctionResponsePart يحتوي على الوسائط المتعددة. يُرجى الاطّلاع على https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

اختياريّ. Parts مرتّبة تشكّل ردّ الدالة قد تحتوي الأجزاء على أنواع MIME مختلفة من IANA.

willContinue boolean

اختياريّ. تشير إلى أنّ استدعاء الدالة مستمر، وسيتم عرض المزيد من الردود، ما يحوّل استدعاء الدالة إلى مولّد. لا ينطبق إلا على استدعاءات الدالة NON_BLOCKING، ويتم تجاهله في الحالات الأخرى. في حال ضبطها على "خطأ"، لن يتم النظر في الردود المستقبلية. يُسمح بعرض response فارغ مع willContinue=False للإشارة إلى انتهاء استدعاء الدالة. قد يؤدي ذلك إلى بدء عملية إنشاء النموذج. لتجنُّب بدء عملية الإنشاء وإنهاء استدعاء الدالة، اضبط scheduling على SILENT أيضًا.

scheduling enum (Scheduling)

اختياريّ. تحدّد هذه السمة كيفية جدولة الرد في المحادثة. لا ينطبق إلا على استدعاءات الدالة NON_BLOCKING، ويتم تجاهله في الحالات الأخرى. القيمة التلقائية هي WHEN_IDLE.

تمثيل JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

نوع بيانات يحتوي على وسائط تشكّل جزءًا من رسالة FunctionResponse.

يتألف FunctionResponsePart من بيانات لها نوع بيانات مرتبط بها. لا يمكن أن يحتوي FunctionResponsePart إلا على نوع واحد من الأنواع المقبولة في FunctionResponsePart.data.

يجب أن يحتوي FunctionResponsePart على نوع MIME ثابت من IANA يحدّد نوع الوسائط ونوعها الفرعي إذا كان الحقل inlineData مملوءًا بوحدات بايت أولية.

الحقول
data Union type
تمثّل هذه السمة بيانات جزء الردّ من الدالة. يمكن أن يكون التعليق data إحدى القيم التالية فقط:
inlineData object (FunctionResponseBlob)

وحدات بايت الوسائط المضمّنة

تمثيل JSON
{

  // data
  "inlineData": {
    object (FunctionResponseBlob)
  }
  // Union type
}

FunctionResponseBlob

وحدات البايت الأولية للوسائط الخاصة بردّ الدالة

يجب عدم إرسال النص كبايتات أولية، بل استخدام الحقل FunctionResponse.response.

الحقول
mimeType string

نوع MIME المعياري الخاص بـ IANA لبيانات المصدر أمثلة: - image/png - image/jpeg في حال تقديم نوع MIME غير متوافق، سيتم عرض رسالة خطأ. للحصول على قائمة كاملة بالأنواع المتوافقة، راجِع تنسيقات الملفات المتوافقة.

data string (bytes format)

وحدات البايت الأولية لتنسيقات الوسائط

سلسلة مرمّزة باستخدام Base64

تمثيل JSON
{
  "mimeType": string,
  "data": string
}

الجدولة

تحدّد هذه السمة كيفية جدولة الرد في المحادثة.

عمليات التعداد
SCHEDULING_UNSPECIFIED هذه القيمة غير مستخدَمة.
SILENT أضِف النتيجة إلى سياق المحادثة فقط، ولا تقاطع المحادثة أو تبدأ عملية إنشاء الردّ.
WHEN_IDLE أضِف النتيجة إلى سياق المحادثة، واطلب إنشاء الناتج بدون مقاطعة عملية الإنشاء الجارية.
INTERRUPT إضافة النتيجة إلى سياق المحادثة وإيقاف عملية الإنشاء الجارية مؤقتًا وطلب إنشاء الناتج

FileData

البيانات المستندة إلى معرّف الموارد المنتظم (URI)

الحقول
mimeType string

اختياريّ. نوع MIME المتوافق مع معيار IANA لبيانات المصدر.

fileUri string

الحقل مطلوب. URI.

تمثيل JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

التعليمات البرمجية التي ينشئها النموذج والمخصّصة للتنفيذ، والنتيجة التي يتم إرجاعها إلى النموذج

يتم إنشاؤه فقط عند استخدام أداة CodeExecution، حيث سيتم تنفيذ الرمز تلقائيًا، وسيتم أيضًا إنشاء CodeExecutionResult مطابق.

الحقول
id string

اختياريّ. المعرّف الفريد لجزء ExecutableCode يعرض الخادم CodeExecutionResult مع id المطابق.

language enum (Language)

الحقل مطلوب. لغة البرمجة الخاصة بـ code

code string

الحقل مطلوب. الرمز المطلوب تنفيذه

تمثيل JSON
{
  "id": string,
  "language": enum (Language),
  "code": string
}

اللغة

لغات البرمجة المتوافقة مع الرمز البرمجي الذي تم إنشاؤه

عمليات التعداد
LANGUAGE_UNSPECIFIED لغة غير محدّدة يجب عدم استخدام هذه القيمة.
PYTHON الإصدار 3.10 من Python أو إصدار أحدث، مع توفُّر numpy وsimpy لغة Python هي اللغة التلقائية.

CodeExecutionResult

نتيجة تنفيذ ExecutableCode

يتم إنشاؤها فقط عند استخدام الأداة CodeExecution.

الحقول
id string

اختياريّ. تمثّل هذه السمة معرّف جزء ExecutableCode الذي تعود إليه هذه النتيجة. لا تتم تعبئة هذا الحقل إلا إذا كان ExecutableCode المقابل يتضمّن معرّفًا.

outcome enum (Outcome)

الحقل مطلوب. نتيجة تنفيذ الرمز البرمجي

output string

اختياريّ. يحتوي على stdout عند تنفيذ الرمز البرمجي بنجاح، أو stderr أو وصف آخر في حال عدم النجاح.

تمثيل JSON
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

النتيجة

تعداد النتائج المحتملة لتنفيذ الرمز البرمجي

عمليات التعداد
OUTCOME_UNSPECIFIED حالة غير محدَّدة يجب عدم استخدام هذه القيمة.
OUTCOME_OK اكتمل تنفيذ الرموز البرمجية بنجاح. يحتوي output على stdout، إن وُجد.
OUTCOME_FAILED تعذَّر تنفيذ الرمز البرمجي. يحتوي output على stderr وstdout، إذا كانا متوفرَين.
OUTCOME_DEADLINE_EXCEEDED استغرق تنفيذ الرمز البرمجي وقتًا أطول من اللازم وتم إلغاؤه. قد يكون هناك output جزئي أو لا يكون.

ToolCall

تم عرض الخطأ ToolCall المتوقّع من جهة الخادم من النموذج. تحتوي هذه الرسالة على معلومات حول أداة يريد النموذج استدعاءها. لا يُتوقّع من العميل تنفيذ ToolCall هذا. بدلاً من ذلك، على العميل إعادة تمرير ToolCall إلى واجهة برمجة التطبيقات في ردّ لاحق ضمن رسالة Content، بالإضافة إلى ToolResponse المقابل.

الحقول
id string

اختياريّ. المعرّف الفريد لاستدعاء الأداة. يعرض الخادم ردّ الأداة مع id المطابق.

toolName string

اختياريّ. تمثّل هذه السمة اسم الأداة التي تم استدعاؤها.

toolType enum (ToolType)

الحقل مطلوب. نوع الأداة التي تم استدعاؤها.

args object (Struct format)

اختياريّ. وسيطات طلب استخدام الأداة مثال: {"arg1" : "value1", "arg2" : "value2" , ...}

تمثيل JSON
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

نوع الأداة في طلب تنفيذ الدالة

عمليات التعداد
TOOL_TYPE_UNSPECIFIED نوع الأداة غير محدَّد.
GOOGLE_SEARCH_WEB أداة البحث من Google، وتتطابق مع Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE أداة البحث بالصور، ويتم ربطها بـ Tool.google_search.search_types.image_search.
URL_CONTEXT أداة سياق عنوان URL، ويتم ربطها بـ Tool.url_context.
GOOGLE_MAPS أداة "خرائط Google"، ويتم ربطها بـ Tool.google_maps.

ToolResponse

الناتج من تنفيذ ToolCall من جهة الخادم تحتوي هذه الرسالة على نتائج استدعاء أداة بدأها ToolCall من النموذج. على العميل إعادة تمرير ToolResponse إلى واجهة برمجة التطبيقات في ردّ لاحق ضمن رسالة Content، بالإضافة إلى ToolCall المقابل.

الحقول
id string

اختياريّ. المعرّف الخاص باستدعاء الأداة الذي تم إنشاء هذا الردّ من أجله.

toolType enum (ToolType)

الحقل مطلوب. نوع الأداة التي تم استدعاؤها، والتي تتطابق مع toolType في ToolCall المقابل

response object (Struct format)

اختياريّ. استجابة الأداة

تمثيل JSON
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

تم إيقاف هذه السياسة نهائيًا، لذا يُرجى استخدام سياسة GenerateContentRequest.processing_options بدلاً منها. تصف البيانات الوصفية محتوى الفيديو الذي يتم إدخاله.

الحقول
startOffset string (Duration format)

اختياريّ. تمثّل هذه السمة فرق التوقيت عند بداية الفيديو.

مدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ "s". مثال: "3.5s".

endOffset string (Duration format)

اختياريّ. الإزاحة النهائية للفيديو

مدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ "s". مثال: "3.5s".

fps number

اختياريّ. تمثّل هذه السمة عدد اللقطات في الثانية للفيديو الذي تم إرساله إلى النموذج. إذا لم يتم تحديدها، ستكون القيمة التلقائية 1.0. نطاق عدد اللقطات في الثانية هو (0.0, 24.0].

تمثيل JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

درجة دقة الوسائط لإنشاء الرموز المميّزة

الحقول
value Union type
مستوى دقة الوسائط يمكن أن يكون التعليق value إحدى القيم التالية فقط:
level enum (Level)

جودة تقسيم المحتوى إلى رموز مميّزة المستخدَمة للوسائط المحدّدة للحصول على دعم Gemini API .

تمثيل JSON
{

  // value
  "level": enum (Level)
  // Union type
}

المستوى

مستوى دقة الوسائط

عمليات التعداد
MEDIA_RESOLUTION_UNSPECIFIED لم يتم ضبط دقة الوسائط.
MEDIA_RESOLUTION_LOW تم ضبط دقة الوسائط على منخفضة.
MEDIA_RESOLUTION_MEDIUM تم ضبط دقة الوسائط على متوسطة.
MEDIA_RESOLUTION_HIGH تم ضبط دقة الوسائط على "عالية".
MEDIA_RESOLUTION_ULTRA_HIGH تم ضبط دقة الوسائط على فائقة الدقة.

MediaProcessing

طريقة معالجة النموذج للوسائط المدخلة من أجل فهمها

عمليات التعداد
MEDIA_PROCESSING_UNSPECIFIED تلقائي: يستخدم معالجة خاصة بالطراز (‫3.5 Pro+ -> AGENTIC، الطُرز الأقدم -> STATIC).
STATIC استخراج اللقطات بمعدّل ثابت يتم وضع جميع اللقطات في السياق.
AGENTIC التنقّل الديناميكي المستند إلى النموذج يُنصح باستخدام هذا الوضع في معظم حالات الاستخدام.

البيئة

تمثّل هذه السمة بيئة تنفيذ لوكيل.

الحقول
id string

الحقل مطلوب. النتائج فقط. رقم تعريف البيئة.

sources[] object (Source)

المصادر التي سيتم ربطها بالبيئة

created string

النتائج فقط. الوقت الذي تم فيه إنشاء البيئة بتنسيق ISO 8601 (YYYY-MM-DDThh:mm:ssZ)

updated string

النتائج فقط. تمثّل هذه السمة الوقت الذي تم فيه آخر تعديل على البيئة بتنسيق ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

lastAccessed string

النتائج فقط. تمثّل هذه السمة الوقت الذي تم فيه الوصول إلى البيئة آخر مرة بتنسيق ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

status enum (Status)

النتائج فقط. حالة حاوية البيئة.

fileCount string (int64 format)

النتائج فقط. عدد الملفات في البيئة، نتائج فقط.

sizeBytes string (int64 format)

النتائج فقط. الحجم الإجمالي لملفات البيئة بالبايت، ويتم عرض هذا الحقل فقط.

network Union type
إعدادات الشبكة للبيئة يمكن أن يكون التعليق network إحدى القيم التالية فقط:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

السماح بنطاقات محدّدة فقط

networkMode enum (NetworkMode)

وضع خروج الشبكة

تمثيل JSON
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

  // network
  "networkAllowlist": {
    object (EnvironmentNetworkEgressAllowlist)
  },
  "networkMode": enum (NetworkMode)
  // Union type
}

الحالة

تمثّل هذه السمة حالة البيئة.

عمليات التعداد
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

وضع خروج الشبكة لإعدادات غير تلك المُضافة إلى القائمة المسموح بها

عمليات التعداد
NETWORK_MODE_UNSPECIFIED القيمة التلقائية غير مستخدَمة
DISABLED يتم حظر جميع عمليات الخروج من الشبكة.

المخطط

يسمح العنصر Schema بتحديد أنواع بيانات الإدخال والإخراج. يمكن أن تكون هذه الأنواع كائنات، ولكن أيضًا أنواعًا أولية ومصفوفات. يمثّل هذا النوع مجموعة فرعية محدّدة من كائن مخطط OpenAPI 3.0.

الحقول
type enum (Type)

الحقل مطلوب. نوع البيانات

format string

اختياريّ. تنسيق البيانات يُسمح بأي قيمة، ولكنّ معظمها لا يؤدي إلى تشغيل أي وظائف خاصة.

title string

اختياريّ. تمثّل هذه السمة عنوان المخطط.

description string

اختياريّ. وصف موجز للمَعلمة يمكن أن يحتوي ذلك على أمثلة على الاستخدام. قد يتم تنسيق وصف المَعلمة على شكل Markdown.

nullable boolean

اختياريّ. تشير إلى ما إذا كان يمكن أن تكون القيمة فارغة.

enum[] string

اختياريّ. القيم المحتملة لعنصر Type.STRING بتنسيق enum. على سبيل المثال، يمكننا تحديد تعداد Direction على النحو التالي : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

اختياريّ. الحدّ الأقصى لعدد العناصر في Type.ARRAY

minItems string (int64 format)

اختياريّ. الحد الأدنى لعدد العناصر في Type.ARRAY

properties map (key: string, value: object (Schema))

اختياريّ. خصائص Type.OBJECT

عنصر يحتوي على قائمة بأزواج "key": value مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

اختياريّ. السمات المطلوبة من النوع Type.OBJECT

minProperties string (int64 format)

اختياريّ. الحدّ الأدنى لعدد السمات الخاصة بـ Type.OBJECT

maxProperties string (int64 format)

اختياريّ. الحدّ الأقصى لعدد الخصائص الخاصة بـ Type.OBJECT

minLength string (int64 format)

اختياريّ. حقول المخطط من النوع STRING الحد الأدنى لطول النوع STRING

maxLength string (int64 format)

اختياريّ. الحد الأقصى لطول Type.STRING

pattern string

اختياريّ. نمط Type.STRING لحصر سلسلة بتعبير عادي

example value (Value format)

اختياريّ. مثال على العنصر لن تتم تعبئة هذا الحقل إلا عندما يكون العنصر هو العنصر الجذر.

anyOf[] object (Schema)

اختياريّ. يجب التحقّق من صحة القيمة مقارنةً بأي من المخططات الفرعية (واحد أو أكثر) في القائمة.

propertyOrdering[] string

اختياريّ. ترتيب السمات ليس حقلًا عاديًا في مواصفات Open API، ويُستخدم لتحديد ترتيب الخصائص في الاستجابة.

default value (Value format)

اختياريّ. القيمة التلقائية للحقل وفقًا لمخطط JSON، هذا الحقل مخصّص لأدوات إنشاء المستندات ولا يؤثر في عملية التحقّق من الصحة. لذلك، يتم تضمينه هنا وتجاهله حتى لا يتلقّى المطوّرون الذين يرسلون المخططات مع الحقل default أخطاء حقل غير معروف.

items object (Schema)

اختياريّ. مخطط عناصر Type.ARRAY

minimum number

اختياريّ. حقول المخطط لنوع العدد الصحيح والرقم، الحد الأدنى لقيمة النوع INTEGER والرقم

maximum number

اختياريّ. الحدّ الأقصى لقيمة Type.INTEGER وType.NUMBER

تمثيل JSON
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

النوع

يحتوي النوع على قائمة بأنواع بيانات OpenAPI كما هو محدّد في https://spec.openapis.org/oas/v3.0.3#data-types

عمليات التعداد
TYPE_UNSPECIFIED لم يتم تحديدها، ويجب عدم استخدامها.
STRING نوع السلسلة
NUMBER نوع الرقم
INTEGER نوع العدد الصحيح
BOOLEAN النوع المنطقي
ARRAY نوع المصفوفة
OBJECT نوع العنصر
NULL نوع القيمة الخالية

الأداة

تفاصيل الأداة التي قد يستخدمها النموذج لإنشاء الرد

Tool هي جزء من الرمز البرمجي يتيح للنظام التفاعل مع أنظمة خارجية لتنفيذ إجراء أو مجموعة من الإجراءات خارج نطاق معرفة النموذج.

Next ID: 17

الحقول
functionDeclarations[] object (FunctionDeclaration)

اختياريّ. قائمة FunctionDeclarations متاحة للنموذج ويمكن استخدامها في استدعاء الدوال.

لا ينفّذ النموذج أو النظام الوظيفة. بدلاً من ذلك، قد يتم عرض الدالة المحدّدة كـ FunctionCall مع وسيطات على جهة العميل لتنفيذها. قد يقرّر النموذج استدعاء مجموعة فرعية من هذه الدوال عن طريق ملء FunctionCall في الردّ. قد تتضمّن الجولة التالية من المحادثة FunctionResponse مع سياق إنشاء Content.role "الوظيفة" لجولة النموذج التالية.

googleSearchRetrieval object (GoogleSearchRetrieval)

اختياريّ. أداة استرجاع مدعومة من &quot;بحث Google&quot;

codeExecution object (CodeExecution)

اختياريّ. تتيح هذه السمة للنموذج تنفيذ الرمز البرمجي كجزء من عملية الإنشاء.

computerUse object (ComputerUse)

اختياريّ. أداة تتيح للنموذج التفاعل مباشرةً مع الكمبيوتر في حال تفعيل هذا الخيار، يتم تلقائيًا ملء "تعريفات الدوال" الخاصة باستخدام الكمبيوتر.

urlContext object (UrlContext)

اختياريّ. أداة للمساعدة في استرداد سياق عنوان URL

mcpServers[] object (McpServer)

اختياريّ. خوادم MCP التي سيتم الربط بها

googleMaps object (GoogleMaps)

اختياريّ. أداة تتيح ربط ردّ النموذج بالسياق الجغرافي المكاني المرتبط بطلب المستخدم

تمثيل JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "mcpServers": [
    {
      object (McpServer)
    }
  ],
  "googleMaps": {
    object (GoogleMaps)
  }
}

FunctionDeclaration

تمثيل منظَّم لتعريف دالة كما هو محدَّد في مواصفات OpenAPI 3.03. يتضمّن هذا التعريف اسم الدالة ومعلَماتها. تمثّل FunctionDeclaration مجموعة من الرموز البرمجية التي يمكن استخدامها كـ Tool من قِبل النموذج وتنفيذها من قِبل العميل.

الحقول
name string

الحقل مطلوب. اسم الدالة يجب أن يتضمّن أحرفًا من a إلى z أو من A إلى Z أو من 0 إلى 9، أو أن يحتوي على شرطات سفلية ونقطتين رأسيتين ونقاط وشرطات، وبحد أقصى 128 حرفًا.

description string

الحقل مطلوب. وصف موجز للدالة

behavior enum (Behavior)

اختياريّ. تحدّد هذه السمة سلوك الدالة. لا تتوافق هذه السمة حاليًا إلا مع الطريقة BidiGenerateContent.

parameters object (Schema)

اختياريّ. تصف هذه السمة المَعلمات الخاصة بهذه الدالة. تعكس هذه السمة مفتاح سلسلة "عنصر المَعلمة" في Open API 3.03: اسم المَعلمة. أسماء المَعلمات حسّاسة لحالة الأحرف. قيمة المخطط: المخطط الذي يحدّد النوع المستخدَم للمَعلمة.

parametersJsonSchema value (Value format)

اختياريّ. تصف هذه السمة المَعلمات الخاصة بالدالة بتنسيق JSON Schema. يجب أن يصف المخطط كائنًا تكون خصائصه هي مَعلمات الدالة. على سبيل المثال:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "additionalProperties": false,
  "required": ["name", "age"],
  "propertyOrdering": ["name", "age"]
}

لا يمكن استخدام هذا الحقل مع parameters.

response object (Schema)

اختياريّ. تصف هذه السمة الناتج من هذه الدالة بتنسيق JSON Schema. تعكس هذه السمة "عنصر الرد" في Open API 3.03. يحدّد المخطط نوع القيمة المستخدَمة في قيمة استجابة الدالة.

responseJsonSchema value (Value format)

اختياريّ. تصف هذه السمة الناتج من هذه الدالة بتنسيق JSON Schema. القيمة المحدّدة بواسطة المخطط هي قيمة استجابة الدالة.

لا يمكن استخدام هذا الحقل مع response.

تمثيل JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

السلوك

تحدّد هذه السمة سلوك الدالة. القيمة التلقائية هي BLOCKING.

عمليات التعداد
UNSPECIFIED هذه القيمة غير مستخدَمة.
BLOCKING في حال ضبط هذا الخيار، سينتظر النظام تلقّي ردّ الدالة قبل مواصلة المحادثة.
NON_BLOCKING في حال ضبط هذا الخيار، لن ينتظر النظام تلقّي ردّ الدالة. بدلاً من ذلك، سيحاول التعامل مع ردود الوظائف فور توفّرها مع الحفاظ على المحادثة بين المستخدم والنموذج.

GoogleSearchRetrieval

أداة لاسترداد بيانات الويب العامة من أجل التأسيس، وهي من تطوير Google.

الحقول
dynamicRetrievalConfig object (DynamicRetrievalConfig)

تحدّد هذه السمة إعدادات الاسترجاع الديناميكي للمصدر المحدّد.

تمثيل JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

توضّح هذه السمة خيارات تخصيص الاسترجاع الديناميكي.

الحقول
mode enum (Mode)

وضع أداة التوقّع التي سيتم استخدامها في الاسترجاع الديناميكي.

dynamicThreshold number

الحدّ المستخدَم في الاسترجاع الديناميكي. في حال عدم ضبط هذه السياسة، يتم استخدام قيمة تلقائية للنظام.

تمثيل JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

الوضع

وضع أداة التوقّع التي سيتم استخدامها في الاسترجاع الديناميكي.

عمليات التعداد
MODE_UNSPECIFIED يجب دائمًا بدء عملية الاسترداد.
MODE_DYNAMIC لا يتم تنفيذ عملية الاسترجاع إلا عندما يقرّر النظام أنّها ضرورية.

CodeExecution

لا يتضمّن هذا النوع أي حقول.

أداة تنفّذ الرمز الذي ينشئه النموذج وتعرض النتيجة تلقائيًا.

يمكنك الاطّلاع أيضًا على ExecutableCode وCodeExecutionResult اللذين يتم إنشاؤهما فقط عند استخدام هذه الأداة.

GoogleSearch

نوع أداة GoogleSearch أداة لدعم "بحث Google" في Model بواسطة Google.

الحقول
timeRangeFilter object (Interval)

اختياريّ. فلترة نتائج البحث لتظهر ضمن نطاق زمني محدّد إذا حدّد العملاء وقت بدء، عليهم تحديد وقت انتهاء (والعكس صحيح).

searchTypes object (SearchTypes)

اختياريّ. مجموعة أنواع البحث التي سيتم تفعيلها. في حال عدم ضبط هذه السياسة، يتم تفعيل "بحث الويب" تلقائيًا.

تمثيل JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

الفاصل الزمني

يمثّل فاصلاً زمنيًا محدّدًا يتم ترميزه بطابع زمني للبداية (مشمولة) وطابع زمني للنهاية (غير مشمولة).

يجب أن تكون البداية مساوية أو أقدم من النهاية. إذا كانت البداية مساوية للنهاية، يكون الفاصل فارغًا (أي لا يطابق أي وقت). وإذا لم يتم تحديد البداية والنهاية، يطابق الفاصل أي وقت.

الحقول
startTime string (Timestamp format)

اختياريّ. يمثّل بداية الفاصل الزمني (مشمولة).

إذا تم تحديد هذا الحقل، يجب أن يكون أي طابع زمني يطابق هذا الفاصل مساويًا أو لاحقًا لوقت البداية.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

اختياري. يمثّل نهاية الفاصل الزمني (غير مشمولة).

إذا تم تحديد هذا الحقل، يجب أن يكون أي طابع زمني يطابق هذا الفاصل قبل وقت النهاية.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

تمثيل JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

أنواع مختلفة من البحث يمكن تفعيلها على أداة GoogleSearch

الحقول
تمثيل JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

لا يتضمّن هذا النوع أي حقول.

بحث الويب العادي لتحديد المعلومات الأساسية والإعدادات ذات الصلة

ImageSearch

لا يتضمّن هذا النوع أي حقول.

البحث عن الصور لتحديد المعلومات الأساسية والإعدادات ذات الصلة

ComputerUse

نوع أداة "استخدام الكمبيوتر"

الحقول
environment enum (Environment)

الحقل مطلوب. البيئة التي يتم تشغيلها

excludedPredefinedFunctions[] string

اختياريّ. يتم تضمين الدوال المحدّدة مسبقًا في طلب النموذج النهائي تلقائيًا. يمكن استبعاد بعضها بشكل صريح من تضمينها تلقائيًا. يمكن أن يخدم ذلك غرضَين: 1. استخدام مساحة إجراءات أكثر تقييدًا أو مختلفة 2. تحسين تعريفات / تعليمات الدوال المحدّدة مسبقًا

enablePromptInjectionDetection boolean

اختياريّ. تحديد ما إذا كان سيتم تفعيل عملية التحقّق من رصد هجمات حقن الطلبات على طلب استخدام الكمبيوتر

disabledSafetyPolicies[] enum (SafetyPolicy)

اختياريّ. تم إيقاف سياسات الأمان المتعلقة باستخدام الكمبيوتر.

تمثيل JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

البيئة

تمثّل هذه السمة البيئة التي يتم تشغيلها، مثل متصفّح الويب.

عمليات التعداد
ENVIRONMENT_UNSPECIFIED القيمة التلقائية هي "المتصفّح".
ENVIRONMENT_BROWSER تعمل في متصفّح ويب.
ENVIRONMENT_MOBILE تعمل في بيئة الأجهزة الجوّالة.
ENVIRONMENT_DESKTOP تعمل في بيئة كمبيوتر مكتبي.

SafetyPolicy

سياسات السلامة المحدّدة مسبقًا لاستخدام الكمبيوتر

عمليات التعداد
SAFETY_POLICY_UNSPECIFIED سياسة أمان غير محدّدة
FINANCIAL_TRANSACTIONS سياسة الأمان للمعاملات المالية
SENSITIVE_DATA_MODIFICATION سياسة الأمان لتعديل البيانات الحسّاسة
COMMUNICATION_TOOL سياسة الأمان لأدوات التواصل (مثل Gmail وChat وMeet)
ACCOUNT_CREATION سياسة السلامة المتعلّقة بإنشاء الحسابات
DATA_MODIFICATION سياسة الأمان لتعديل البيانات
LEGAL_TERMS_AND_AGREEMENTS سياسة الأمان للأحكام والاتفاقيات القانونية

UrlContext

لا يتضمّن هذا النوع أي حقول.

أداة للمساعدة في استرداد سياق عنوان URL

FileSearch

أداة FileSearch التي تسترجع المعرفة من مجموعات Semantic Retrieval. يتم استيراد الملفات إلى مجموعات Semantic Retrieval باستخدام ImportFile API.

الحقول
fileSearchStoreNames[] string

الحقل مطلوب. أسماء fileSearchStores التي سيتم استردادها. مثلاً: fileSearchStores/my-file-search-store-123

metadataFilter string

اختياريّ. فلتر البيانات الوصفية الذي سيتم تطبيقه على المستندات والأجزاء التي يتم استرجاعها دلاليًا.

topK integer

اختياريّ. عدد أجزاء الاسترجاع الدلالي المطلوب استرجاعها.

تمثيل JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

خادم MCP هو خادم يمكن للنموذج استدعاؤه لتنفيذ إجراءات. وهو خادم ينفّذ بروتوكول MCP. رقم التعريف التالي: 6

الحقول
name string

اسم MCPServer

transport Union type
بروتوكول النقل الذي سيتم استخدامه للاتصال بخادم MCPServer يمكن أن يكون التعليق transport إحدى القيم التالية فقط:
streamableHttpTransport object (StreamableHttpTransport)

نظام نقل يمكنه بث طلبات واستجابات HTTP.

تمثيل JSON
{
  "name": string,

  // transport
  "streamableHttpTransport": {
    object (StreamableHttpTransport)
  }
  // Union type
}

StreamableHttpTransport

نظام نقل يمكنه بث طلبات واستجابات HTTP. رقم التعريف التالي: 6

الحقول
url string

عنوان URL الكامل لنقطة نهاية MCPServer مثال: "https://api.example.com/mcp"

headers map (key: string, value: string)

اختياري: حقول لعناوين المصادقة ومهلات الانتظار وما إلى ذلك، إذا لزم الأمر

عنصر يحتوي على قائمة بأزواج "key": value مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

مهلة HTTP للعمليات العادية

مدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ "s". مثال: "3.5s".

sseReadTimeout string (Duration format)

مهلة عمليات القراءة في SSE

مدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ "s". مثال: "3.5s".

terminateOnClose boolean

تحديد ما إذا كان سيتم إغلاق جلسة العميل عند إغلاق النقل

تمثيل JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

أداة GoogleMaps التي توفّر سياقًا جغرافيًا مكانيًا لطلب بحث المستخدم.

الحقول
enableWidget boolean

اختياريّ. تحديد ما إذا كان سيتم عرض رمز مميّز لسياق التطبيق المصغّر في GroundingMetadata الخاص بالردّ. يمكن للمطوّرين استخدام رمز مميّز سياقي للأداة لعرض تطبيق مصغّر لـ "خرائط Google" يتضمّن سياقًا جغرافيًا مكانيًا مرتبطًا بالأماكن التي يشير إليها النموذج في الردّ.

تمثيل JSON
{
  "enableWidget": boolean
}

مورد REST: ‏ auth_tokens

المورد: AuthToken

طلب لإنشاء رمز مميّز مؤقت للمصادقة

الحقول
name string

النتائج فقط. المعرّف. الرمز المميّز نفسه

expireTime string (Timestamp format)

اختياريّ. الإدخال فقط غير قابل للتغيير وقت اختياري يتم بعده رفض الرسائل في جلسات BidiGenerateContent عند استخدام الرمز المميّز الناتج. (قد يغلق Gemini الجلسة بشكل استباقي بعد هذا الوقت).

إذا لم يتم ضبط هذا الخيار، سيتم تلقائيًا ضبطه على 30 دقيقة في المستقبل. في حال ضبط هذا الحقل، يجب أن تكون القيمة أقل من 20 ساعة في المستقبل.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

اختياريّ. الإدخال فقط غير قابل للتغيير الوقت الذي سيتم بعده رفض جلسات Live API الجديدة التي تستخدم الرمز المميز الناتج من هذا الطلب

إذا لم يتم ضبط هذا الحقل، سيتم ضبطه تلقائيًا على 60 ثانية في المستقبل. في حال ضبط هذا الحقل، يجب أن تكون القيمة أقل من 20 ساعة في المستقبل.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

اختياريّ. الإدخال فقط غير قابل للتغيير إذا كان fieldMask فارغًا، ولم يكن bidiGenerateContentSetup متوفّرًا، سيتم استرداد رسالة BidiGenerateContentSetup الفعّالة من اتصال Live API.

إذا كان fieldMask فارغًا، وكان bidiGenerateContentSetup موجودًا، سيتم أخذ رسالة BidiGenerateContentSetup الفعّالة بالكامل من bidiGenerateContentSetup في هذا الطلب. يتم تجاهل رسالة الإعداد من عملية الربط المباشر بواجهة برمجة التطبيقات.

إذا لم يكن fieldMask فارغًا، ستؤدي الحقول المطابقة من bidiGenerateContentSetup إلى الكتابة فوق الحقول من رسالة الإعداد في عملية الربط بواجهة برمجة التطبيقات المباشرة.

هذه قائمة قيم مفصولة بفاصلة تتضمّن الأسماء المؤهَّلة بالكامل للحقول. مثال: "user.displayName,photo"

config Union type
إعدادات خاصة بطريقة الحصول على الرمز المميز الناتج. يمكن أن يكون التعليق config إحدى القيم التالية فقط:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

اختياريّ. الإدخال فقط غير قابل للتغيير إعدادات خاصة بـ BidiGenerateContent

uses integer

اختياريّ. الإدخال فقط غير قابل للتغيير عدد المرات التي يمكن فيها استخدام الرمز المميز إذا كانت هذه القيمة صفرًا، لن يتم تطبيق أي حدّ. لا يُحتسب استئناف جلسة Live API كاستخدام. إذا لم يتم تحديد قيمة، تكون القيمة التلقائية هي 1.

تمثيل JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

  // config
  "bidiGenerateContentSetup": {
    object (BidiGenerateContentSetup)
  }
  // Union type
  "uses": integer
}

BidiGenerateContentSetup

الرسالة التي سيتم إرسالها في BidiGenerateContentClientMessage الأول (وفي الأول فقط). يحتوي على إعدادات سيتم تطبيقها طوال مدة RPC البث المباشر.

على العملاء انتظار رسالة BidiGenerateContentSetupComplete قبل إرسال أي رسائل إضافية.

الحقول
model string

الحقل مطلوب. اسم مورد النموذج. يُستخدَم هذا المعرّف كمعرّف للنموذج.

التنسيق: models/{model}

generationConfig object (GenerationConfig)

اختياريّ. إعدادات الإنشاء

الحقول التالية غير متاحة:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

اختياريّ. قدّم المستخدم تعليمات النظام للنموذج.

ملاحظة: يجب استخدام النص فقط في الأجزاء، وسيكون المحتوى في كل جزء في فقرة منفصلة.

tools[] object (Tool)

اختياريّ. قائمة Tools قد يستخدمها النموذج لإنشاء الرد التالي

Tool هي جزء من الرمز البرمجي يتيح للنظام التفاعل مع أنظمة خارجية لتنفيذ إجراء أو مجموعة من الإجراءات خارج نطاق معرفة النموذج.

realtimeInputConfig object (RealtimeInputConfig)

اختياريّ. تضبط هذه السمة طريقة التعامل مع الإدخال في الوقت الفعلي.

sessionResumption object (SessionResumptionConfig)

اختياريّ. تضبط هذه السمة آلية استئناف الجلسة.

في حال تضمينها، سيرسل الخادم SessionResumptionUpdate رسائل.

contextWindowCompression object (ContextWindowCompressionConfig)

اختياريّ. تضبط هذه السمة آلية ضغط قدرة الاستيعاب.

في حال تضمينها، سيقلّل الخادم تلقائيًا من حجم السياق عندما يتجاوز الطول الذي تم ضبطه.

inputAudioTranscription object (AudioTranscriptionConfig)

اختياريّ. في حال ضبط هذا الخيار، يتم تفعيل ميزة تحويل الإدخال الصوتي إلى نص. تتوافق عملية تحويل الصوت إلى نص مع لغة الصوت المُدخل، إذا تم ضبطها.

outputAudioTranscription object (AudioTranscriptionConfig)

اختياريّ. في حال ضبط هذا الخيار، يتم تفعيل تحويل الصوت الذي ينتجه النموذج إلى نص. تتوافق النسخة المكتوبة مع رمز اللغة المحدّد للصوت الناتج، إذا تم ضبطه.

historyConfig object (HistoryConfig)

اختياريّ. تضبط هذه السمة تبادل السجلّ بين العميل والخادم.

تمثيل JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  },
  "systemInstruction": {
    object (Content)
  },
  "tools": [
    {
      object (Tool)
    }
  ],
  "realtimeInputConfig": {
    object (RealtimeInputConfig)
  },
  "sessionResumption": {
    object (SessionResumptionConfig)
  },
  "contextWindowCompression": {
    object (ContextWindowCompressionConfig)
  },
  "inputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "outputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "historyConfig": {
    object (HistoryConfig)
  }
}

GenerationConfig

خيارات الإعدادات لإنشاء النماذج والمخرجات لا يمكن ضبط جميع المَعلمات لكل نموذج.

الحقول
stopSequences[] string

اختياريّ. مجموعة تسلسلات الأحرف (حتى 5) التي ستوقف عملية إنشاء الناتج. في حال تحديد هذا الحقل، ستتوقف واجهة برمجة التطبيقات عند ظهور stop_sequence للمرة الأولى. لن يتم تضمين تسلسل الإيقاف كجزء من الرد.

responseMimeType string

اختياريّ. نوع MIME للنص المرشّح الذي تم إنشاؤه. أنواع MIME المتوافقة هي: text/plain: (تلقائي) إخراج نصي. ‫application/json: استجابة JSON في المرشّحين للاستجابة ‫text/x.enum: ENUM كاستجابة سلسلة في المرشحين للاستجابة. يُرجى الرجوع إلى المستندات للاطّلاع على قائمة بجميع أنواع MIME المتوافقة مع النصوص.

responseSchema
(deprecated)
object (Schema)

اختياريّ. مخطط الإخراج للنص المرشّح الذي تم إنشاؤه. يجب أن تكون المخططات مجموعة فرعية من مخطط OpenAPI ويمكن أن تكون كائنات أو أنواعًا أساسية أو مصفوفات.

في حال ضبط هذه السياسة، يجب أيضًا ضبط سياسة responseMimeType متوافقة. أنواع MIME المتوافقة: application/json: مخطط لاستجابة JSON. راجِع دليل إنشاء نص JSON لمزيد من التفاصيل.

_responseJsonSchema
(deprecated)
value (Value format)

اختياريّ. مخطط الناتج للردّ الذي تم إنشاؤه. هذا بديل عن responseSchema يقبل مخطط JSON.

في حال ضبطها، يجب حذف responseSchema، ولكن يجب تضمين responseMimeType.

على الرغم من إمكانية إرسال مخطط JSON الكامل، لا تتوفّر جميع الميزات. على وجه التحديد، لا تتوفّر سوى السمات التالية:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (للنصوص والأرقام)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (يتم تفسيرها على النحو نفسه الذي يتم به تفسير anyOf)
  • properties
  • additionalProperties
  • required

يمكن أيضًا ضبط السمة غير العادية propertyOrdering.

يتم فك المراجع الدورية إلى حدّ معيّن، وبالتالي لا يمكن استخدامها إلا في السمات غير المطلوبة. (لا تكفي الخصائص التي تقبل القيم الخالية). إذا تم ضبط $ref على مخطط فرعي، لا يمكن ضبط أي خصائص أخرى، باستثناء تلك التي تبدأ بـ $.

responseJsonSchema value (Value format)

اختياريّ. تفاصيل داخلية يُرجى استخدام responseJsonSchema بدلاً من هذا الحقل.

responseModalities[] enum (Modality)

اختياريّ. طُرق عرض الردّ المطلوبة. تمثّل هذه السمة مجموعة الوسائط التي يمكن أن يعرضها النموذج، ويجب توقّعها في الردّ. هذه مطابقة تامة لطرق عرض الرد.

قد يتضمّن النموذج عدة مجموعات من الوسائط المتوافقة. إذا لم تتطابق الوسائط المطلوبة مع أي من المجموعات المتوافقة، سيظهر خطأ.

القائمة الفارغة تعادل طلب النص فقط.

candidateCount integer

اختياريّ. عدد الردود التي تم إنشاؤها والمطلوب عرضها. إذا لم يتم ضبط هذا الحقل، سيتم ضبطه تلقائيًا على 1. يُرجى العِلم أنّ هذه الميزة لا تعمل مع نماذج الجيل السابق (عائلة Gemini 1.0).

maxOutputTokens integer

اختياريّ. الحد الأقصى لعدد الرموز المميّزة التي يمكن تضمينها في ردّ محتمل

ملاحظة: تختلف القيمة التلقائية حسب الطراز، راجِع السمة Model.output_token_limit للعنصر Model الذي يتم عرضه من الدالة getModel.

temperature number

اختياريّ. تتحكّم هذه السمة في عشوائية الناتج.

ملاحظة: تختلف القيمة التلقائية حسب الطراز، راجِع السمة Model.temperature للعنصر Model الذي يتم عرضه من الدالة getModel.

يمكن أن تتراوح القيم بين [0.0, 2.0].

topP number

اختياريّ. الحد الأقصى للاحتمال التراكمي للرموز المميّزة التي يجب أخذها في الاعتبار عند أخذ العيّنات.

يستخدم النموذج اختيار العيّنات بناءً على الاحتمال التراكمي وأعلى k احتمال.

يتم ترتيب الرموز المميزة استنادًا إلى الاحتمالات المحدّدة لها، وبالتالي يتم أخذ الرموز المميزة الأكثر ترجيحًا فقط في الاعتبار. يحدّ اختيار العيّنات من أعلى k بشكل مباشر من الحد الأقصى لعدد الرموز المميّزة التي يجب أخذها في الاعتبار، بينما يحدّ اختيار العيّنات من الاحتمال التراكمي من عدد الرموز المميّزة استنادًا إلى الاحتمال التراكمي.

ملاحظة: تختلف القيمة التلقائية حسب Model ويتم تحديدها من خلال السمة Model.top_p التي تعرضها الدالة getModel. تشير السمة topK الفارغة إلى أنّ النموذج لا يطبّق أخذ العينات من أعلى k ولا يسمح بضبط topK على الطلبات.

topK integer

اختياريّ. الحد الأقصى لعدد الرموز المميّزة التي يجب أخذها في الاعتبار عند أخذ العيّنات

تستخدم نماذج Gemini اختيار العيّنات بناءً على الاحتمال التراكمي أو مزيجًا من اختيار العيّنات بناءً على أعلى k احتمال واختيار العيّنات بناءً على الاحتمال التراكمي. تأخذ عملية أخذ العيّنات من أعلى k مجموعة الرموز المميّزة topK الأكثر احتمالاً في الاعتبار. لا تسمح النماذج التي تعمل باستخدام اختيار العيّنات بناءً على الاحتمال التراكمي بإعداد topK.

ملاحظة: تختلف القيمة التلقائية حسب Model ويتم تحديدها من خلال السمة Model.top_p التي تعرضها الدالة getModel. تشير السمة topK الفارغة إلى أنّ النموذج لا يطبّق أخذ العينات من أعلى k ولا يسمح بضبط topK على الطلبات.

seed integer

اختياريّ. العبارة الأولية المستخدَمة في فك التشفير في حال عدم ضبط هذه القيمة، يستخدم الطلب قيمة أولية تم إنشاؤها عشوائيًا.

presencePenalty number

اختياريّ. يتم تطبيق عقوبة الحضور على احتمالات تسجيل الرمز المميز التالي إذا سبق أن ظهر الرمز المميز في الردّ.

هذه العقوبة هي عقوبة ثنائية (مفعلة أو غير مفعلة) ولا تعتمد على عدد المرات التي يتم فيها استخدام الرمز المميّز (بعد المرة الأولى). استخدِم frequencyPenalty لفرض غرامة تزداد مع كل استخدام.

ستؤدي العقوبة الإيجابية إلى تثبيط استخدام الرموز المميزة التي سبق استخدامها في الرد، ما يزيد من المفردات.

ستشجّع العقوبة السلبية على استخدام الرموز المميزة التي سبق استخدامها في الردّ، ما يؤدي إلى تقليل المفردات.

frequencyPenalty number

اختياريّ. يتم تطبيق عقوبة عدد مرات الظهور على احتمالات تسجيل الرمز المميز التالي، ويتم ضربها في عدد المرات التي ظهر فيها كل رمز مميز في الرد حتى الآن.

ستؤدي العقوبة الإيجابية إلى تثبيط استخدام الرموز المميزة التي سبق استخدامها، بما يتناسب مع عدد المرات التي تم فيها استخدام الرمز المميز: كلما زاد استخدام الرمز المميز، زادت صعوبة استخدام النموذج لهذا الرمز المميز مرة أخرى، ما يؤدي إلى زيادة مفردات الردود.

تنبيه: ستشجّع العقوبة السالبة النموذج على إعادة استخدام الرموز المميزة بما يتناسب مع عدد المرات التي تم فيها استخدام الرمز المميز. ستؤدي القيم السلبية الصغيرة إلى تقليل مفردات الردّ. ستؤدي القيم السالبة الأكبر إلى بدء النموذج في تكرار رمز مميز شائع إلى أن يصل إلى الحدّ الأقصى البالغ maxOutputTokens.

responseLogprobs boolean

اختياريّ. إذا كانت القيمة صحيحة، سيتم تصدير نتائج logprobs في الردّ.

logprobs integer

اختياريّ. لا يسري إلا إذا كان responseLogprobs=True. يحدّد هذا المعلمة عدد logprobs الأعلى، بما في ذلك المرشّح المختار، الذي سيتم عرضه في كل خطوة فك ترميز في Candidate.logprobs_result. يجب أن يكون الرقم في النطاق [0, 20].

enableEnhancedCivicAnswers boolean

اختياريّ. تفعيل الإجابات المحسّنة حول المواضيع المدنية قد لا تكون هذه الميزة متاحة لبعض الطُرز.

speechConfig object (SpeechConfig)

اختياريّ. إعدادات إنشاء الكلام

thinkingConfig object (ThinkingConfig)

اختياريّ. إعدادات ميزات التفكير سيتم عرض خطأ إذا تم ضبط هذا الحقل على نماذج لا تتيح التفكير.

imageConfig object (ImageConfig)

اختياريّ. إعدادات إنشاء الصور سيتم عرض خطأ إذا تم ضبط هذا الحقل للنماذج التي لا تتوافق مع خيارات الإعداد هذه.

mediaResolution enum (MediaResolution)

اختياريّ. في حال تحديدها، سيتم استخدام دقة الوسائط المحدّدة.

enableAffectiveDialog boolean

اختياريّ. في حال تفعيل هذا الخيار، سيرصد النموذج المشاعر ويعدّل ردوده وفقًا لذلك.

responseFormat object (ResponseFormatConfig)

اختياريّ. إعدادات تنسيق إخراج الردّ تسمح هذه السمة بتحديد إعدادات الإخراج لكل نمط بيانات (نص أو صوت أو صورة) في بنية مسطّحة.

translationConfig object (TranslationConfig)

اختياريّ. إعدادات الترجمة

audioTranscriptionConfig object (AudioTranscriptionConfig)

اختياريّ. إعدادات تحويل الصوت إلى نص (التعرّف على الكلام)

تمثيل JSON
{
  "stopSequences": [
    string
  ],
  "responseMimeType": string,
  "responseSchema": {
    object (Schema)
  },
  "_responseJsonSchema": value,
  "responseJsonSchema": value,
  "responseModalities": [
    enum (Modality)
  ],
  "candidateCount": integer,
  "maxOutputTokens": integer,
  "temperature": number,
  "topP": number,
  "topK": integer,
  "seed": integer,
  "presencePenalty": number,
  "frequencyPenalty": number,
  "responseLogprobs": boolean,
  "logprobs": integer,
  "enableEnhancedCivicAnswers": boolean,
  "speechConfig": {
    object (SpeechConfig)
  },
  "thinkingConfig": {
    object (ThinkingConfig)
  },
  "imageConfig": {
    object (ImageConfig)
  },
  "mediaResolution": enum (MediaResolution),
  "enableAffectiveDialog": boolean,
  "responseFormat": {
    object (ResponseFormatConfig)
  },
  "translationConfig": {
    object (TranslationConfig)
  },
  "audioTranscriptionConfig": {
    object (AudioTranscriptionConfig)
  }
}

نمط البيانات

وسائط الردّ المتوافقة

عمليات التعداد
MODALITY_UNSPECIFIED القيمة التلقائية
TEXT تشير إلى أنّ النموذج يجب أن يعرض نصًا.
IMAGE تشير إلى أنّ النموذج يجب أن يعرض صورًا.
AUDIO تشير إلى أنّ النموذج يجب أن يعرض صوتًا.

SpeechConfig

إعدادات إنشاء الكلام وتحويل الصوت إلى نص

الحقول
voiceConfig object (VoiceConfig)

الإعداد في حال إخراج صوت واحد

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

اختياريّ. إعدادات نظام الصوت المتعدد ولا يمكن استخدامه مع الحقل voiceConfig.

languageCode string

اختياريّ. رمز اللغة BCP-47 التابع لفريق هندسة الإنترنت (IETF) والذي ضبطه المستخدم لاستخدامه في التطبيق تُستخدَم للتعرّف على الكلام وتركيبه.

القيم الصالحة هي: de-DE وen-AU وen-GB وen-IN وen-US وes-US وfr-FR وhi-IN وpt-BR وar-XA وes-ES وfr-CA وid-ID وit-IT وja-JP وtr-TR وvi-VN وbn-IN وgu-IN وkn-IN وml-IN وmr-IN وta-IN وte-IN وnl-NL وko-KR وcmn-CN وpl-PL وru-RU وth-TH.

تمثيل JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

إعدادات الصوت المطلوب استخدامه

الحقول
voice_config Union type
تمثّل هذه السمة إعدادات مكبّر الصوت الذي سيتم استخدامه. يمكن أن يكون التعليق voice_config إحدى القيم التالية فقط:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

إعدادات الصوت المُعدّ مسبقًا الذي سيتم استخدامه

تمثيل JSON
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  }
  // Union type
}

PrebuiltVoiceConfig

تحدّد هذه السمة إعدادات مكبّر الصوت المُدمج الذي سيتم استخدامه.

الحقول
voiceName string

تمثّل هذه السمة اسم الصوت المضبوط مسبقًا المطلوب استخدامه.

تمثيل JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

إعدادات نظام الصوت المتعدد

الحقول
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

الحقل مطلوب. جميع أصوات مكبّر الصوت المفعَّلة

تمثيل JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

تمثّل هذه السمة إعدادات مكبّر صوت واحد في إعدادات مكبّرات صوت متعدّدة.

الحقول
speaker string

الحقل مطلوب. تمثّل هذه السمة اسم المتحدث المطلوب استخدامه. يجب أن يكون الاسم مطابقًا للاسم الوارد في الطلب.

voiceConfig object (VoiceConfig)

الحقل مطلوب. إعدادات الصوت المطلوب استخدامه

تمثيل JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

إعدادات ميزات التفكير

الحقول
includeThoughts boolean

تُستخدَم لتحديد ما إذا كان سيتم تضمين الأفكار في الردّ. إذا كانت القيمة صحيحة، يتم عرض الأفكار فقط عندما تكون متاحة.

thinkingBudget integer

عدد الرموز المميزة للأفكار التي يجب أن ينشئها النموذج.

thinkingLevel enum (ThinkingLevel)

اختياريّ. يتحكّم هذا الإعداد في الحد الأقصى لعمق عملية الاستدلال الداخلية للنموذج قبل أن ينتج ردًا. تعتمد القيمة التلقائية على النموذج. يمكنك الاطّلاع على دليل مستويات التفكير لمزيد من التفاصيل. يُنصح به لطُرز Gemini 3 أو الأحدث. يؤدي استخدامها مع الطُرز القديمة إلى حدوث خطأ.

تمثيل JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

السماح للمستخدم بتحديد مقدار التفكير باستخدام تعداد بدلاً من ميزانية عدد صحيح

عمليات التعداد
THINKING_LEVEL_UNSPECIFIED القيمة التلقائية
MINIMAL لا يتطلّب الأمر تفكيرًا أو يتطلّب تفكيرًا بسيطًا.
LOW مستوى التفكير منخفض.
MEDIUM مستوى التفكير المتوسط
HIGH مستوى التفكير العالي

ImageConfig

إعدادات ميزات إنشاء الصور

الحقول
aspectRatio string

اختياريّ. نسبة العرض إلى الارتفاع للصورة المطلوب إنشاؤها نسب العرض إلى الارتفاع المتاحة: 1:1 أو 1:4 أو 4:1 أو 1:8 أو 8:1 أو 2:3 أو 3:2 أو 3:4 أو 4:3 أو 4:5 أو 5:4 أو 9:16 أو 16:9 أو 21:9

في حال عدم تحديد نسبة العرض إلى الارتفاع، سيختار النموذج نسبة تلقائية استنادًا إلى أي صور مرجعية مقدَّمة.

imageSize string

اختياريّ. تحدّد هذه السمة حجم الصور التي يتم إنشاؤها. القيم المسموح بها هي 512 و1K و2K و4K. في حال عدم تحديدها، سيستخدم النموذج القيمة التلقائية 1K.

تمثيل JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

تمثّل هذه السمة دقة الوسائط التي تم إدخالها.

عمليات التعداد
MEDIA_RESOLUTION_UNSPECIFIED لم يتم ضبط دقة الوسائط.
MEDIA_RESOLUTION_LOW تم ضبط دقة الوسائط على منخفضة (64 رمزًا مميزًا).
MEDIA_RESOLUTION_MEDIUM تم ضبط دقة الوسائط على متوسطة (256 رمزًا مميزًا).
MEDIA_RESOLUTION_HIGH تم ضبط دقة الوسائط على "عالية" (إعادة ضبط الإطار مع التكبير باستخدام 256 رمزًا مميزًا).

ResponseFormatConfig

إعدادات تنسيق إخراج الردّ هذا عنصر مسطّح يضبط فيه كل حقل فرعي اختياري طريقة إخراج معيّنة.

الحقول
text object (TextResponseFormat)

اختياريّ. إعدادات تنسيق إخراج النص

audio object (AudioResponseFormat)

اختياريّ. إعدادات تنسيق مصدر إخراج الصوت

image object (ImageResponseFormat)

اختياريّ. إعدادات تنسيق إخراج الصورة

تمثيل JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

إعدادات تنسيق إخراج النص

الحقول
mimeType enum (MimeType)

اختياريّ. نوع MIME الخاص بنص الناتج.

schema value (Value format)

اختياريّ. مخطّط JSON الذي يجب أن يتوافق معه الناتج. لا ينطبق إلا عندما يكون mimeType هو APPLICATION_JSON.

تمثيل JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

أنواع MIME المتوافقة مع إخراج النص

عمليات التعداد
MIME_TYPE_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
APPLICATION_JSON تنسيق إخراج JSON.
TEXT_PLAIN تنسيق الإخراج بنص عادي

AudioResponseFormat

إعدادات تنسيق إخراج الصوت

الحقول
mimeType enum (MimeType)

اختياريّ. نوع MIME الخاص بمصدر إخراج الصوت

delivery enum (Delivery)

اختياريّ. طريقة إرسال الصوت

sampleRate integer

اختياريّ. معدّل البيانات في الملف الصوتي بوحدة هرتز

bitRate integer

اختياريّ. معدل نقل البيانات بالبت في الثانية (bps) لا ينطبق ذلك إلا على التنسيقات المضغوطة (MP3 وOpus).

تمثيل JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

أنواع MIME المتوافقة لمصدر إخراج الصوت

عمليات التعداد
MIME_TYPE_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
AUDIO_MP3 تنسيق الصوت MP3
AUDIO_OGG_OPUS تنسيق الصوت OGG Opus
AUDIO_L16 تنسيق الصوت Raw PCM (L16)
AUDIO_WAV تنسيق الصوت WAV
AUDIO_ALAW تنسيق الصوت A-law
AUDIO_MULAW تنسيق الصوت Mu-law

إرسال المحتوى

وضع عرض الإعلانات لإخراج الصوت

عمليات التعداد
DELIVERY_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
INLINE يتم عرض بيانات الصوت بشكل مضمّن في الردّ.
URI يتم عرض البيانات الصوتية كمعرّف موارد موحّد (URI).

ImageResponseFormat

إعدادات تنسيق إخراج الصورة

الحقول
mimeType enum (MimeType)

اختياريّ. نوع MIME الخاص بإخراج الصورة.

delivery enum (Delivery)

اختياريّ. تحدّد هذه السمة طريقة عرض الصورة.

aspectRatio enum (AspectRatio)

اختياريّ. نسبة العرض إلى الارتفاع لناتج الصورة

imageSize enum (ImageSize)

اختياريّ. حجم الصورة الناتجة

تمثيل JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

أنواع MIME المتوافقة لإخراج الصور

عمليات التعداد
MIME_TYPE_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
IMAGE_JPEG تنسيق صورة JPEG

إرسال المحتوى

طريقة إرسال الصور

عمليات التعداد
DELIVERY_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
INLINE يتم عرض بيانات الصورة بشكل مضمّن في الردّ.
URI يتم عرض بيانات الصورة كمعرّف URI.

AspectRatio

نسب العرض إلى الارتفاع المتاحة لنتائج الصور

عمليات التعداد
ASPECT_RATIO_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
ASPECT_RATIO_ONE_BY_ONE نسبة العرض إلى الارتفاع: 1:1
ASPECT_RATIO_TWO_BY_THREE نسبة العرض إلى الارتفاع 2:3
ASPECT_RATIO_THREE_BY_TWO نسبة العرض إلى الارتفاع 3:2
ASPECT_RATIO_THREE_BY_FOUR نسبة العرض إلى الارتفاع 3:4
ASPECT_RATIO_FOUR_BY_THREE نسبة العرض إلى الارتفاع 4:3
ASPECT_RATIO_FOUR_BY_FIVE نسبة العرض إلى الارتفاع 4:5
ASPECT_RATIO_FIVE_BY_FOUR نسبة العرض إلى الارتفاع 5:4
ASPECT_RATIO_NINE_BY_SIXTEEN نسبة العرض إلى الارتفاع: 9:16
ASPECT_RATIO_SIXTEEN_BY_NINE نسبة العرض إلى الارتفاع: 16:9
ASPECT_RATIO_TWENTY_ONE_BY_NINE نسبة العرض إلى الارتفاع: 21:9
ASPECT_RATIO_ONE_BY_EIGHT نسبة العرض إلى الارتفاع 1:8
ASPECT_RATIO_EIGHT_BY_ONE نسبة العرض إلى الارتفاع 8:1
ASPECT_RATIO_ONE_BY_FOUR نسبة العرض إلى الارتفاع 1:4
ASPECT_RATIO_FOUR_BY_ONE نسبة العرض إلى الارتفاع 4:1

ImageSize

أحجام الصور المتوافقة لإخراج الصور

عمليات التعداد
IMAGE_SIZE_UNSPECIFIED القيمة التلقائية هذه القيمة غير مستخدَمة.
IMAGE_SIZE_FIVE_TWELVE حجم الصورة 512 بكسل
IMAGE_SIZE_ONE_K حجم الصورة 1K
IMAGE_SIZE_TWO_K حجم الصورة 2K
IMAGE_SIZE_FOUR_K حجم الصورة بدقة 4K

TranslationConfig

إعدادات ميزات الترجمة

الحقول
targetLanguageCode string

الحقل مطلوب. اللغة الهدف للترجمة. القيم المسموح بها هي رموز اللغة المستخدَمة في المقطع الصوتي وفق المعيار BCP-47 (مثل "en" أو "es" أو "fr").

echoTargetLanguage boolean

اختياريّ. إذا كانت القيمة صحيحة، سينشئ النموذج صوتًا عند التحدث باللغة المستهدَفة، أي أنّه سيقلّد الإدخال. إذا كانت القيمة "خطأ"، لن ننتج محتوًى صوتيًا باللغة المستهدَفة.

تمثيل JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

إعدادات تحويل الصوت إلى نص

الحقول
languageCodes[] string

اختياريّ. رموز اللغة BCP-47 التي تقدّم تلميحات حول اللغات المتوفرة في الصوت في حال عدم تحديد اللغة أو ترك الحقل فارغًا، يتم ضبط الإعدادات التلقائية على ميزة "التعرّف التلقائي على اللغة".

adaptationPhrases[]
(deprecated)
string

اختياريّ. قائمة بالعبارات المستخدَمة لتكييف الكلام، ما يؤدي إلى تحسين نموذج التعرّف التلقائي على الكلام (ASR) للتعرّف على هذه المصطلحات المحدّدة.

customVocabulary[] string

اختياريّ. قائمة بعبارات المفردات المخصّصة لتوجيه نموذج التعرّف على الكلام نحو التعرّف على مصطلحات معيّنة (أسماء المنتجات والأسماء الصحيحة والمصطلحات الفنية).

wordTimestamp boolean

اختياريّ. تضبط هذه السمة عملية إنشاء طوابع زمنية على مستوى الكلمات.

diarization boolean

اختياريّ. تضبط هذه السياسة إعدادات ميزة "تمييز أصوات المتحدّثِين".

language_config Union type
تم إيقاف هذه السمة نهائيًا، لذا يُرجى استخدام language_codes على المستوى الأعلى بدلاً منها. يمكن أن يكون التعليق language_config إحدى القيم التالية فقط:
languageAuto
(deprecated)
object (LanguageAuto)

اختياريّ. سيتعرّف النموذج على اللغة تلقائيًا.

languageHints
(deprecated)
object (LanguageHints)

اختياريّ. تحدّد هذه السمة لغة واحدة أو أكثر في الصوت.

تمثيل JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

لا يتضمّن هذا النوع أي حقول.

تشير إلى أنّه يجب التعرّف تلقائيًا على لغة الصوت.

LanguageHints

تقدّم تلميحات للنموذج بشأن اللغات المحتملة في الصوت.

الحقول
languageCodes[]
(deprecated)
string

الحقل مطلوب. رموز اللغة BCP-47

تمثيل JSON
{
  "languageCodes": [
    string
  ]
}

RealtimeInputConfig

تضبط هذه السياسة سلوك الإدخال في الوقت الفعلي في BidiGenerateContent.

الحقول
automaticActivityDetection object (AutomaticActivityDetection)

اختياريّ. إذا لم يتم ضبط هذا الخيار، تكون ميزة "الرصد التلقائي للنشاط" مفعّلة تلقائيًا. في حال إيقاف ميزة "الرصد التلقائي للصوت"، على العميل إرسال إشارات النشاط.

activityHandling enum (ActivityHandling)

اختياريّ. تحدّد هذه السمة تأثير النشاط.

turnCoverage enum (TurnCoverage)

اختياريّ. تحدّد هذه السمة الإدخال الذي يتم تضمينه في رد المستخدم.

تمثيل JSON
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage)
}

AutomaticActivityDetection

تضبط هذه السمة عملية الرصد التلقائي للنشاط.

الحقول
disabled boolean

اختياريّ. في حال تفعيل هذا الخيار (وهو الإعداد التلقائي)، يتم احتساب عدد عمليات إدخال الصوت والنص التي تم رصدها كنشاط. في حال إيقاف هذه الميزة، على العميل إرسال إشارات النشاط.

startOfSpeechSensitivity enum (StartSensitivity)

اختياريّ. تحدّد هذه السمة مدى احتمال رصد الكلام.

prefixPaddingMs integer

اختياريّ. المدة المطلوبة للكلام الذي تم رصده قبل بدء الكلام كلما كانت هذه القيمة أقل، كان رصد بداية الكلام أكثر حساسية ويمكن التعرّف على الكلام الأقصر. ومع ذلك، يؤدي ذلك أيضًا إلى زيادة احتمال ظهور نتائج إيجابية خاطئة.

endOfSpeechSensitivity enum (EndSensitivity)

اختياريّ. تحدّد هذه السمة مدى احتمال انتهاء الكلام الذي تم رصده.

silenceDurationMs integer

اختياريّ. المدة المطلوبة لرصد أي صوت غير كلامي (مثل الصمت) قبل إكمال الكلام. كلما زادت هذه القيمة، زادت مدة فواصل الكلام التي يمكن أن تحدث بدون مقاطعة نشاط المستخدم، ولكن سيؤدي ذلك إلى زيادة وقت الاستجابة للنموذج.

تمثيل JSON
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

تحدّد هذه السمة كيفية رصد بداية الكلام.

عمليات التعداد
START_SENSITIVITY_UNSPECIFIED القيمة التلقائية هي START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH ستتعرّف ميزة "الرصد التلقائي" على بداية الكلام بشكل متكرّر.
START_SENSITIVITY_LOW سيتم رصد بداية الكلام بشكل أقل.

EndSensitivity

تحدّد هذه السمة كيفية رصد نهاية الكلام.

عمليات التعداد
END_SENSITIVITY_UNSPECIFIED القيمة التلقائية هي END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH تؤدي ميزة "الرصد التلقائي" إلى إنهاء الكلام بشكل متكرّر.
END_SENSITIVITY_LOW تتوقف ميزة "الرصد التلقائي" عن رصد الكلام بمعدّل أقل.

ActivityHandling

الطرق المختلفة للتعامل مع نشاط المستخدم

عمليات التعداد
ACTIVITY_HANDLING_UNSPECIFIED إذا لم يتم تحديد ذلك، يكون السلوك التلقائي هو START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS إذا كانت القيمة "صحيح"، سيؤدي بدء النشاط إلى مقاطعة ردّ النموذج (يُعرف أيضًا باسم "المقاطعة"). سيتم قطع الردّ الحالي للنموذج في لحظة المقاطعة. هذا هو السلوك التلقائي.
NO_INTERRUPTION لن يتم إيقاف ردّ النموذج.

TurnCoverage

خيارات بشأن الإدخال الذي يتم تضمينه في رد المستخدم

عمليات التعداد
TURN_COVERAGE_UNSPECIFIED في حال عدم تحديد ذلك، يتم اختيار سلوك تلقائي استنادًا إلى النموذج. على سبيل المثال، بالنسبة إلى Gemini 2.5، يكون الإعداد التلقائي هو TURN_INCLUDES_ONLY_ACTIVITY، بينما يكون TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO بالنسبة إلى Gemini 3.1 والإصدارات الأحدث.
TURN_INCLUDES_ONLY_ACTIVITY يتضمّن النشاط منذ آخر منعطف، باستثناء عدم النشاط (مثل الصمت في بث الصوت).
TURN_INCLUDES_ALL_INPUT يتضمّن جميع البيانات في الوقت الفعلي منذ آخر دورة، بما في ذلك عدم النشاط (مثل الصمت في بث الصوت).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO يتضمّن هذا السجلّ النشاط الصوتي وكل الفيديوهات منذ آخر مرة تم فيها إيقاف السجلّ مؤقتًا. باستخدام ميزة "رصد النشاط تلقائيًا"، يشير النشاط الصوتي إلى الكلام ويستثني الصمت.

SessionResumptionConfig

إعدادات استئناف الجلسة

يتم تضمين هذه الرسالة في إعدادات الجلسة على النحو التالي: BidiGenerateContentSetup.session_resumption. في حال ضبطه، سيرسل الخادم رسائل SessionResumptionUpdate.

الحقول
handle string

معرّف جلسة سابقة. إذا لم يكن متوفّرًا، يتم إنشاء جلسة جديدة.

تأتي معرّفات الجلسات من قيم SessionResumptionUpdate.token في عمليات الربط السابقة.

تمثيل JSON
{
  "handle": string
}

ContextWindowCompressionConfig

تفعيل ضغط قدرة استيعاب النموذج — آلية لإدارة قدرة استيعاب النموذج حتى لا تتجاوز طولاً معيّنًا

الحقول
compression_mechanism Union type
آلية ضغط قدرة الاستيعاب المستخدَمة يمكن أن يكون التعليق compression_mechanism إحدى القيم التالية فقط:
slidingWindow object (SlidingWindow)

آلية النافذة المنزلقة

triggerTokens string (int64 format)

عدد الرموز المميزة (قبل تنفيذ جولة) المطلوبة لتفعيل ضغط نافذة السياق

يمكن استخدام ذلك لتحقيق التوازن بين الجودة ووقت الاستجابة، لأنّ نوافذ السياق الأقصر قد تؤدي إلى استجابات أسرع من النموذج. ومع ذلك، ستؤدي أي عملية ضغط إلى زيادة مؤقتة في وقت الاستجابة، لذا يجب عدم تشغيلها بشكل متكرر.

إذا لم يتم ضبط هذه القيمة، تكون القيمة التلقائية هي% 80 من الحد الأقصى لفترة السياق في النموذج. يتبقى بذلك% 20 لطلب المستخدم التالي أو ردّ النموذج.

تمثيل JSON
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

تعمل طريقة SlidingWindow من خلال تجاهل المحتوى في بداية قدرة الاستيعاب. سيبدأ السياق الناتج دائمًا عند بداية دور المستخدم. ستبقى تعليمات النظام وأي BidiGenerateContentSetup.prefix_turns في بداية النتيجة دائمًا.

الحقول
targetTokens string (int64 format)

عدد الرموز المميزة المستهدَفة التي يجب الاحتفاظ بها. القيمة التلقائية هي triggerTokens/2.

يؤدي تجاهل أجزاء من قدرة الاستيعاب إلى زيادة مؤقتة في وقت الاستجابة، لذا يجب معايرة هذه القيمة لتجنُّب عمليات الضغط المتكررة.

تمثيل JSON
{
  "targetTokens": string
}

HistoryConfig

إعدادات السجلّ

يتم تضمين هذه الرسالة في إعدادات الجلسة على النحو التالي: BidiGenerateContentSetup.history_config. تضبط هذه السمة تبادل رسائل السجلّ.

الحقول
initialHistoryInClientContent boolean

اختياريّ. إذا كانت القيمة true، سينتظر الخادم بعد إرسال setupComplete، وسيعالج أولاً clientContent رسالة إلى أن تصبح قيمة turnComplete هي true. لن يؤدي هذا السجلّ الأوّلي إلى بدء مكالمة مع النموذج، وقد ينتهي بالدور MODEL. بعد turnComplete، يتم عرض true، ويمكن للعميل بدء المحادثة في الوقت الفعلي من خلال realtimeInput.

تمثيل JSON
{
  "initialHistoryInClientContent": boolean
}

الطريقة: auth_tokens.create

تنشئ هذه الطريقة رمزًا مميزًا يمكن استخدامه لتقييد سلوك جلسة BidiGenerateContent.

نقطة نهاية

post https://generativelanguage.googleapis.com/v1beta/auth_tokens

نص الطلب

يحتوي نص الطلب على مثال AuthToken.

الحقول
expireTime string (Timestamp format)

اختياريّ. الإدخال فقط غير قابل للتغيير وقت اختياري يتم بعده رفض الرسائل في جلسات BidiGenerateContent عند استخدام الرمز المميّز الناتج. (قد يغلق Gemini الجلسة بشكل استباقي بعد هذا الوقت).

إذا لم يتم ضبط هذا الخيار، سيتم تلقائيًا ضبطه على 30 دقيقة في المستقبل. في حال ضبط هذا الحقل، يجب أن تكون القيمة أقل من 20 ساعة في المستقبل.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

اختياريّ. الإدخال فقط غير قابل للتغيير الوقت الذي سيتم بعده رفض جلسات Live API الجديدة التي تستخدم الرمز المميز الناتج من هذا الطلب

إذا لم يتم ضبط هذا الحقل، سيتم ضبطه تلقائيًا على 60 ثانية في المستقبل. في حال ضبط هذا الحقل، يجب أن تكون القيمة أقل من 20 ساعة في المستقبل.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

اختياريّ. الإدخال فقط غير قابل للتغيير إذا كان fieldMask فارغًا، ولم يكن bidiGenerateContentSetup متوفّرًا، سيتم استرداد رسالة BidiGenerateContentSetup الفعّالة من اتصال Live API.

إذا كان fieldMask فارغًا، وكان bidiGenerateContentSetup موجودًا، سيتم أخذ رسالة BidiGenerateContentSetup الفعّالة بالكامل من bidiGenerateContentSetup في هذا الطلب. يتم تجاهل رسالة الإعداد من عملية الربط المباشر بواجهة برمجة التطبيقات.

إذا لم يكن fieldMask فارغًا، ستؤدي الحقول المطابقة من bidiGenerateContentSetup إلى الكتابة فوق الحقول من رسالة الإعداد في عملية الربط بواجهة برمجة التطبيقات المباشرة.

هذه قائمة قيم مفصولة بفاصلة تتضمّن الأسماء المؤهَّلة بالكامل للحقول. مثال: "user.displayName,photo"

config Union type
إعدادات خاصة بطريقة الحصول على الرمز المميز الناتج. يمكن أن يكون التعليق config إحدى القيم التالية فقط:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

اختياريّ. الإدخال فقط غير قابل للتغيير إعدادات خاصة بـ BidiGenerateContent

uses integer

اختياريّ. الإدخال فقط غير قابل للتغيير عدد المرات التي يمكن فيها استخدام الرمز المميز إذا كانت هذه القيمة صفرًا، لن يتم تطبيق أي حدّ. لا يُحتسب استئناف جلسة Live API كاستخدام. إذا لم يتم تحديد قيمة، تكون القيمة التلقائية هي 1.

نص الاستجابة

إذا كانت الاستجابة ناجحة، سيحتوي نصها على مثال تم إنشاؤه حديثًا AuthToken.