تولید متن

Gemini API زمانی که متن، تصویر، ویدئو و صدا به عنوان ورودی ارائه شود، می تواند خروجی متن تولید کند.

این راهنما به شما نشان می دهد که چگونه با استفاده از متدهای generateContent و streamGenerateContent متن تولید کنید. برای آشنایی با کار با قابلیت های بینایی و صوتی Gemini، به راهنمای Vision و Audio مراجعه کنید.

متن را از ورودی فقط متنی تولید کنید

ساده ترین راه برای تولید متن با استفاده از Gemini API ارائه یک ورودی متنی به مدل است، همانطور که در این مثال نشان داده شده است:

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

در این مورد، اعلان ("توضیح دهید که هوش مصنوعی چگونه کار می کند") شامل هیچ نمونه خروجی، دستورالعمل های سیستم یا اطلاعات قالب بندی نمی شود. این یک رویکرد شات صفر است. برای برخی از موارد استفاده، یک اعلان یک شات یا چند شات ممکن است خروجی تولید کند که با انتظارات کاربر همسوتر باشد. در برخی موارد، ممکن است بخواهید دستورالعمل‌های سیستمی را برای کمک به مدل برای درک کار یا پیروی از دستورالعمل‌های خاص ارائه دهید.

تولید متن از ورودی متن و تصویر

Gemini API از ورودی های چندوجهی پشتیبانی می کند که متن را با فایل های رسانه ای ترکیب می کند. مثال زیر نحوه تولید متن از ورودی متن و تصویر را نشان می دهد:

# 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-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

همانند اعلان‌های متنی، اعلان چندوجهی می‌تواند شامل رویکردها و اصلاحات مختلفی باشد. بسته به خروجی این مثال، ممکن است بخواهید مراحلی را به دستور اضافه کنید یا در دستورالعمل های خود دقیق تر باشید. برای کسب اطلاعات بیشتر، به استراتژی‌های درخواست فایل مراجعه کنید.

یک جریان متنی ایجاد کنید

به‌طور پیش‌فرض، مدل پس از تکمیل کل فرآیند تولید متن، پاسخی را برمی‌گرداند. شما می توانید با منتظر ماندن برای کل نتیجه به تعاملات سریع تری برسید و در عوض از استریم برای مدیریت نتایج جزئی استفاده کنید.

مثال زیر نحوه اجرای جریان با استفاده از روش streamGenerateContent را برای تولید متن از یک اعلان ورودی متنی نشان می دهد.

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

یک چت تعاملی بسازید

Gemini SDK به شما امکان می‌دهد چندین دور سؤال و پاسخ جمع‌آوری کنید و به کاربران این امکان را می‌دهد تا به‌صورت تدریجی به سمت پاسخ‌ها قدم بردارند یا برای مشکلات چند قسمتی کمک دریافت کنند. این ویژگی SDK یک رابط برای پیگیری تاریخچه مکالمات ارائه می دهد، اما در پشت صحنه از همان روش generateContent برای ایجاد پاسخ استفاده می کند.

مثال کد زیر اجرای چت اولیه را نشان می دهد:

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_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"

پخش جریانی چت را فعال کنید

همانطور که در مثال زیر نشان داده شده است، می توانید از استریم با چت نیز استفاده کنید:

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_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"

پیکربندی تولید متن

هر اعلانی که به مدل ارسال می کنید شامل پارامترهایی است که نحوه تولید پاسخ مدل را کنترل می کند. برای پیکربندی این پارامترها می توانید از GenerationConfig استفاده کنید. اگر پارامترها را پیکربندی نکنید، مدل از گزینه های پیش فرض استفاده می کند که می تواند بسته به مدل متفاوت باشد.

مثال زیر نحوه پیکربندی چندین گزینه موجود را نشان می دهد.

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Write a story about a magic backpack."}
            ]
        }],
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_ONLY_HIGH"
            }
        ],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

stopSequences مجموعه‌ای از دنباله‌های کاراکتر (تا 5) را مشخص می‌کند که تولید خروجی را متوقف می‌کند. اگر مشخص شود، API در اولین ظاهر یک stop_sequence متوقف می‌شود. توالی توقف به عنوان بخشی از پاسخ گنجانده نمی شود.

temperature تصادفی بودن خروجی را کنترل می کند. برای پاسخ‌های خلاقانه‌تر از مقادیر بالاتر و برای پاسخ‌های قطعی‌تر از مقادیر پایین‌تر استفاده کنید. مقادیر می توانند از [0.0، 2.0] متغیر باشند.

