Caching

الطريقة: cacheContents.create

ينشئ مورد CachedContent.

نقطة نهاية

منشور https://generativelanguage.googleapis.com/v1beta/cachedContents

نص الطلب

يحتوي نص الطلب على مثال CachedContent.

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

التذكرة الأساسية

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(cache)

model = genai.GenerativeModel.from_cached_content(cache)
response = model.generate_content("Please summarize this transcript")
print(response.text)

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});

console.log(cacheResult);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(cacheResult);
const result = await model.generateContent(
  "Please summarize this transcript.",
);
console.log(result.response.text());

من اسم

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache_name = cache.name  # Save the name for later

# Later
cache = genai.caching.CachedContent.get(cache_name)
apollo_model = genai.GenerativeModel.from_cached_content(cache)
response = apollo_model.generate_content("Find a lighthearted moment from this transcript")
print(response.text)

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheName = cacheResult.name; // Save the name for later.

// Later
const getCacheResult = await cacheManager.get(cacheName);
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(getCacheResult);
model.generateContent("Please summarize this transcript.");

من المحادثة

Python

model_name = "gemini-1.5-flash-001"
system_instruction = "You are an expert analyzing transcripts."

model = genai.GenerativeModel(model_name=model_name, system_instruction=system_instruction)
chat = model.start_chat()
document = genai.upload_file(path=media / "a11.txt")
response = chat.send_message(["Hi, could you summarize this transcript?", document])
print("\n\nmodel:  ", response.text)
response = chat.send_message(
    ["Okay, could you tell me more about the trans-lunar injection"]
)
print("\n\nmodel:  ", response.text)

# To cache the conversation so far, pass the chat history as the list of "contents".
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction=system_instruction,
    contents=chat.history,
)
model = genai.GenerativeModel.from_cached_content(cached_content=cache)

# Continue the chat where you left off.
chat = model.start_chat()
response = chat.send_message(
    "I didn't understand that last part, could you explain it in simpler language?"
)
print("\n\nmodel:  ", response.text)

Node.js

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash-001" });
const chat = model.startChat();

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

let result = await chat.sendMessage([
  "Hi, could you summarize this transcript?",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(`\n\nmodel: ${result.response.text()}`);
result = await chat.sendMessage(
  "Okay, could you tell me more about the trans-lunar injection",
);
console.log(`\n\nmodel: ${result.response.text()}`);

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: await chat.getHistory(),
});

const newModel = genAI.getGenerativeModelFromCachedContent(cacheResult);

const newChat = newModel.startChat();
result = await newChat.sendMessage(
  "I didn't understand that last part, could you explain it in simpler language?",
);
console.log(`\n\nmodel: ${result.response.text()}`);

نص الاستجابة

في حال نجاح الإجراء، يحتوي نص الاستجابة على مثيل CachedContent تم إنشاؤه حديثًا.

الطريقة: cacheContents.list

يسرد CachedContents.

نقطة نهاية

الحصول على https://generativelanguage.googleapis.com/v1beta/cachedContents

معامِلات طلب البحث

pageSize integer

اختياريّ. الحد الأقصى لعدد المحتوى المخزن مؤقتًا المطلوب عرضه. قد تعرض الخدمة عددًا أقل من هذه القيمة. في حال عدم تحديد قيمة محدّدة، سيتم عرض عدد تلقائي من السلع (أقل من الحد الأقصى). الحد الأقصى للقيمة هو 1000؛ سيتم فرض القيم الأكبر من 1000 على 1000.

pageToken string

اختياريّ. رمز مميّز للصفحة، تم تلقّيه من استدعاء سابق لتطبيق "cachedContents.list". ويمكنك توفير هذا الحقل لاسترداد الصفحة التالية.

عند التقسيم على صفحات، يجب أن تتطابق جميع المَعلمات الأخرى المقدَّمة إلى cachedContents.list مع الاستدعاء الذي قدّم الرمز المميّز للصفحة.

نص الطلب

يجب أن يكون نص الطلب فارغًا.

نص الاستجابة

الرد باستخدام قائمة CachedContents

