Firebase Genkit

জেনকিট হল একটি ফ্রেমওয়ার্ক যা আপনাকে এআই-চালিত অ্যাপ্লিকেশন এবং বৈশিষ্ট্যগুলি তৈরি করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। এটি Node.js এবং Go-এর জন্য ওপেন সোর্স লাইব্রেরি প্রদান করে, এছাড়াও টেস্টিং এবং ডিবাগিংয়ের জন্য ডেভেলপার টুল।

এই ডকুমেন্টেশন Node.js এর জন্য Genkit কভার করে। আপনি যদি একজন Go বিকাশকারী হন, Genkit Go ডকুমেন্টেশন দেখুন।

Node.js সমর্থিত যে কোন জায়গায় আপনি Genkit লাইব্রেরি স্থাপন ও চালাতে পারেন। এটি যেকোন জেনারেটিভ এআই মডেল এপিআই বা ভেক্টর ডাটাবেসের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। যদিও আমরা Firebase এবং Google ক্লাউডের জন্য ইন্টিগ্রেশন অফার করি, আপনি Genkit যেকোনও Google পরিষেবা থেকে স্বাধীনভাবে ব্যবহার করতে পারেন।

শুরু করুন

মূল ক্ষমতা

এআই জেনারেশনের জন্য ইউনিফাইড এপিআই বিভিন্ন এআই মডেল থেকে সামগ্রী তৈরি বা স্ট্রিম করতে একটি API ব্যবহার করুন। মাল্টিমডাল ইনপুট/আউটপুট এবং কাস্টম মডেল সেটিংসের সাথে কাজ করে।
স্ট্রাকচার্ড আউটপুট অন্তর্নির্মিত বৈধতা সহ স্ট্রাকচার্ড অবজেক্ট (যেমন JSON) তৈরি বা স্ট্রিম করুন। আপনার অ্যাপের সাথে ইন্টিগ্রেশন সহজ করুন এবং অসংগঠিত ডেটাকে ব্যবহারযোগ্য বিন্যাসে রূপান্তর করুন।
টুল কলিং AI মডেলগুলিকে আপনার ফাংশন এবং APIগুলিকে কাজগুলি সম্পূর্ণ করার সরঞ্জাম হিসাবে কল করতে দিন। মডেল কখন এবং কোন সরঞ্জামগুলি ব্যবহার করবে তা নির্ধারণ করে।
চ্যাট Genkit একটি চ্যাট-নির্দিষ্ট API অফার করে যা AI মডেলগুলির সাথে বহু-পালা কথোপকথনের সুবিধা দেয়, যা স্টেটফুল এবং স্থায়ী হতে পারে।
এজেন্ট বুদ্ধিমান এজেন্ট তৈরি করুন যা জটিল কাজ এবং কর্মপ্রবাহ স্বয়ংক্রিয় করতে সহায়তা করার জন্য সরঞ্জাম (অন্যান্য এজেন্ট সহ) ব্যবহার করে।
তথ্য পুনরুদ্ধার আপনার ডেটা একত্রিত করে উত্পন্ন আউটপুটের নির্ভুলতা এবং প্রাসঙ্গিকতা উন্নত করুন। সাধারণ APIগুলি আপনাকে বিভিন্ন উত্স থেকে এম্বেড, সূচক এবং তথ্য পুনরুদ্ধার করতে সহায়তা করে।
প্রম্পট টেমপ্লেটিং কার্যকর প্রম্পট তৈরি করুন যাতে সমৃদ্ধ পাঠ্য টেমপ্লেটিং, মডেল সেটিংস, মাল্টিমোডাল সমর্থন, এবং টুল ইন্টিগ্রেশন অন্তর্ভুক্ত থাকে - সবই একটি কমপ্যাক্ট, রানেবল প্রম্পট ফাইলের মধ্যে।

কোডে এই ক্ষমতাগুলি কীভাবে ব্যবহার করবেন তার একটি নির্দিষ্ট ধারণার জন্য নিম্নলিখিত কোড নমুনাগুলি দেখুন:

মৌলিক প্রজন্ম

import { genkit } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,  // Set default model
});

// Simple generation
const { text } = await ai.generate('Why is AI awesome?');
console.log(text);

// Streamed generation 
const { stream } = await ai.generateStream('Tell me a story');
for await (const chunk of stream) {
  console.log(chunk.text);
}

স্ট্রাকচার্ড আউটপুট

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

const { output } = await ai.generate({
  prompt: 'Create a brief profile for a character in a fantasy video game.',
  // Specify output structure using Zod schema
  output: {
    format: 'json',  
    schema: z.object({
      name: z.string(),
      role: z.enum(['knight', 'mage', 'archer']),
      backstory: z.string(),
    }),
  },
});

console.log(output);

ফাংশন কলিং

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

