টিউটোরিয়াল: Gemini API দিয়ে শুরু করুন


এই টিউটোরিয়ালটি গুগল এআই জিও এসডিকে ব্যবহার করে আপনার জিও অ্যাপ্লিকেশনটির জন্য জেমিনি এপিআই কীভাবে অ্যাক্সেস করবেন তা প্রদর্শন করে।

এই টিউটোরিয়ালে, আপনি নিম্নলিখিতগুলি কীভাবে করবেন তা শিখবেন:

তদতিরিক্ত, এই টিউটোরিয়ালটিতে উন্নত ব্যবহারের কেসগুলি (যেমন এম্বেডিং এবং গণনা টোকেন ) সম্পর্কিত বিভাগগুলি পাশাপাশি সামগ্রী উত্পাদন নিয়ন্ত্রণের বিকল্প রয়েছে।

পূর্বশর্ত

এই টিউটোরিয়ালটি ধরে নিয়েছে যে আপনি জিও সহ বিল্ডিং অ্যাপ্লিকেশনগুলির সাথে পরিচিত।

এই টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনার বিকাশের পরিবেশটি নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করেছে তা নিশ্চিত করুন:

  • যান 1.20+

আপনার প্রকল্প সেট আপ করুন

জেমিনি এপিআই কল করার আগে আপনাকে আপনার প্রকল্পটি সেট আপ করতে হবে, যার মধ্যে আপনার এপিআই কী সেট আপ করা, এসডিকে প্যাকেজটি ইনস্টল করা এবং মডেলটি সূচনা করা অন্তর্ভুক্ত রয়েছে।

আপনার এপিআই কী সেট আপ করুন

Gemini API ব্যবহার করতে, আপনার একটি API কী প্রয়োজন। আপনার যদি ইতিমধ্যে একটি না থাকে তবে গুগল এআই স্টুডিওতে একটি কী তৈরি করুন।

একটি API কী পান

আপনার এপিআই কীটি সুরক্ষিত করুন

এটি দৃ strongly ়ভাবে সুপারিশ করা হয় যে আপনি আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে কোনও এপিআই কী পরীক্ষা করবেন না । পরিবর্তে, আপনার এপিআই কীটির জন্য আপনার একটি সিক্রেটস স্টোর ব্যবহার করা উচিত।

এই টিউটোরিয়ালের সমস্ত স্নিপেটগুলি ধরে নিয়েছে যে আপনি পরিবেশের পরিবর্তনশীল হিসাবে আপনার এপিআই কীটি অ্যাক্সেস করছেন।

এসডিকে প্যাকেজ ইনস্টল করুন

আপনার নিজের অ্যাপ্লিকেশনটিতে জেমিনি এপিআই ব্যবহার করতে, আপনার মডিউল ডিরেক্টরিতে আপনাকে গো এসডিকে প্যাকেজটি get হবে:

go get github.com/google/generative-ai-go

জেনারেটর মডেল আরম্ভ করুন

আপনি কোনও এপিআই কল করার আগে আপনাকে জেনারেটর মডেলটি আমদানি এবং সূচনা করতে হবে।

import "github.com/google/generative-ai-go/genai"
import "google.golang.org/api/option"

ctx := context.Background()
// Access your API key as an environment variable (see "Set up your API key" above)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

// The Gemini 1.5 models are versatile and work with most use cases
model := client.GenerativeModel("gemini-1.5-flash")

কোনও মডেল নির্দিষ্ট করার সময়, নিম্নলিখিতগুলি নোট করুন:

  • আপনার ব্যবহারের ক্ষেত্রে নির্দিষ্ট এমন একটি মডেল ব্যবহার করুন (উদাহরণস্বরূপ, gemini-1.5-flash মাল্টিমোডাল ইনপুটটির জন্য)। এই গাইডের মধ্যে, প্রতিটি বাস্তবায়নের জন্য নির্দেশাবলী প্রতিটি ব্যবহারের ক্ষেত্রে প্রস্তাবিত মডেল তালিকাভুক্ত করে।

সাধারণ ব্যবহারের ক্ষেত্রে প্রয়োগ করুন

এখন আপনার প্রকল্পটি সেট আপ হয়েছে, আপনি বিভিন্ন ব্যবহারের ক্ষেত্রে বাস্তবায়নের জন্য জেমিনি এপিআই ব্যবহার করে অন্বেষণ করতে পারেন:

অ্যাডভান্সড ইউজ কেস বিভাগে, আপনি জেমিনি এপিআই এবং এম্বেডিং সম্পর্কে তথ্য পেতে পারেন।

কেবল পাঠ্য-ইনপুট থেকে পাঠ্য তৈরি করুন