إذا كانت الاستجابة ناجحة، سيحتوي نص الاستجابة على بيانات بالبنية التالية:

الحقول
cachedContents[] object (CachedContent)

قائمة المحتوى المُخزَّن مؤقتًا

nextPageToken string

رمز مميز يمكن إرساله على شكل pageToken لاسترداد الصفحة التالية. في حال إسقاط هذا الحقل، لن تظهر أي صفحات لاحقة.

تمثيل JSON
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

الطريقة: cacheContents.get

قراءة مورد CachedContent.

نقطة نهاية

الحصول على https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

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

name string

مطلوب. اسم المورد الذي يشير إلى إدخال ذاكرة التخزين المؤقت للمحتوى التنسيق: cachedContents/{id} يأخذ الشكل cachedContents/{cachedcontent}.

نص الطلب

يجب أن يكون نص الطلب فارغًا.

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

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(genai.caching.CachedContent.get(name=cache.name))

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheGetResult = await cacheManager.get(cacheResult.name);
console.log(cacheGetResult);

نص الاستجابة

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

الطريقة: cacheContents.patch

مورد CachedContent (صلاحية انتهاء الصلاحية فقط قابلة للتحديث).

نقطة نهاية

رمز تصحيح https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

PATCH https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

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

cachedContent.name string

اختياريّ. المُعرّف. اسم المورد الذي يشير إلى المحتوى المخزَّن مؤقتًا التنسيق: cachedContents/{id} يأخذ الشكل cachedContents/{cachedcontent}.

معامِلات طلب البحث

updateMask string (FieldMask format)

قائمة الحقول المطلوب تعديلها.

هذه قائمة مفصولة بفواصل تضم أسماء الحقول المؤهلة بالكامل. مثال: "user.displayName,photo"

نص الطلب

يحتوي نص الطلب على مثال CachedContent.

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

Python

import datetime

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)

# You can update the ttl
cache.update(ttl=datetime.timedelta(hours=2))
print(f"After update:\n {cache}")

# Or you can update the expire_time
cache.update(expire_time=datetime.datetime.now() + datetime.timedelta(minutes=15))

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
console.log("initial cache data:", cacheResult);
const cacheUpdateResult = await cacheManager.update(cacheResult.name, {
  cachedContent: {
    // 2 hours
    ttlSeconds: 60 * 60 * 2,
  },
});
console.log("updated cache data:", cacheUpdateResult);

نص الاستجابة

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

الطريقة: cacheContents.delete

لحذف مورد CachedContent.

نقطة نهاية

حذف https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

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

name string

مطلوب. اسم المورد الذي يشير إلى إدخال ذاكرة التخزين المؤقت للمحتوى - التنسيق: cachedContents/{id} : يتخذ النموذج cachedContents/{cachedcontent}.

نص الطلب

يجب أن يكون نص الطلب فارغًا.

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

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache.delete()

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
await cacheManager.delete(cacheResult.name);

نص الاستجابة

إذا كانت الاستجابة ناجحة، يكون نص الاستجابة فارغًا.

مورد REST: المحتوى المخزن مؤقتًا

المورد: CachedContent

المحتوى الذي تمت معالجته مسبقًا ويمكن استخدامه في الطلب اللاحق إلى GenerativeService

لا يمكن استخدام المحتوى المخزن مؤقتًا إلا مع النموذج الذي تم إنشاؤه من أجله.

تمثيل JSON
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // Union field expiration can be only one of the following:
  "expireTime": string,
  "ttl": string
  // End of list of possible types for union field expiration.
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}
الحقول
contents[] object (Content)

اختياريّ. الإدخال فقط. غير قابل للتغيير. المحتوى المطلوب تخزينه مؤقتًا.

tools[] object (Tool)

اختياريّ. الإدخال فقط. غير قابل للتغيير. قائمة بـ Tools التي قد يستخدمها النموذج لإنشاء الرد التالي

createTime string (Timestamp format)

النتائج فقط. وقت إنشاء إدخال ذاكرة التخزين المؤقت

طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: "2014-10-02T15:01:23Z" و"2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

