برنامج تعليمي حول التوليف الدقيق

ستساعدك هذه المقالة التعليمية على بدء استخدام خدمة ضبط Gemini API باستخدام حزمة Python SDK أو واجهة برمجة التطبيقات REST باستخدام curl. توضّح الأمثلة كيفية ضبط نموذج النص الذي يستند إليه خدمة إنشاء النصوص في Gemini API.

الاطّلاع على ai.google.dev تجربة "مفكرة Colab" عرض دفتر ملاحظات على GitHub

القيود

قبل ضبط نموذج، يجب أن تكون على دراية بالقيود التالية:

تحسين مجموعات البيانات

تنطبق القيود التالية على مجموعات البيانات التي تم تحسينها لنموذج Gemini 1.5 Flash:

  • الحد الأقصى لحجم الإدخال لكل مثال هو 40,000 حرف.
  • الحد الأقصى لحجم الإخراج لكل مثال هو 5,000 حرف.
  • لا يُسمح إلا بأمثلة أزواج الإدخال/الإخراج. لا تتوفّر المحادثات المتعدّدة الخطوات بأسلوب المحادثة.

النماذج المحسَّنة

تنطبق القيود التالية على النماذج المحسّنة:

  • الحد الأقصى المسموح به للإدخال في نموذج Gemini 1.5 Flash المُعدّل هو 40,000 حرف.
  • لا يتوفّر وضع JSON مع النماذج المحسّنة.
  • لا يتوفّر إدخال إلا للنص.

قبل البدء: إعداد مشروعك ومفتاح واجهة برمجة التطبيقات

قبل طلب Gemini API، عليك إعداد مشروعك وضبط مفتاح واجهة برمجة التطبيقات.

عرض النماذج المحسّنة

يمكنك التحقّق من النماذج المحسّنة الحالية باستخدام طريقة tunedModels.list.

from google import genai
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable

for model_info in client.models.list():
    print(model_info.name)

إنشاء نموذج معدَّل

لإنشاء نموذج معدَّل، عليك تمرير مجموعة البيانات إلى النموذج في الأسلوب tunedModels.create.

في هذا المثال، ستضبط نموذجًا لإنشاء الرقم التالي في التسلسل. على سبيل المثال، إذا كان الإدخال هو 1، من المفترض أن يعرض النموذج 2. إذا كان الإدخال هو one hundred، يجب أن يكون الناتج one hundred one.

# create tuning model
training_dataset =  [
    ["1", "2"],
    ["3", "4"],
    ["-3", "-2"],
    ["twenty two", "twenty three"],
    ["two hundred", "two hundred one"],
    ["ninety nine", "one hundred"],
    ["8", "9"],
    ["-98", "-97"],
    ["1,000", "1,001"],
    ["10,100,000", "10,100,001"],
    ["thirteen", "fourteen"],
    ["eighty", "eighty one"],
    ["one", "two"],
    ["three", "four"],
    ["seven", "eight"],
]
training_dataset=types.TuningDataset(
        examples=[
            types.TuningExample(
                text_input=i,
                output=o,
            )
            for i,o in training_dataset
        ],
    )
tuning_job = client.tunings.tune(
    base_model='models/gemini-1.0-pro-001',
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count= 5,
        batch_size=4,
        learning_rate=0.001,
        tuned_model_display_name="test tuned model"
    )
)

# generate content with the tuned model
response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III',
)

print(response.text)

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

تجربة النموذج

يمكنك استخدام الطريقة tunedModels.generateContent وتحديد اسم النموذج المحسَّن لاختبار أدائه.

response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III'
)

لم يتم تنفيذه

لم يتمّ بعد تنفيذ بعض الميزات (إعداد تقارير التقدّم وتعديل الوصف و حذف النماذج المحسّنة) في حزمة تطوير البرامج (SDK) الجديدة.