نمای کلی Gemini API

Gemini API به شما امکان دسترسی به جدیدترین مدل‌های تولیدی Google را می‌دهد. هنگامی که با ویژگی های عمومی در دسترس شما از طریق API آشنا شدید، برای شروع توسعه، آموزش زبان انتخابی خود را امتحان کنید.

مدل ها

جمینی مجموعه ای از مدل های هوش مصنوعی مولد چندوجهی است که توسط گوگل توسعه یافته است. مدل‌های Gemini می‌توانند متن و تصویر را بسته به نوع مدلی که انتخاب می‌کنید، در پیام‌ها بپذیرند و پاسخ‌های متنی را خروجی بگیرند.

برای دریافت اطلاعات دقیق تر مدل به صفحه مدل های جمینی مراجعه کنید. همچنین می‌توانید از متد list_models برای فهرست کردن تمام مدل‌های موجود و سپس از متد get_model برای دریافت ابرداده برای یک مدل خاص استفاده کنید.

داده ها و طراحی سریع

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

درخواست‌هایی که از Gemini API استفاده می‌کنند نمی‌توانند از 20 مگابایت بیشتر باشند. Gemini API یک File API برای ذخیره موقت فایل‌های رسانه‌ای برای استفاده در درخواست‌ها ارائه می‌کند، که به شما امکان می‌دهد داده‌های فوری بیش از حد ۲۰ مگابایت ارائه دهید. برای اطلاعات بیشتر در مورد استفاده از Files API و فرمت‌های فایل پشتیبانی شده برای درخواست، به درخواست با فایل‌های رسانه مراجعه کنید.

طراحی سریع و ورودی متن

ایجاد دستورات مؤثر یا مهندسی سریع، ترکیبی از هنر و علم است. برای آشنایی با روش‌های مختلف درخواست، به مقدمه راهنمایی در مورد نحوه نزدیک شدن به درخواست و راهنمای اعلان 101 مراجعه کنید.

تولید محتوا

Gemini API به شما امکان می‌دهد از داده‌های متنی و تصویری برای درخواست استفاده کنید، بسته به نوع مدلی که استفاده می‌کنید. به عنوان مثال، می توانید متن را با استفاده از اعلان های متنی با مدل gemini-pro تولید کنید و از داده های متنی و تصویری برای درخواست مدل gemini-pro-vision استفاده کنید. این بخش نمونه کدهای ساده ای از هر کدام را ارائه می دهد. برای مثال دقیق تر که همه پارامترها را پوشش می دهد، به مرجع generateContent API مراجعه کنید.

ورودی متن و تصویر

می‌توانید یک پیام متنی همراه با یک تصویر به مدل gemini-pro-vision برای انجام یک کار مرتبط با بینایی ارسال کنید. به عنوان مثال، شرح یک تصویر یا شناسایی آنچه در یک تصویر است.

مثال‌های کد زیر اجرای ساده یک اعلان متن و تصویر را برای هر زبان پشتیبانی شده نشان می‌دهند:

پایتون

model = genai.GenerativeModel('gemini-pro-vision')

cookie_picture = [{
    'mime_type': 'image/png',
    'data': pathlib.Path('cookie.png').read_bytes()
}]
prompt = "Do these look store-bought or homemade?"

response = model.generate_content(
    model="gemini-pro-vision",
    content=[prompt, cookie_picture]
)
print(response.text)

برای دیدن قطعه کد کامل به آموزش پایتون مراجعه کنید.

برو

vmodel := client.GenerativeModel("gemini-pro-vision")

data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
  log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
  log.Fatal(err)
}

برای مثال کامل به آموزش Go مراجعه کنید.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
    mimeType: "image/png",
  },
};

const result = await model.generateContent([prompt, image]);
console.log(result.response.text());

برای مثال کامل به آموزش Node.js مراجعه کنید.

وب

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: base64EncodedImage /* see JavaScript quickstart for details */,
    mimeType: "image/png",
  },
};

const result = await model.generateContent([prompt, image]);
console.log(result.response.text());

برای مثال کامل به آموزش وب مراجعه کنید.

دارت (فلاتر)

final model = GenerativeModel(model: 'gemini-pro-vision', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
  Content.multi([
    TextPart(prompt),
    DataPart('image/png', imageBytes),
  ])
];

final response = await model.generateContent(content);
print(response.text);

برای مثال کامل آموزش Dart (Flutter) را ببینید.

سریع