যখন প্রম্পট ইনপুটটিতে কেবল পাঠ্য অন্তর্ভুক্ত থাকে, তখন পাঠ্য আউটপুট উত্পন্ন করতে generateContent সহ একটি মিথুন 1.5 মডেল বা জেমিনি 1.0 প্রো মডেল ব্যবহার করুন:

ctx := context.Background()
// Access your API key as an environment variable (see "Set up your API key" above)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
model := client.GenerativeModel("gemini-1.5-flash")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
  log.Fatal(err)
}

পাঠ্য এবং চিত্র ইনপুট থেকে পাঠ্য উত্পন্ন করুন (মাল্টিমোডাল)

জেমিনি বিভিন্ন মডেল সরবরাহ করে যা মাল্টিমোডাল ইনপুট (জেমিনি 1.5 মডেল) পরিচালনা করতে পারে যাতে আপনি পাঠ্য এবং চিত্র উভয়ই ইনপুট করতে পারেন। প্রম্পটগুলির জন্য চিত্রের প্রয়োজনীয়তাগুলি পর্যালোচনা করার বিষয়টি নিশ্চিত করুন।

যখন প্রম্পট ইনপুটটিতে পাঠ্য এবং চিত্র উভয়ই অন্তর্ভুক্ত থাকে, তখন পাঠ্য আউটপুট উত্পন্ন করতে generateContent পদ্ধতি সহ একটি মিথুন 1.5 মডেল ব্যবহার করুন:

ctx := context.Background()
// Access your API key as an environment variable (see "Set up your API key" above)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
model := client.GenerativeModel("gemini-1.5-flash")

imgData1, err := os.ReadFile(pathToImage1)
if err != nil {
  log.Fatal(err)
}

imgData2, err := os.ReadFile(pathToImage1)
if err != nil {
  log.Fatal(err)
}

prompt := []genai.Part{
  genai.ImageData("jpeg", imgData1),
  genai.ImageData("jpeg", imgData2),
  genai.Text("What's different between these two pictures?"),
}
resp, err := model.GenerateContent(ctx, prompt...)

if err != nil {
  log.Fatal(err)
}

মাল্টি-টার্ন কথোপকথন (চ্যাট) তৈরি করুন

জেমিনি ব্যবহার করে আপনি একাধিক টার্ন জুড়ে ফ্রিফর্ম কথোপকথন তৈরি করতে পারেন। এসডিকে কথোপকথনের অবস্থা পরিচালনা করে প্রক্রিয়াটিকে সহজতর করে, তাই GenerateContent বিপরীতে, আপনাকে কথোপকথনের ইতিহাস নিজেই সঞ্চয় করতে হবে না।

একটি মাল্টি-টার্ন কথোপকথন (চ্যাটের মতো) তৈরি করতে, একটি জেমিনি 1.5 মডেল বা জেমিনি 1.0 প্রো মডেল ব্যবহার করুন এবং startChat() কল করে চ্যাটটি আরম্ভ করুন। তারপরে একটি নতুন ব্যবহারকারী বার্তা প্রেরণের জন্য sendMessage() ব্যবহার করুন, যা চ্যাটের ইতিহাসের বার্তা এবং প্রতিক্রিয়াও সংযোজন করবে।

কথোপকথনে সামগ্রীর সাথে যুক্ত role জন্য দুটি সম্ভাব্য বিকল্প রয়েছে:

  • user : ভূমিকা যা প্রম্পট সরবরাহ করে। এই মানটি SendMessage কলগুলির জন্য ডিফল্ট।

  • model : ভূমিকা যা প্রতিক্রিয়া সরবরাহ করে। বিদ্যমান history সাথে StartChat() কল করার সময় এই ভূমিকাটি ব্যবহার করা যেতে পারে।

ctx := context.Background()
// Access your API key as an environment variable (see "Set up your API key" above)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

// The Gemini 1.5 models are versatile and work with multi-turn conversations (like chat)
model := client.GenerativeModel("gemini-1.5-flash")
// Initialize the chat
cs := model.StartChat()
cs.History = []*genai.Content{
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Hello, I have 2 dogs in my house."),
    },
    Role: "user",
  },
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Great to meet you. What would you like to know?"),
    },
    Role: "model",
  },
}

resp, err := cs.SendMessage(ctx, genai.Text("How many paws are in my house?"))
if err != nil {
  log.Fatal(err)
}

দ্রুত মিথস্ক্রিয়া জন্য স্ট্রিমিং ব্যবহার করুন

ডিফল্টরূপে, মডেল পুরো প্রজন্মের প্রক্রিয়াটি শেষ করার পরে একটি প্রতিক্রিয়া প্রদান করে। আপনি পুরো ফলাফলের জন্য অপেক্ষা না করে দ্রুত ইন্টারঅ্যাকশন অর্জন করতে পারেন এবং পরিবর্তে আংশিক ফলাফলগুলি পরিচালনা করতে স্ট্রিমিং ব্যবহার করতে পারেন।

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে একটি পাঠ্য-চিত্র ইনপুট প্রম্পট থেকে পাঠ্য তৈরি করতে GenerateContentStream পদ্ধতির সাথে স্ট্রিমিং প্রয়োগ করা যায়।

