অ্যাপফাংশনগুলি আপনার অ্যান্ড্রয়েড অ্যাপকে নির্দিষ্ট কার্যকারিতা ভাগ করে নেওয়ার অনুমতি দেয় যা সিস্টেম এবং বিভিন্ন এআই এজেন্ট এবং সহকারীরা আবিষ্কার করতে এবং ব্যবহার করতে পারে। এই ফাংশনগুলি সংজ্ঞায়িত করে, আপনি আপনার অ্যাপটিকে অ্যান্ড্রয়েড ওএসে পরিষেবা, ডেটা এবং ক্রিয়া সরবরাহ করতে সক্ষম করেন, ব্যবহারকারীদের এআই এজেন্ট এবং সিস্টেম-স্তরের ইন্টারঅ্যাকশনের মাধ্যমে কাজগুলি সম্পূর্ণ করার অনুমতি দেয়।
মডেল কনটেক্সট প্রোটোকল (MCP) এর মধ্যে থাকা টুলের মোবাইল সমতুল্য হিসেবে AppFunctions কাজ করে। যদিও MCP ঐতিহ্যগতভাবে এজেন্টদের সার্ভার-সাইড টুলের সাথে সংযোগ স্থাপনের পদ্ধতিকে মানসম্মত করে, AppFunctions Android অ্যাপের জন্য একই প্রক্রিয়া প্রদান করে। এটি আপনাকে আপনার অ্যাপের ক্ষমতাগুলিকে অর্কেস্ট্রেটেবল "টুল" হিসেবে প্রকাশ করতে সক্ষম করে যা অনুমোদিত অ্যাপ (কলার) ব্যবহারকারীর উদ্দেশ্য পূরণের জন্য আবিষ্কার এবং কার্যকর করতে পারে। AppFunctions আবিষ্কার এবং কার্যকর করার জন্য কলকারীদের EXECUTE_APP_FUNCTIONS অনুমতি থাকতে হবে এবং এতে এজেন্ট, অ্যাপ এবং জেমিনির মতো AI সহকারী অন্তর্ভুক্ত থাকতে পারে।
অ্যাপফাংশনগুলি অ্যান্ড্রয়েড ১৬ বা তার পরবর্তী ভার্সন চালিত ডিভাইসগুলির সাথে কাজ করে।
ব্যবহারের উদাহরণ
অ্যাপফাংশনগুলি কাজগুলিকে স্বয়ংক্রিয় করার এবং ব্যবহারকারীর মিথস্ক্রিয়াকে সুগম করার জন্য একটি শক্তিশালী প্রক্রিয়া প্রদান করে। আপনার অ্যাপের ক্ষমতা প্রকাশ করে, আপনি ব্যবহারকারীদের প্রাকৃতিক ভাষা ব্যবহার করে জটিল লক্ষ্যগুলি অর্জন করতে সক্ষম করেন, প্রায়শই আপনার UI এর সাথে ধাপে ধাপে ম্যানুয়াল নেভিগেশনের প্রয়োজনীয়তা এড়িয়ে যান।
নিম্নলিখিত পরিস্থিতিগুলি ব্যাখ্যা করে যে কীভাবে অ্যাপ ফাংশনগুলি বিভিন্ন অ্যাপ বিভাগের মধ্যে অভিজ্ঞতা অর্জনের জন্য ব্যবহার করা যেতে পারে:
- কার্য ব্যবস্থাপনা এবং উৎপাদনশীলতা
- ব্যবহারকারীর অনুরোধ : " আজ বিকেল ৫ টায় কর্মক্ষেত্রে আমার প্যাকেজটি নিতে আমাকে মনে করিয়ে দিন "।
- AppFunction অ্যাকশন : কলার প্রাসঙ্গিক টাস্ক ম্যানেজমেন্ট অ্যাপটি সনাক্ত করে এবং একটি টাস্ক তৈরি করার জন্য একটি ফাংশন আহ্বান করে, ব্যবহারকারীর প্রম্পটের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে শিরোনাম, সময় এবং অবস্থান ক্ষেত্রগুলি পূরণ করে।
- মিডিয়া এবং বিনোদন
- ব্যবহারকারীর অনুরোধ : " এই বছরের সেরা জ্যাজ অ্যালবামগুলি দিয়ে একটি নতুন প্লেলিস্ট তৈরি করুন "।
- অ্যাপফাংশন অ্যাকশন : কলার একটি মিউজিক অ্যাপের মধ্যে একটি প্লেলিস্ট তৈরির ফাংশন সম্পাদন করে, "২০২৬ সালের সেরা জ্যাজ অ্যালবাম" এর মতো প্রসঙ্গটি কোয়েরি হিসেবে পাস করে যাতে কন্টেন্টটি তাৎক্ষণিকভাবে তৈরি এবং চালু করা যায়।
- ক্রস-অ্যাপ ওয়ার্কফ্লো
- ব্যবহারকারীর অনুরোধ : " লিসার ইমেল থেকে নুডলসের রেসিপিটি খুঁজে বের করুন এবং আমার কেনাকাটার তালিকায় উপকরণগুলি যোগ করুন "।
- AppFunction অ্যাকশন : এই অনুরোধটি একাধিক অ্যাপের ফাংশন ব্যবহার করে। প্রথমে, কলকারী কন্টেন্ট পুনরুদ্ধার করার জন্য একটি ইমেল অ্যাপের অনুসন্ধান ফাংশন ব্যবহার করে। তারপর, এটি প্রাসঙ্গিক উপাদানগুলি বের করে এবং ব্যবহারকারীর তালিকা পূরণ করার জন্য একটি শপিং লিস্ট অ্যাপের ফাংশন ব্যবহার করে।
- ক্যালেন্ডার এবং সময়সূচী
- ব্যবহারকারীর অনুরোধ : " আগামী সোমবার সন্ধ্যা ৬ টার জন্য আমার ক্যালেন্ডারে মায়ের জন্মদিনের পার্টি যোগ করুন "।
- AppFunction অ্যাকশন : অনুমোদিত এজেন্টিক অ্যাপটি ক্যালেন্ডার অ্যাপের "ক্রিয়েট ইভেন্ট" ফাংশনটি ব্যবহার করে, "পরবর্তী সোমবার" এবং "সন্ধ্যা ৬টা" এর মতো প্রাসঙ্গিক প্রেক্ষাপট বিশ্লেষণ করে এন্ট্রি তৈরি করে, যাতে ব্যবহারকারীকে ম্যানুয়ালি ক্যালেন্ডারটি খোলার প্রয়োজন না হয়।
অ্যাপফাংশন কীভাবে কাজ করে
অ্যাপফাংশনস হল একটি অ্যান্ড্রয়েড ১৬ প্ল্যাটফর্ম বৈশিষ্ট্য এবং এর সাথে একটি জেটপ্যাক লাইব্রেরি রয়েছে যা অ্যাপগুলিকে কলারদের জন্য নির্দিষ্ট ফাংশনগুলি প্রকাশ করতে দেয়, যেমন এজেন্ট অ্যাপ, ডিভাইসে অ্যাক্সেস এবং কার্যকর করার জন্য।
নিচের চিত্রটি অ্যাপগুলি কীভাবে কোনও এজেন্টের সাথে অ্যাপফাংশনগুলি ভাগ করে নেয় এবং পরবর্তীতে কার্যকর করে তার সাধারণ প্রবাহকে চিত্রিত করে। ব্যবহারকারীর অনুরোধগুলি পরিচালনা করার সময় এজেন্টরা সার্ভার-সাইড রিমোট MCP টুল এবং স্থানীয় অ্যাপফাংশন উভয়কেই একসাথে বিবেচনা করার সম্ভাবনা বেশি। স্থানীয় অ্যাপফাংশনগুলি ব্যবহারের জন্য বিস্তারিত প্রবাহ নিম্নরূপ:
- AppFunction ঘোষণা : অ্যান্ড্রয়েড অ্যাপটি তার AppFunctions, যেমন "Create Note" বা "Send Message", প্রকাশ করার জন্য তৈরি করা হয়েছে।
- স্কিমা জেনারেশন : অ্যাপফাংশন জেটপ্যাক লাইব্রেরি একটি XML স্কিমা ফাইল তৈরি করে যা অ্যাপে ঘোষিত সমস্ত অ্যাপফাংশন তালিকাভুক্ত করে। এই ফাইলটি অ্যান্ড্রয়েড অপারেটিং সিস্টেম দ্বারা উপলব্ধ অ্যাপফাংশনগুলিকে সূচীবদ্ধ করার জন্য ব্যবহার করা হয়।
- মেটাডেটা পুনরুদ্ধার : এজেন্ট অ্যাপফাংশন মেটাডেটা অনুসন্ধান করে পুনরুদ্ধার করতে পারে।
- AppFunction নির্বাচন এবং সম্পাদন : ব্যবহারকারীর অনুরোধের উপর ভিত্তি করে, এজেন্ট উপযুক্ত প্যারামিটার সহ উপযুক্ত AppFunction নির্বাচন এবং সম্পাদন করবে।
AppFunctions Jetpack লাইব্রেরি আপনার অ্যাপের কার্যকারিতা প্রকাশ করা সহজ করে। অ্যানোটেশন প্রসেসরের সাহায্যে, ডেভেলপাররা যে ফাংশনগুলি প্রকাশ করতে চান তা টীকা করে। এরপর কলকারীরা AppFunctionManager ব্যবহার করে এই সূচীকৃত ফাংশনগুলি আবিষ্কার এবং আহ্বান করতে পারেন।
আপনার অ্যাপের জন্য AppFunction বৈশিষ্ট্যটি সমর্থিত কিনা তা যাচাই করার প্রয়োজন নেই; এটি স্বয়ংক্রিয়ভাবে Jetpack লাইব্রেরির মধ্যে পরিচালিত হয়। উদাহরণস্বরূপ, AppFunctionManager বৈশিষ্ট্যটি সমর্থিত কিনা তা যাচাই করতে পারে।
নোট তৈরি, সম্পাদনা এবং তালিকাভুক্ত করার ক্ষমতা সম্পন্ন একটি নোট-টেকিং অ্যাপের জন্য AppFunctions-এর একটি উদাহরণ এখানে দেওয়া হল।
class NoteFunctions(
private val noteRepository: NoteRepository
) {
/**
* A note.
*
* @param id The note's ID.
* @param title The note's title.
* @param content The note's content.
*/
@AppFunctionSerializable(isDescribedByKDoc = true)
data class Note(val id: Int, val title: String, val content: String)
/**
* Lists all available notes.
*
* @param appFunctionContext The context in which the AppFunction is executed.
*/
@AppFunction(isDescribedByKDoc = true)
suspend fun listNotes(appFunctionContext: AppFunctionContext): List<Note>? {
return if (noteRepository.appNotes.isEmpty()) null else viewModel.appNotes
}
/**
* Adds a new note to the app.
*
* @param appFunctionContext The context in which the AppFunction is executed.
* @param title The title of the note.
* @param content The note's content.
*/
@AppFunction(isDescribedByKDoc = true)
suspend fun createNote(
appFunctionContext: AppFunctionContext,
title: String,
content: String
): Note {
return noteRepository.createNote(title, content)
}
/**
* Edits a single note.
*
* @param appFunctionContext The context in which the AppFunction is executed.
* @param noteId The target note's ID.
* @param title The new title if it should be updated.
* @param content The new content if it should be updated.
*/
@AppFunction(isDescribedByKDoc = true)
suspend fun editNote(
appFunctionContext: AppFunctionContext,
noteId: String,
title: String?,
content: String,
): Note? {
return noteRepository.updateNote(noteId, title, content)
}
}