let model = GenerativeModel(name: "gemini-pro-vision", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"

let response = try await model.generateContent(prompt, cookieImage)

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

اندروید

val generativeModel = GenerativeModel(
    modelName = "gemini-pro-vision",
    apiKey = BuildConfig.apiKey
)

val cookieImage: Bitmap = // ...
val inputContent = content() {
  image(cookieImage)
  text("Do these look store-bought or homemade?")
}

val response = generativeModel.generateContent(inputContent)
print(response.text)

برای مثال کامل به آموزش اندروید مراجعه کنید.

حلقه

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro-vision:generateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @<(echo'{
          "contents":[
            { "parts":[
                {"text": "Do these look store-bought or homemade?"},
                { "inlineData": {
                    "mimeType": "image/png",
                    "data": "'$(base64 -w0 cookie.png)'"
                  }
                }
              ]
            }
          ]
         }')

برای جزئیات بیشتر به آموزش REST API مراجعه کنید.

ورودی فقط متن

Gemini API همچنین می تواند ورودی فقط متنی را مدیریت کند. این ویژگی به شما امکان می دهد وظایف پردازش زبان طبیعی (NLP) مانند تکمیل و خلاصه سازی متن را انجام دهید.

مثال‌های کد زیر اجرای ساده یک اعلان متنی را برای هر زبان پشتیبانی شده نشان می‌دهند:

پایتون

model = genai.GenerativeModel('gemini-pro-vision')

prompt = "Write a story about a magic backpack."

response = model.generate_content(prompt)

برای مشاهده مثال کامل به آموزش پایتون مراجعه کنید.

برو

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
  log.Fatal(err)
}

برای مثال کامل به آموزش Go مراجعه کنید.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

برای مثال کامل به آموزش Node.js مراجعه کنید.

وب

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

برای مثال کامل به آموزش وب مراجعه کنید.

دارت (فلاتر)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);

برای مثال کامل آموزش Dart (Flutter) را ببینید.

سریع

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let response = try await model.generateContent(prompt)

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

اندروید

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)

برای مثال کامل به آموزش اندروید مراجعه کنید.

حلقه

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[
      { "parts":[{"text": "Write a story about a magic backpack"}]}
    ]
}'

برای جزئیات بیشتر به آموزش REST API مراجعه کنید.

مکالمات چند نوبتی (چت)

می توانید از Gemini API برای ایجاد تجربه های چت تعاملی برای کاربران خود استفاده کنید. استفاده از ویژگی چت API به شما این امکان را می دهد که چندین دور سوال و پاسخ جمع آوری کنید و به کاربران این امکان را می دهد که به تدریج به سمت پاسخ ها قدم بردارند یا برای مشکلات چند قسمتی کمک بگیرند. این ویژگی برای برنامه هایی که نیاز به ارتباط مداوم دارند، مانند ربات های چت، معلمان تعاملی یا دستیاران پشتیبانی مشتری ایده آل است.

نمونه کد زیر اجرای ساده تعامل چت را برای هر زبان پشتیبانی شده نشان می دهد:

پایتون

  model = genai.GenerativeModel('gemini-pro')
  chat = model.start_chat(history=[])

  response = chat.send_message(
      "Pretend you\'re a snowman and stay in character for each response.")
  print(response.text)

  response = chat.send_message(
      "What\'s your favorite season of the year?")
  print(response.text)

برای مثال کامل، دمو چت را در آموزش پایتون ببینید.

برو

model := client.GenerativeModel("gemini-pro")
cs := model.StartChat()
cs.History = []*genai.Content{
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Pretend you're a snowman and stay in character for each response."),
    },
    Role: "user",
  },
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Hello! It's cold! Isn't that great?"),
    },
    Role: "model",
  },
}

resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
  log.Fatal(err)
}

برای مثال کامل، دمو چت را در آموزش Go ببینید.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

برای مثال کامل، دمو چت را در آموزش Node.js ببینید.

وب

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's so cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

برای مثال کامل، دمو چت را در آموزش وب مشاهده کنید.

دارت (فلاتر)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final chat = model.startChat(history: [
  Content.text(
      "Pretend you're a snowman and stay in character for each response."),
  Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);

برای مثال کامل، دمو چت را در آموزش Dart (Flutter) ببینید.

سریع

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let chat = model.startChat()

var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)

message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)

برای مثال کامل، دمو چت را در آموزش سوئیفت ببینید.

اندروید

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
        character for each response.")
print(response.text)

برای مثال کامل به آموزش اندروید مراجعه کنید.

حلقه

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Pretend you're a snowman and stay in character for each
        {"role": "model",
            response."}]},
         "parts":[{
           "text": "Hello! It's so cold! Isn't that great?"}]},
        {"role": "user",
         "parts":[{
           "text": "What\'s your favorite season of the year?"}]},
       ]
    }' 2> /dev/null | grep "text"