ctx := context.Background()
// Access your API key as an environment variable (see "Set up your API key" above)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
model := client.GenerativeModel("gemini-1.5-flash")

imageBytes, err := os.ReadFile(pathToImage)

img := genai.ImageData("jpeg", imageBytes)
prompt := genai.Text("Tell me a story about this animal")
iter := model.GenerateContentStream(ctx, img, prompt)

for {
  resp, err := iter.Next()
  if err == iterator.Done {
    break
  }
  if err != nil {
    log.Fatal(err)
  }

  // ... print resp
}

আপনি কেবল পাঠ্য-ইনপুট এবং চ্যাট ব্যবহারের ক্ষেত্রে অনুরূপ পদ্ধতির ব্যবহার করতে পারেন।

prompt := genai.Text("Tell me a story about a lumberjack and his giant ox")
iter := model.GenerateContentStream(ctx, prompt)
prompt := genai.Text("And how do you feel about that?")
iter := cs.SendMessageStream(ctx, prompt)

উন্নত ব্যবহারের কেসগুলি প্রয়োগ করুন

এই টিউটোরিয়ালটির পূর্ববর্তী বিভাগে বর্ণিত সাধারণ ব্যবহারের কেসগুলি আপনাকে জেমিনি এপিআই ব্যবহারে স্বাচ্ছন্দ্য বোধ করতে সহায়তা করে। এই বিভাগটি এমন কিছু ব্যবহারের ক্ষেত্রে বর্ণনা করে যা আরও উন্নত হিসাবে বিবেচিত হতে পারে।

এম্বেডিং ব্যবহার করুন

এম্বেডিং একটি অ্যারেতে ভাসমান পয়েন্ট সংখ্যার তালিকা হিসাবে তথ্য উপস্থাপনের জন্য ব্যবহৃত একটি কৌশল। জেমিনি দিয়ে, আপনি একটি ভেক্টরাইজড আকারে পাঠ্য (শব্দ, বাক্য এবং পাঠ্যের ব্লক) উপস্থাপন করতে পারেন, যা এম্বেডিংগুলির তুলনা করা এবং বিপরীতে করা সহজ করে তোলে। উদাহরণস্বরূপ, দুটি পাঠ্য যা অনুরূপ বিষয় বা অনুভূতির সাথে ভাগ করে নেয় এমন একই এম্বেডিং থাকতে হবে, যা গাণিতিক তুলনা কৌশল যেমন কোসাইন মিলের মতো চিহ্নিত করা যেতে পারে।

এম্বেডিংগুলি তৈরি করতে EmbedContent পদ্ধতি (বা BatchEmbedContent পদ্ধতি) সহ embedding-001 মডেলটি ব্যবহার করুন। নিম্নলিখিত উদাহরণটি একটি একক স্ট্রিংয়ের জন্য এম্বেডিং উত্পন্ন করে:

ctx := context.Background()
// Access your API key as an environment variable (see "Set up your API key" above)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()
// For embeddings, use the embedding-001 model
em := client.EmbeddingModel("embedding-001")
res, err := em.EmbedContent(ctx, genai.Text("The quick brown fox jumps over the lazy dog."))

if err != nil {
  panic(err)
}
fmt.Println(res.Embedding.Values)

ফাংশন কলিং

ফাংশন কলিং আপনার পক্ষে জেনারেটর মডেলগুলি থেকে কাঠামোগত ডেটা আউটপুট পাওয়া সহজ করে তোলে। তারপরে আপনি অন্যান্য এপিআইগুলিকে কল করতে এবং মডেলটিতে প্রাসঙ্গিক প্রতিক্রিয়া ডেটা ফিরিয়ে দিতে এই আউটপুটগুলি ব্যবহার করতে পারেন। অন্য কথায়, ফাংশন কলিং আপনাকে জেনারেটর মডেলগুলিকে বাহ্যিক সিস্টেমে সংযুক্ত করতে সহায়তা করে যাতে উত্পন্ন সামগ্রীতে সর্বাধিক আপ-টু-ডেট এবং সঠিক তথ্য অন্তর্ভুক্ত থাকে। ফাংশন কলিং টিউটোরিয়ালটিতে আরও জানুন।

টোকেন গণনা করুন

দীর্ঘ প্রম্পটগুলি ব্যবহার করার সময়, মডেলটিতে কোনও সামগ্রী প্রেরণের আগে টোকেনগুলি গণনা করা কার্যকর হতে পারে। নিম্নলিখিত উদাহরণগুলি বিভিন্ন ব্যবহারের ক্ষেত্রে কীভাবে CountTokens() ব্যবহার করতে হয় তা দেখায়:

// For text-only input
text := "Parrots can be green and live a long time."
resp, err := model.CountTokens(ctx, genai.Text(text))
if err != nil {
  log.Fatal(err)
}
fmt.Println(resp.TotalTokens)
// For text-and-image input (multimodal)
text := "Parrots can be green and live a long time."
imageBytes, err := os.ReadFile(pathToImage)
if err != nil {
  log.Fatal(err)
}

resp, err := model.CountTokens(
    ctx,
    genai.Text(text),
    genai.ImageData("png", imageBytes))
  if err != nil {
    log.Fatal(err)
}
fmt.Println(resp.TotalTokens)

বিষয়বস্তু জেনারেশন নিয়ন্ত্রণ করার বিকল্পগুলি

আপনি মডেল পরামিতিগুলি কনফিগার করে এবং সুরক্ষা সেটিংস ব্যবহার করে সামগ্রী প্রজন্মকে নিয়ন্ত্রণ করতে পারেন।

মডেল পরামিতিগুলি কনফিগার করুন

আপনি মডেলটিতে প্রেরণ করা প্রতিটি প্রম্পটে প্যারামিটার মানগুলি অন্তর্ভুক্ত করে যা মডেল কীভাবে প্রতিক্রিয়া তৈরি করে তা নিয়ন্ত্রণ করে। মডেলটি বিভিন্ন প্যারামিটার মানগুলির জন্য বিভিন্ন ফলাফল তৈরি করতে পারে। মডেল পরামিতি সম্পর্কে আরও জানুন। কনফিগারেশনটি আপনার মডেল উদাহরণের আজীবন বজায় রাখা হয়।

// ...

// The Gemini 1.5 models are versatile and work with most use cases
model := client.GenerativeModel("gemini-1.5-flash")

// Configure model parameters by invoking Set* methods on the model.
model.SetTemperature(0.9)
model.SetTopK(1)

// ...

সুরক্ষা সেটিংস ব্যবহার করুন

ক্ষতিকারক হিসাবে বিবেচিত হতে পারে এমন প্রতিক্রিয়া পাওয়ার সম্ভাবনা সামঞ্জস্য করতে আপনি সুরক্ষা সেটিংস ব্যবহার করতে পারেন। ডিফল্টরূপে, সুরক্ষা সেটিংস সমস্ত মাত্রায় অনিরাপদ সামগ্রী হওয়ার মাঝারি এবং/অথবা উচ্চ সম্ভাবনা সহ সামগ্রীগুলি ব্লক করে। সুরক্ষা সেটিংস সম্পর্কে আরও জানুন।

কীভাবে একটি সুরক্ষা সেটিং সেট করবেন তা এখানে:

// ...

// The Gemini 1.5 models are versatile and work with most use cases
model := client.GenerativeModel("gemini-1.5-flash")

model.SafetySettings = []*genai.SafetySetting{
  {
    Category:  genai.HarmCategoryHarassment,
    Threshold: genai.HarmBlockOnlyHigh,
  },
}

// ...

আপনি একাধিক সুরক্ষা সেটিং সেট করতে পারেন:

// ...

// The Gemini 1.5 models are versatile and work with most use cases
model := client.GenerativeModel("gemini-1.5-flash")

model.SafetySettings = []*genai.SafetySetting{
  {
    Category:  genai.HarmCategoryHarassment,
    Threshold: genai.HarmBlockOnlyHigh,
  },
  {
    Category:  genai.HarmCategoryHateSpeech,
    Threshold: genai.HarmBlockMediumAndAbove,
  },
}

// ...

এরপর কি

  • প্রম্পট ডিজাইন হ'ল প্রম্পট তৈরির প্রক্রিয়া যা ভাষার মডেলগুলি থেকে কাঙ্ক্ষিত প্রতিক্রিয়া প্রকাশ করে। ভাল কাঠামোগত প্রম্পটগুলি লেখা কোনও ভাষার মডেল থেকে সঠিক, উচ্চ মানের প্রতিক্রিয়া নিশ্চিত করার একটি অপরিহার্য অঙ্গ। প্রম্পট লেখার জন্য সেরা অনুশীলন সম্পর্কে শিখুন।

  • জেমিনি বিভিন্ন ব্যবহারের ক্ষেত্রে যেমন ইনপুট প্রকার এবং জটিলতা, চ্যাট বা অন্যান্য ডায়ালগ ভাষার কার্যগুলির জন্য বাস্তবায়ন এবং আকারের সীমাবদ্ধতাগুলির প্রয়োজন মেটাতে বেশ কয়েকটি মডেল বৈচিত্র সরবরাহ করে। উপলব্ধ জেমিনি মডেলগুলি সম্পর্কে জানুন।