প্রবাহ হল কিছু অতিরিক্ত বৈশিষ্ট্য সহ ফাংশন: এগুলি দৃঢ়ভাবে টাইপ করা, প্রবাহযোগ্য, স্থানীয়ভাবে এবং দূরবর্তীভাবে কলযোগ্য এবং সম্পূর্ণরূপে পর্যবেক্ষণযোগ্য। ফায়ারবেস জেনকিট ফ্লো (চলমান, ডিবাগিং ইত্যাদি) নিয়ে কাজ করার জন্য CLI এবং বিকাশকারী UI টুলিং প্রদান করে।
সংজ্ঞায়িত প্রবাহ
import { defineFlow } from '@genkit-ai/flow';
export const menuSuggestionFlow = defineFlow(
{
name: 'menuSuggestionFlow',
},
async (restaurantTheme) => {
const suggestion = makeMenuItemSuggestion(restaurantTheme);
return suggestion;
}
);
প্রবাহের জন্য ইনপুট এবং আউটপুট স্কিমা zod
ব্যবহার করে সংজ্ঞায়িত করা যেতে পারে।
import { defineFlow } from '@genkit-ai/flow';
import * as z from 'zod';
export const menuSuggestionFlow = defineFlow(
{
name: 'menuSuggestionFlow',
inputSchema: z.string(),
outputSchema: z.string(),
},
async (restaurantTheme) => {
const suggestion = makeMenuItemSuggestion(input.restaurantTheme);
return suggestion;
}
);
যখন স্কিমা নির্দিষ্ট করা হয় Genkit ইনপুট এবং আউটপুটগুলির জন্য স্কিমা যাচাই করবে।
চলমান প্রবাহ
প্রবাহ চালানোর জন্য runFlow
ফাংশন ব্যবহার করুন:
const response = await runFlow(menuSuggestionFlow, 'French');
আপনি প্রবাহ চালানোর জন্য CLI ব্যবহার করতে পারেন:
genkit flow:run menuSuggestionFlow '"French"'
প্রবাহিত
এখানে একটি প্রবাহের একটি সাধারণ উদাহরণ যা একটি প্রবাহ থেকে মানগুলি প্রবাহিত করতে পারে:
export const menuSuggestionFlow = defineFlow(
{
name: 'menuSuggestionFlow',
streamSchema: z.string(),
},
async (restaurantTheme, streamingCallback) => {
if (streamingCallback) {
makeMenuItemSuggestionsAsync(restaurantTheme).subscribe((suggestion) => {
streamingCallback(suggestion);
});
}
}
);
মনে রাখবেন যে streamingCallback
অনির্ধারিত হতে পারে। এটি শুধুমাত্র সংজ্ঞায়িত করা হয় যদি আহ্বানকারী ক্লায়েন্ট স্ট্রিমড প্রতিক্রিয়ার অনুরোধ করে।
স্ট্রিমিং মোডে একটি ফ্লো আনতে streamFlow
ফাংশন ব্যবহার করুন:
const response = streamFlow(menuSuggestionFlow, 'French');
for await (const suggestion of response.stream()) {
console.log('suggestion', suggestion);
}
যদি ফ্লো স্ট্রিমিং streamFlow
বাস্তবায়ন না করে তাহলে runFlow
সাথে অভিন্ন আচরণ করবে।
আপনি পাশাপাশি প্রবাহ স্ট্রিম করতে CLI ব্যবহার করতে পারেন:
genkit flow:run menuSuggestionFlow '"French"' -s
প্রবাহ স্থাপন
আপনি যদি HTTP এর মাধ্যমে আপনার প্রবাহ অ্যাক্সেস করতে সক্ষম হতে চান তবে আপনাকে প্রথমে এটি স্থাপন করতে হবে। Genkit Firebase এবং Express.js হোস্ট যেমন ক্লাউড রানের জন্য ক্লাউড ফাংশনের জন্য ইন্টিগ্রেশন প্রদান করে।
স্থাপন করা প্রবাহগুলি স্থানীয় প্রবাহের মতো একই বৈশিষ্ট্যগুলিকে সমর্থন করে (যেমন স্ট্রিমিং এবং পর্যবেক্ষণযোগ্যতা)।
ফায়ারবেসের জন্য ক্লাউড ফাংশন
Firebase-এর জন্য ক্লাউড ফাংশনগুলির সাথে ফ্লো ব্যবহার করতে firebase
প্লাগইন ব্যবহার করুন, defineFlow
onFlow
দিয়ে প্রতিস্থাপন করুন এবং একটি authPolicy
অন্তর্ভুক্ত করুন।
import { onFlow } from '@genkit-ai/firebase/functions';
import { firebaseAuth } from '@genkit-ai/firebase/auth';
export const menuSuggestionFlow = onFlow(
{
name: 'menuSuggestionFlow',
authPolicy: firebaseAuth((user) => {
if (!user.email_verified) {
throw new Error("Verified email required to run flow");
}
}
},
async (restaurantTheme) => {
// ....
}
);
Express.js
ক্লাউড রান এবং অনুরূপ পরিষেবাগুলি ব্যবহার করে প্রবাহ স্থাপন করতে, defineFlow
ব্যবহার করে আপনার প্রবাহকে সংজ্ঞায়িত করুন এবং তারপর startFlowsServer()
কল করুন :
import { defineFlow, startFlowsServer } from '@genkit-ai/flow';
export const menuSuggestionFlow = defineFlow(
{
name: 'menuSuggestionFlow',
},
async (restaurantTheme) => {
// ....
}
);
startFlowsServer();
ডিফল্টরূপে startFlowsServer
আপনার কোডবেসে HTTP এন্ডপয়েন্ট হিসাবে সংজ্ঞায়িত সমস্ত ফ্লো পরিবেশন করবে (যেমন http://localhost:3400/menuSuggestionFlow
)।
আপনি ফ্লো সার্ভারের মাধ্যমে কোন প্রবাহ প্রকাশ করা হবে তা চয়ন করতে পারেন। আপনি একটি কাস্টম পোর্ট নির্দিষ্ট করতে পারেন (সেট করা থাকলে এটি PORT
পরিবেশ পরিবর্তনশীল ব্যবহার করবে)। আপনি CORS সেটিংসও সেট করতে পারেন।
import { defineFlow, startFlowsServer } from '@genkit-ai/flow';
export const flowA = defineFlow({ name: 'flowA' }, async (subject) => {
// ....
});
export const flowB = defineFlow({ name: 'flowB' }, async (subject) => {
// ....
});
startFlowsServer({
flows: [flowB],
port: 4567,
cors: {
origin: '*',
},
});
প্রবাহ পর্যবেক্ষণযোগ্যতা
কখনও কখনও 3য় পক্ষের SDK ব্যবহার করার সময় যেগুলি পর্যবেক্ষণযোগ্যতার জন্য উপস্থাপিত নয়, আপনি সেগুলিকে বিকাশকারী UI-তে একটি পৃথক ট্রেস পদক্ষেপ হিসাবে দেখতে চাইতে পারেন৷ আপনাকে যা করতে হবে তা হল run
ফাংশনে কোডটি মোড়ানো।
import { defineFlow, run } from '@genkit-ai/flow';
export const menuSuggestionFlow = defineFlow(
{
name: 'menuSuggestionFlow',
outputSchema: z.array(s.string()),
},
async (restaurantTheme) => {
const themes = await run('find-similar-themes', async () => {
return await findSimilarRestaurantThemes(restaurantTheme);
});
const suggestions = makeMenuItemSuggestions(themes);
return suggestions;
}
);