با استفاده از Gemini API متن تولید کنید

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

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

قبل از شروع: پروژه و کلید API خود را تنظیم کنید

قبل از فراخوانی Gemini API، باید پروژه خود را راه اندازی کرده و کلید API خود را پیکربندی کنید.

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

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

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

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType,
    },
  };
}

const prompt = "Describe how this product might be manufactured.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
  `${mediaPath}/jetpack.jpg`,
  "image/jpeg",
);

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

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

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

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();
  process.stdout.write(chunkText);
}

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessageStream("I have 2 dogs in my house.");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}
result = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  generationConfig: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

const result = await model.generateContent(
  "Tell me a story about a magic backpack.",
);
console.log(result.response.text());

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

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

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

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

همچنین می توانید تماس های فردی را برای generateContent پیکربندی کنید:

const result = await model.generateContent({
  contents: [
    {
      role: 'user',
      parts: [
        {
          text: prompt,
        }
      ],
    }
  ],
  generationConfig: {
    maxOutputTokens: 1000,
    temperature: 0.1,
  },
});
console.log(result.response.text());

هر مقداری که روی فراخوانی فردی تنظیم شده باشد، مقادیر سازنده مدل را لغو می کند.

بعدش چی

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

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