maxOutputTokens حداکثر تعداد توکن‌ها را برای گنجاندن در یک نامزد تنظیم می‌کند.

topP نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. توکن ها از بیشترین تا کمترین احتمال انتخاب می شوند تا زمانی که مجموع احتمالات آنها با مقدار topP برابر شود. مقدار topP پیش فرض 0.95 است.

topK نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. topK 1 به این معنی است که توکن انتخابی از بین تمام نشانه های موجود در واژگان مدل، محتمل ترین است، در حالی که topK 3 به این معنی است که توکن بعدی از بین 3 مورد محتمل ترین با استفاده از دما انتخاب شده است. توکن ها بیشتر بر اساس topP فیلتر می شوند و نشانه نهایی با استفاده از نمونه گیری دما انتخاب می شود.

دستورالعمل های سیستم را اضافه کنید

دستورالعمل های سیستم به شما امکان می دهد رفتار یک مدل را بر اساس نیازهای خاص و موارد استفاده خود هدایت کنید.

با دادن دستورالعمل‌های سیستم مدل، زمینه اضافی مدل را برای درک کار، ایجاد پاسخ‌های سفارشی‌سازی‌شده‌تر، و رعایت دستورالعمل‌های خاص در تعامل کامل کاربر با مدل فراهم می‌کنید. همچنین می‌توانید با تنظیم دستورالعمل‌های سیستم، جدا از اعلان‌های ارائه‌شده توسط کاربران نهایی، رفتار سطح محصول را مشخص کنید.

وقتی مدل خود را مقداردهی اولیه می کنید می توانید دستورالعمل های سیستم را تنظیم کنید:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_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"}}}'

برای مثال تعاملی استفاده از دستورالعمل‌های سیستم، دستورالعمل‌های سیستم Colab را ببینید.

بعدش چی

اکنون که اصول اولیه Gemini API را بررسی کرده اید، ممکن است بخواهید امتحان کنید:

  • درک بینایی : یاد بگیرید که چگونه از درک بینایی بومی Gemini برای پردازش تصاویر و ویدیوها استفاده کنید.
  • درک صوتی : یاد بگیرید که چگونه از درک صوتی بومی Gemini برای پردازش فایل های صوتی استفاده کنید.
،

Gemini API زمانی که متن، تصویر، ویدئو و صدا به عنوان ورودی ارائه شود، می تواند خروجی متن تولید کند.

این راهنما به شما نشان می دهد که چگونه با استفاده از متدهای generateContent و streamGenerateContent متن تولید کنید. برای آشنایی با کار با قابلیت های بینایی و صوتی Gemini، به راهنمای Vision و Audio مراجعه کنید.

متن را از ورودی فقط متنی تولید کنید

ساده ترین راه برای تولید متن با استفاده از Gemini API ارائه یک ورودی متنی به مدل است، همانطور که در این مثال نشان داده شده است:

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

در این مورد، اعلان ("توضیح دهید که هوش مصنوعی چگونه کار می کند") شامل هیچ نمونه خروجی، دستورالعمل های سیستم یا اطلاعات قالب بندی نمی شود. این یک رویکرد شات صفر است. برای برخی از موارد استفاده، یک اعلان یک شات یا چند شات ممکن است خروجی تولید کند که با انتظارات کاربر همسوتر باشد. در برخی موارد، ممکن است بخواهید دستورالعمل‌های سیستمی را برای کمک به مدل برای درک کار یا پیروی از دستورالعمل‌های خاص ارائه دهید.

تولید متن از ورودی متن و تصویر

Gemini API از ورودی های چندوجهی پشتیبانی می کند که متن را با فایل های رسانه ای ترکیب می کند. مثال زیر نحوه تولید متن از ورودی متن و تصویر را نشان می دهد:

# 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-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

همانند اعلان‌های متنی، اعلان چندوجهی می‌تواند شامل رویکردها و اصلاحات مختلفی باشد. بسته به خروجی این مثال، ممکن است بخواهید مراحلی را به دستور اضافه کنید یا در دستورالعمل های خود دقیق تر باشید. برای کسب اطلاعات بیشتر، به استراتژی‌های درخواست فایل مراجعه کنید.

یک جریان متنی ایجاد کنید

به‌طور پیش‌فرض، مدل پس از تکمیل کل فرآیند تولید متن، پاسخی را برمی‌گرداند. شما می توانید با منتظر ماندن برای کل نتیجه به تعاملات سریع تری برسید و در عوض از استریم برای مدیریت نتایج جزئی استفاده کنید.