# response example:
"text": "Winter, of course!"

برای جزئیات بیشتر به آموزش REST API مراجعه کنید.

پاسخ های جریانی

Gemini API راه دیگری برای دریافت پاسخ‌ها از مدل‌های هوش مصنوعی مولد فراهم می‌کند: به عنوان یک جریان داده. یک پاسخ جریانی، تکه‌های افزایشی داده را همانطور که توسط مدل تولید می‌شود، به برنامه شما برمی‌گرداند. این ویژگی به شما امکان می دهد برای نشان دادن پیشرفت و ایجاد یک تجربه تعاملی تر به درخواست کاربر به سرعت پاسخ دهید.

پاسخ های جریانی گزینه ای برای درخواست فرم آزاد و چت با مدل های Gemini هستند. مثال‌های کد زیر نشان می‌دهند که چگونه می‌توان برای هر زبان پشتیبانی شده، یک پاسخ جریانی درخواست کرد:

پایتون

prompt = "Write a story about a magic backpack."

response = genai.stream_generate_content(
    model="models/gemini-pro",
    prompt=prompt
)

برای دیدن قطعه کد کامل به آموزش پایتون مراجعه کنید.

برو

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")

iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
  resp, err := iter.Next()
  if err == iterator.Done {
    break
  }
  if err != nil {
    log.Fatal(err)
  }

  // print resp
}

برای مثال کامل به آموزش Go مراجعه کنید.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}

برای مثال کامل به آموزش Node.js مراجعه کنید.

وب

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}

برای مثال کامل به آموزش وب مراجعه کنید.

دارت (فلاتر)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
  print(chunk.text);
}

برای مثال کامل آموزش Dart (Flutter) را ببینید.

سریع

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let stream = model.generateContentStream(prompt)
for try await chunk in stream {
  print(chunk.text ?? "No content")
}

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

اندروید

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val inputContent = content {
  text("Write a story about a magic backpack.")
}

var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
  print(chunk.text)
  fullResponse += chunk.text
}

برای مثال کامل به آموزش اندروید مراجعه کنید.

حلقه

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:streamGenerateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    --no-buffer \
    -d '{ "contents":[
            {"role": "user",
              "parts":[{"text": "Write a story about a magic backpack."}]
            }
          ]
        }' > response.json

برای جزئیات بیشتر به آموزش REST API مراجعه کنید.

پاسخ های فرمت JSON

بسته به برنامه شما، ممکن است بخواهید پاسخ به یک درخواست در قالب داده های ساخت یافته بازگردانده شود، به خصوص اگر از پاسخ ها برای پر کردن رابط های برنامه نویسی استفاده می کنید. Gemini API یک پارامتر پیکربندی برای درخواست پاسخ در قالب JSON ارائه می دهد.

شما از این ویژگی خروجی با تنظیم گزینه پیکربندی response_mime_type روی application/json و گنجاندن مشخصات فرمت JSON در متن درخواست خود استفاده می کنید. مثال کد زیر نحوه درخواست پاسخ JSON را برای یک درخواست نشان می دهد:

حلقه

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[{
            "parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
          "generationConfig": {
            "response_mime_type": "application/json",
          } }'

جاسازی ها

سرویس جاسازی در Gemini API جاسازی های پیشرفته ای را برای کلمات، عبارات و جملات ایجاد می کند. تعبیه‌های به‌دست‌آمده می‌توانند برای کارهای NLP، مانند جستجوی معنایی، طبقه‌بندی متن، و خوشه‌بندی و بسیاری موارد دیگر استفاده شوند. راهنمای جاسازی‌ها را ببینید تا بدانید جاسازی‌ها چیست و برخی موارد استفاده کلیدی برای سرویس جاسازی برای کمک به شما در شروع کار.

مراحل بعدی

  • با استفاده از Google AI Studio UI شروع به کار کنید.
  • دسترسی سمت سرور به Gemini API را با آموزش های Python ، Go ، یا Node.js امتحان کنید.
  • ساخت وب را با آموزش وب شروع کنید.
  • با آموزش سوئیفت یا آموزش اندروید شروع به ساخت برنامه های تلفن همراه کنید.
  • اگر کاربر فعلی Google Cloud هستید (یا می‌خواهید از Gemini در Vertex برای استفاده از اکوسیستم قدرتمند Google Cloud استفاده کنید)، برای اطلاعات بیشتر ، هوش مصنوعی Generative در Vertex AI را بررسی کنید.