// Define tool to get current weather for a given location
const getWeather = ai.defineTool(
  {
    name: "getWeather",
    description: "Gets the current weather in a given location",
    inputSchema: z.object({ 
      location: z.string().describe('The location to get the current weather for')
    }),
    outputSchema: z.string(),
  },
  async (input) => {
    // Here, we would typically make an API call or database query. For this
    // example, we just return a fixed value.
    return `The current weather in ${input.location} is 63°F and sunny.`;
  }
);

const { text } = await ai.generate({
    tools: [getWeather], // Give the model a list of tools it can call
    prompt: 'What is the weather like in New York? ',
});

console.log(text);

চ্যাট

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

const chat = ai.chat({ system: 'Talk like a pirate' });

let response = await chat.send('Hi, my name is Pavel');

response = await chat.send('What is my name?');
console.log(response.text);
// Ahoy there! Your name is Pavel, you scurvy dog

এজেন্ট

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

// Define prompts that represent specialist agents
const reservationAgent = ai.definePrompt(
  {
    name: 'reservationAgent',
    description: 'Reservation Agent can help manage guest reservations',
    tools: [reservationTool, reservationCancelationTool, reservationListTool],

  },
  `{{role "system"}} Help guests make and manage reservations`
);

const menuInfoAgent = ...
const complaintAgent = ...

// Define a triage agent that routes to the proper specialist agent
const triageAgent = ai.definePrompt(
  {
    name: 'triageAgent',
    description: 'Triage Agent',
    tools: [reservationAgent, menuInfoAgent, complaintAgent],
  },
  `{{role "system"}} You are an AI customer service agent for Pavel's Cafe.
  Greet the user and ask them how you can help. If appropriate, transfer to an
  agent that can better handle the request. If you cannot help the customer with
  the available tools, politely explain so.`
);

// Create a chat to enable multi-turn agent interactions
const chat = ai.chat(triageAgent);

chat.send('I want a reservation at Pavel\'s Cafe for noon on Tuesday.' );

তথ্য পুনরুদ্ধার

import { genkit } from 'genkit';
import { googleAI, gemini15Flash, textEmbedding004 } from '@genkit-ai/googleai';
import { devLocalRetrieverRef } from '@genkit-ai/dev-local-vectorstore';

const ai = genkit({ 
  plugins: [
    googleAI()
    devLocalVectorstore([
      {
        indexName: 'BobFacts',
        embedder: textEmbedding004,
      },
    ]),
  ],
  model: gemini15Flash,
});

// Reference to a local vector database storing Genkit documentation
const retriever = devLocalRetrieverRef('BobFacts');

// Consistent API to retrieve most relevant documents based on semantic similarity to query
const docs = await ai.retrieve(
  retriever: retriever,
  query: 'How old is bob?',
);

const result = await ai.generate({
    prompt: `Use the provided context from the Genkit documentation to answer this query: ${query}`,
    docs // Pass retrieved documents to the model
});

প্রম্পট টেমপ্লেট

---
model: vertexai/gemini-1.5-flash
config:
  temperature: 0.9
input:
  schema:
    properties:
      location: {type: string}
      style: {type: string}
      name: {type: string}
    required: [location]
  default:
    location: a restaurant
---

You are the most welcoming AI assistant and are currently working at {{location}}.

Greet a guest{{#if name}} named {{name}}{{/if}}{{#if style}} in the style of {{style}}{{/if}}.

উন্নয়ন সরঞ্জাম

জেনকিট একটি কমান্ড-লাইন ইন্টারফেস (সিএলআই) এবং একটি স্থানীয় বিকাশকারী UI প্রদান করে যাতে এআই অ্যাপ্লিকেশন তৈরি করা সহজ হয়। এই সরঞ্জামগুলি আপনাকে সাহায্য করে:

  • পরীক্ষা: আপনার AI ফাংশন, প্রম্পট এবং প্রশ্নগুলি পরীক্ষা করুন এবং পরিমার্জন করুন।
  • ডিবাগ: বিস্তারিত এক্সিকিউশন ট্রেস সহ সমস্যাগুলি খুঁজুন এবং ঠিক করুন।
  • মূল্যায়ন করুন: একাধিক পরীক্ষার ক্ষেত্রে উত্পন্ন ফলাফল মূল্যায়ন করুন।

আমাদের সাথে সংযোগ করুন

  • সম্প্রদায়ে যোগ দিন: আপডেট থাকুন, প্রশ্ন জিজ্ঞাসা করুন এবং আমাদের ডিসকর্ড সার্ভারে আপনার কাজ শেয়ার করুন।
  • প্রতিক্রিয়া প্রদান করুন: আমাদের GitHub সমস্যা ট্র্যাকার ব্যবহার করে সমস্যাগুলি রিপোর্ট করুন বা নতুন বৈশিষ্ট্যগুলির পরামর্শ দিন।

পরবর্তী পদক্ষেপ

কিভাবে Genkit এর সাথে আপনার প্রথম AI অ্যাপ্লিকেশন তৈরি করবেন তা আমাদের শুরু করুন গাইডে শিখুন।