مثال زیر نحوه اجرای جریان با استفاده از روش streamGenerateContent را برای تولید متن از یک اعلان ورودی متنی نشان می دهد.

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

یک چت تعاملی بسازید

Gemini SDK به شما امکان می‌دهد چندین دور سؤال و پاسخ جمع‌آوری کنید و به کاربران این امکان را می‌دهد تا به‌صورت تدریجی به سمت پاسخ‌ها قدم بردارند یا برای مشکلات چند قسمتی کمک دریافت کنند. این ویژگی SDK یک رابط برای پیگیری تاریخچه مکالمات ارائه می دهد، اما در پشت صحنه از همان روش generateContent برای ایجاد پاسخ استفاده می کند.

مثال کد زیر اجرای چت اولیه را نشان می دهد:

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_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"

پخش جریانی چت را فعال کنید

همانطور که در مثال زیر نشان داده شده است، می توانید از استریم با چت نیز استفاده کنید:

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_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"

پیکربندی تولید متن

هر اعلانی که به مدل ارسال می کنید شامل پارامترهایی است که نحوه تولید پاسخ مدل را کنترل می کند. برای پیکربندی این پارامترها می توانید از GenerationConfig استفاده کنید. اگر پارامترها را پیکربندی نکنید، مدل از گزینه های پیش فرض استفاده می کند که می تواند بسته به مدل متفاوت باشد.

مثال زیر نحوه پیکربندی چندین گزینه موجود را نشان می دهد.

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Write a story about a magic backpack."}
            ]
        }],
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_ONLY_HIGH"
            }
        ],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

stopSequences مجموعه‌ای از دنباله‌های کاراکتر (تا 5) را مشخص می‌کند که تولید خروجی را متوقف می‌کند. اگر مشخص شود، API در اولین ظاهر یک stop_sequence متوقف می‌شود. توالی توقف به عنوان بخشی از پاسخ گنجانده نمی شود.

temperature تصادفی بودن خروجی را کنترل می کند. برای پاسخ‌های خلاقانه‌تر از مقادیر بالاتر و برای پاسخ‌های قطعی‌تر از مقادیر پایین‌تر استفاده کنید. مقادیر می توانند از [0.0، 2.0] متغیر باشند.

maxOutputTokens حداکثر تعداد توکن‌ها را برای گنجاندن در یک نامزد تنظیم می‌کند.

topP نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. توکن ها از بیشترین تا کمترین احتمال انتخاب می شوند تا زمانی که مجموع احتمالات آنها با مقدار topP برابر شود. مقدار topP پیش فرض 0.95 است.

topK نحوه انتخاب توکن ها را برای خروجی توسط مدل تغییر می دهد. topK 1 به این معنی است که توکن انتخابی از بین تمام نشانه های موجود در واژگان مدل، محتمل ترین است، در حالی که topK 3 به این معنی است که توکن بعدی از بین 3 مورد محتمل ترین با استفاده از دما انتخاب شده است. توکن ها بیشتر بر اساس topP فیلتر می شوند و نشانه نهایی با استفاده از نمونه گیری دما انتخاب می شود.

دستورالعمل های سیستم را اضافه کنید

دستورالعمل های سیستم به شما امکان می دهد رفتار یک مدل را بر اساس نیازهای خاص و موارد استفاده خود هدایت کنید.

با دادن دستورالعمل‌های سیستم مدل، زمینه اضافی مدل را برای درک کار، ایجاد پاسخ‌های سفارشی‌سازی‌شده‌تر، و رعایت دستورالعمل‌های خاص در تعامل کامل کاربر با مدل فراهم می‌کنید. همچنین می‌توانید با تنظیم دستورالعمل‌های سیستم، جدا از اعلان‌های ارائه‌شده توسط کاربران نهایی، رفتار سطح محصول را مشخص کنید.

وقتی مدل خود را مقداردهی اولیه می کنید می توانید دستورالعمل های سیستم را تنظیم کنید:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_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"}}}'

برای مثال تعاملی استفاده از دستورالعمل‌های سیستم، دستورالعمل‌های سیستم Colab را ببینید.

بعدش چی

اکنون که اصول اولیه Gemini API را بررسی کرده اید، ممکن است بخواهید امتحان کنید:

  • درک بینایی : یاد بگیرید که چگونه از درک بینایی بومی Gemini برای پردازش تصاویر و ویدیوها استفاده کنید.
  • درک صوتی : یاد بگیرید که چگونه از درک صوتی بومی Gemini برای پردازش فایل های صوتی استفاده کنید.