النتائج فقط. تاريخ آخر تعديل لإدخال ذاكرة التخزين المؤقت بالتوقيت العالمي المنسّق

طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: "2014-10-02T15:01:23Z" و"2014-10-02T15:01:23.045123456Z".

usageMetadata object (UsageMetadata)

النتائج فقط. البيانات الوصفية حول استخدام المحتوى المُخزَّن مؤقتًا

حقل الاتحاد expiration. تحدِّد هذه السياسة تاريخ انتهاء صلاحية هذا المورد. يمكن أن يكون expiration واحدًا فقط مما يلي:
expireTime string (Timestamp format)

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

طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: "2014-10-02T15:01:23Z" و"2014-10-02T15:01:23.045123456Z".

ttl string (Duration format)

الإدخال فقط. مدة البقاء جديدة لهذا المورد، الإدخال فقط.

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

name string

اختياريّ. المُعرّف. اسم المورد الذي يشير إلى المحتوى المخزَّن مؤقتًا تنسيق الملف: cachedContents/{id}

displayName string

اختياريّ. غير قابل للتغيير. الاسم المعروض الذي ينشئه المستخدمون للمحتوى المخزَّن مؤقتًا. الحد الأقصى لعدد أحرف يونيكود هو 128 حرفًا.

model string

مطلوب. غير قابل للتغيير. اسم Model المطلوب استخدامه للمحتوى المخزَّن مؤقتًا التنسيق: models/{model}

systemInstruction object (Content)

اختياريّ. الإدخال فقط. غير قابل للتغيير. تعليمات بشأن ضبط النظام من قِبل المطوّر هذه الميزة هي نصّ فقط حاليًا.

toolConfig object (ToolConfig)

اختياريّ. الإدخال فقط. غير قابل للتغيير. إعدادات الأداة. وتتم مشاركة هذا الإعداد مع جميع الأدوات.

المحتوى

يشير ذلك المصطلح إلى نوع البيانات المنظَّمة الأساسية الذي يتضمّن محتوى رسالة متعدد الأجزاء.

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

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

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

role string

اختياريّ. منتج المحتوى. يجب أن تكون إما "مستخدم" أو "النموذج".

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

الجزء

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

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

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

تمثيل JSON
{

  // Union field data can be only one of the following:
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  }
  // End of list of possible types for union field data.
}
الحقول

حقل الاتحاد data.

يمكن أن يكون 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.

بلوب

وحدات البايت للوسائط غير المُعدَّة

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

تمثيل JSON
{
  "mimeType": string,
  "data": string
}
الحقول
mimeType string

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

data string (bytes format)

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

سلسلة بترميز base64.

FunctionCall

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

تمثيل JSON
{
  "name": string,
  "args": {
    object
  }
}
الحقول
name string

مطلوب. اسم الدالة المطلوب استدعاءها. يجب أن يكون النص a-z أو A-Z أو 0-9 أو يحتوي على شرطات سفلية وشرطات، ولا يزيد طولها عن 63 حرفًا.

args object (Struct format)

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

FunctionResponse

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

تمثيل JSON
{
  "name": string,
  "response": {
    object
  }
}
الحقول
name string

مطلوب. اسم الدالة المطلوب استدعاءها. يجب أن يكون النص a-z أو A-Z أو 0-9 أو يحتوي على شرطات سفلية وشرطات، ولا يزيد طولها عن 63 حرفًا.

response object (Struct format)

مطلوب. استجابة الدالة بتنسيق كائن JSON.

FileData

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

تمثيل JSON
{
  "mimeType": string,
  "fileUri": string
}
الحقول
mimeType string

اختياريّ. تمثّل هذه السمة نوع MIME العادي لبيانات المصدر الصادر عن هيئة أرقام الإنترنت المخصصة (IANA).

fileUri string

مطلوب. معرّف الموارد المنتظم (URI).

ExecutableCode

يشير هذا المصطلح إلى الرمز الذي تم إنشاؤه من خلال النموذج المطلوب تنفيذه، والنتيجة التي تم إرجاعها إلى النموذج.

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

تمثيل JSON
{
  "language": enum (Language),
  "code": string
}
الحقول
language enum (Language)

مطلوب. لغة برمجة code.

code string

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

Language

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

عمليات التعداد
LANGUAGE_UNSPECIFIED لغة غير محدّدة يجب عدم استخدام هذه القيمة.
PYTHON بايثون >= 3.10، مع توفر numpy وsimpy.

CodeExecutionResult

نتيجة تنفيذ ExecutableCode.

لا يتم إنشاؤه إلا عند استخدام CodeExecution، ويتبع دائمًا part يحتوي على ExecutableCode.

تمثيل JSON
{
  "outcome": enum (Outcome),
  "output": string
}
الحقول
outcome enum (Outcome)

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

output string

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

النتيجة

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

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

الأداة

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

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

تمثيل JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "codeExecution": {
    object (CodeExecution)
  }
}
الحقول
functionDeclarations[] object (FunctionDeclaration)

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

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

codeExecution object (CodeExecution)

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

FunctionDeclaration

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

تمثيل JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  }
}
الحقول
name string

مطلوب. تمثّل هذه السمة اسم الدالة. يجب أن يكون النص a-z أو A-Z أو 0-9 أو يحتوي على شرطات سفلية وشرطات، ولا يزيد طولها عن 63 حرفًا.

description string

مطلوب. تمثّل هذه السمة وصفًا موجزًا للدالة.

parameters object (Schema)

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

المخطط

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

تمثيل JSON
{
  "type": enum (Type),
  "format": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "items": {
    object (Schema)
  }
}
الحقول
type enum (Type)

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

format string

اختياريّ. تنسيق البيانات. يستخدم هذا فقط لأنواع البيانات الأولية. التنسيقات المتوافقة: لنوع NUMBER: عدد عائم، ومزدوج لنوع العدد الصحيح: int32، وint64 لنوع السلسلة: enum.

description string

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

nullable boolean

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

enum[] string

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

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

اختياريّ. خصائص النوع.OBJECT.

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

required[] string

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

items object (Schema)

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

النوع

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

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

CodeExecution

لا يحتوي هذا النوع على أي حقول.

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

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

ToolConfig

إعدادات الأداة التي تحتوي على مَعلمات لتحديد استخدام Tool في الطلب

تمثيل JSON
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}
الحقول
functionCallingConfig object (FunctionCallingConfig)

اختياريّ. تهيئة استدعاء الدالة.

FunctionCallingConfig

إعداد لتحديد سلوك استدعاء الدوال.

تمثيل JSON
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}
الحقول
mode enum (Mode)

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

allowedFunctionNames[] string

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

يجب ضبط هذا الإعداد فقط عندما يكون الوضع "Any". يجب أن تتطابق أسماء الدوال مع [FunctionDeclaration.name]. عند تعيين الوضع على "أي"، يتوقع النموذج استدعاء الدالة من مجموعة أسماء الدوال المتوفرة.

الوضع

تحدد سلوك التنفيذ لاستدعاء الدوال من خلال تحديد وضع التنفيذ.

عمليات التعداد
MODE_UNSPECIFIED وضع استدعاء الدوال غير محدَّد. يجب عدم استخدام هذه القيمة.
AUTO سلوك النموذج التلقائي، يقرِّر النموذج توقُّع استدعاء دالة أو استجابة لغة طبيعية.
ANY يقتصر النموذج على التنبؤ دائمًا باستدعاء الدالة فقط. إذا كانت "allowedFunctionNames" يكون استدعاء الدالة المتنبأ به سيقتصر على أي من "allowedFunctionNames"، وإلا سيكون استدعاء الدالة المتنبأ به أي من "functionDeclarations" المقدم.
NONE لن يتوقع النموذج أي استدعاء الدالة. يكون سلوك النموذج مماثلاً عند عدم تمرير أيّ إعلانات دالة.

UsageMetadata

البيانات الوصفية حول استخدام المحتوى المُخزَّن مؤقتًا

تمثيل JSON
{
  "totalTokenCount": integer
}
الحقول
totalTokenCount integer

إجمالي عدد الرموز المميّزة التي يستهلكها المحتوى المخزَّن مؤقتًا