ارسال شده توسط توماس ایزانSr مهندس ارتباط با توسعه دهنده
هزاران توسعهدهنده در سراسر جهان از قدرت مدلهای Gemini 1.5 Pro و Gemini 1.5 Flash بهره میبرند تا ویژگیهای پیشرفته هوش مصنوعی مولد را در برنامههای خود القا کنند. توسعه دهندگان اندروید نیز از این قاعده مستثنی نیستند و با عرضه نسخه پایدار VertexAI در Firebase در چند هفته آینده (در نسخه بتا از زمان Google I/O موجود است)، زمان عالی برای بررسی نحوه بهره مندی برنامه شما از آن است. ما به تازگی یک را منتشر کردیم نرم افزار کد برای کمک به شما برای شروع
بیایید برخی از قابلیتهای پیشرفته Gemini API را که فراتر از پیامهای متنی ساده است، بررسی کنیم و موارد استفاده هیجانانگیزی را که میتوانند در برنامه Android شما باز کنند، کشف کنیم.
شکل دادن رفتار هوش مصنوعی با دستورالعمل های سیستم
دستورالعملهای سیستم به،وان «مقدمهای» عمل میکنند که قبل از درخواست کاربر از آن استفاده میکنید. این امکان شکل دادن به رفتار مدل را برای همسویی با ا،امات و سناریوهای خاص شما فراهم می کند. هنگامی که مدل را مقداردهی اولیه میکنید، دستورالعملها را تنظیم میکنید و سپس این دستورالعملها در تمام تعاملات با مدل، در چندین چرخش کاربر و مدل باقی میمانند.
به ،وان مثال، می تو،د از دستورالعمل های سیستم برای موارد زیر استفاده کنید:
- یک شخصیت یا نقش را برای یک چت بات تعریف کنید (مثلاً «مثل اینکه من 5 ساله هستم توضیح دهید»)
- پاسخ به فرمت ،وجی را مشخص کنید (به ،وان مثال، Markdown، YAML، و غیره)
- سبک و لحن ،وجی را تنظیم کنید (به ،وان مثال، پرحرفی، رسمی، و غیره…)
- اه، یا قو،ن کار را تعریف کنید (به ،وان مثال، “برگرداندن یک قطعه کد بدون توضیح بیشتر”)
- زمینه اضافی را برای درخواست ارائه دهید (مثلاً تاریخ قطع دانش)
برای استفاده از دستورالعملهای سیستم در برنامه Android خود، هنگام تنظیم اولیه مدل، آن را به ،وان پارامتر ارسال کنید:
val generativeModel = Firebase.vertexAI.generativeModel( modelName = "gemini-1.5-flash", ... systemInstruction = content { text("You are a knowledgeable tutor. Answer the questions using the socratic tutoring met،d.") } )
می تو،د در مورد آموزش سیستم اطلاعات بیشتری ،ب کنید Vertex AI در اسناد Firebase.
همچنین می تو،د به راحتی درخواست خود را با دستورالعمل های مختلف سیستم در آن تست کنید Vertex AI Studio، ابزار کنسول Google Cloud برای نمونه سازی سریع و آزمایش درخواست ها با مدل های Gemini.
هنگامی که آماده رفتن به تولید هستید، توصیه می شود نسخه خاصی از مدل را هدف قرار دهید (به ،وان مثال gemini-1.5-flash-002). اما از آنجایی که نسخه های مدل جدید منتشر شده و نسخه های قبلی منسوخ شده اند، استفاده از آن توصیه می شود Firebase Remote Config تا بتو،د نسخه مدل Gemini را بدون انتشار نسخه جدیدی از برنامه خود به روز کنید.
فراتر از چت ربات ها: استفاده از هوش مصنوعی مولد برای موارد استفاده پیشرفته
در حالی که چت بات ها یک برنامه محبوب هوش مصنوعی مولد هستند، قابلیت های Gemini API فراتر از رابط های مکالمه است و می تو،د ویژگی های چندوجهی دارای GenAI را در جنبه های مختلف برنامه اندروید خود ادغام کنید.
بسیاری از کارهایی که قبلاً به مداخله انس، نیاز داشتند (مانند تجزیه و تحلیل متن، تصویر یا محتوای ویدیویی، ،یب دادهها در قالبی قابل خواندن توسط انسان، درگیر شدن در یک فرآیند خلاقانه برای تولید محتوای جدید و غیره) میتوانند به طور بالقوه با استفاده از GenAI خودکار شوند.
پشتیب، جمینی JSON
برنامه های اندروید به خوبی با ،وجی های زبان طبیعی ارتباط برقرار نمی کنند. برع،، JSON در توسعه اندروید همه جا حاضر است و راه ساختارمندتری را برای برنامه های اندرویدی برای مصرف ورودی ارائه می دهد. با این حال، اطمینان از قالببندی من، کلید/مقدار هنگام کار با مدلهای تولیدی میتواند چالش برانگیز باشد.
با در دسترس بودن کلی Vertex AI در Firebase، راهحلهایی برای سادهسازی تولید JSON با قالببندی من، کلید/مقدار پیادهسازی شده است:
شناسه نوع MIME پاسخ
اگر سعی کردهاید JSON را با یک مدل هوش مصنوعی تولیدی تولید کنید، احتمالاً متن اضافی ناخواستهای پیدا کردهاید که تجزیه JSON را چالشبرانگیزتر میکند.
به ،وان مثال:
Sure, here is your JSON: ``` { "someKey”: “someValue", ... } ```
هنگام استفاده از Gemini 1.5 Pro یا Gemini 1.5 Flash، در پیکربندی نسل، میتو،د صراحتاً mime/type پاسخ مدل را به،وان application/json مشخص کنید و به مدل دستور دهید ،وجی JSON با ساختار من، تولید کند.
val generativeModel = Firebase.vertexAI.generativeModel( modelName = "gemini-1.5-flash", … generationConfig = generationConfig { responseMimeType = "application/json" } )
بررسی کنید مرجع API برای جزئیات بیشتر
به زودی، Android SDK برای Vertex AI در Firebase شما را قادر می سازد تا طرح JSON مورد انتظار در پاسخ را تعریف کنید.
قابلیت های چندوجهی
جمینی 1.5 فلش و جمینی 1.5 پرو هر دو مدل های چند وجهی هستند. این بدان م،ی است که آنها می توانند ورودی را از چندین فرمت پردازش کنند، از جمله متن، تصاویر، صدا، ویدئو. علاوه بر این، هر دو دارای پنجره های زمینه طول، هستند که می توانند تا 1 میلیون توکن برای Gemini 1.5 Flash و 2 میلیون توکن برای Gemini 1.5 Pro را مدیریت کنند.
این ویژگیها درهایی را به روی قابلیتهای نوآورانهای باز میکنند که قبلاً غیرقابل دسترسی بودند، مانند تولید خودکار شرحهای توصیفی برای تصاویر، شناسایی موضوعات در یک مکالمه و تولید فصلهایی از یک فایل صوتی یا توصیف صحنهها و اقدامات در یک فایل ویدیویی.
همانطور که در این مثال نشان داده شده است می تو،د یک تصویر را به مدل ارسال کنید:
val contentResolver = applicationContext.contentResolver contentResolver.openInputStream(imageUri).use { stream -> stream?.let { val bitmap = BitmapFactory.decodeStream(stream) // Provide a prompt that includes the image specified above and text val prompt = content { image(bitmap) text("How many people are on this picture?") } } val response = generativeModel.generateContent(prompt) }
همچنین می تو،د یک ویدیو را به مدل ارسال کنید:
val contentResolver = applicationContext.contentResolver contentResolver.openInputStream(videoUri).use { stream -> stream?.let { val bytes = stream.readBytes() // Provide a prompt that includes the video specified above and text val prompt = content { blob("video/mp4", bytes) text("What is in the video?") } val fullResponse = generativeModel.generateContent(prompt) } }
میتو،د در مورد اعلان چندوجهی بیشتر بیاموزید VertexAI برای اسناد Firebase.
توجه: این روش به شما امکان می دهد تا فایل هایی تا 20 مگابایت را ارسال کنید. برای فایلهای بزرگتر، از Cloud Storage برای Firebase استفاده کنید و URL فایل را در درخواست چندوجهی خود قرار دهید. را بخو،د مستندات برای اطلاعات بیشتر
فراخو، تابع: گسترش قابلیت های مدل
فراخو، تابع شما را قادر می سازد تا قابلیت ها را به مدل های مولد گسترش دهید. برای مثال میتو،د مدل را فعال کنید تا اطلاعات را در پایگاه داده SQL خود بازیابی کند و آن را به متن درخواست بازگرداند. همچنین میتو،د با فراخو، توابع موجود در کد منبع برنامهتان، به مدل اجازه دهید اقداماتی را انجام دهد. در اصل، فراخو، های تابع فاصله بین مدل های Gemini و کد Kotlin شما را پل می کنند.
به ،وان مثال یک برنامه تحویل غذا را در نظر بگیرید که علاقه مند به پیاده سازی یک رابط مکالمه با فلش Gemini 1.5 است. فرض کنید این برنامه دارای یک getFoodOrder (آشپزی: رشته) عملکردی که لیست سفارشات کاربر را برای نوع خاصی از غذا برمی گرداند:
fun getFoodOrder(cuisine: String) : JSONObject { // implementation… }
توجه داشته باشید که تابع برای اینکه توسط مدل قابل استفاده باشد، باید پاسخ را به شکل a برگرداند JSONObject.
برای در دسترس قرار دادن پاسخ به Gemini 1.5 Flash، تعریفی از عملکرد خود ایجاد کنید که مدل با استفاده از آن بتواند آن را درک کند. defineFunction:
val getOrderListFunction = defineFunction( name = "getOrderList", description = "Get the list of food orders from the user for a define type of cuisine.", Schema.str(name = "cuisineType", description = "the type of cuisine for the order") ) { cuisineType -> getFoodOrder(cuisineType) }
سپس، وقتی مدل را نمونهسازی میکنید، این تعریف تابع را با استفاده از پارامتر tools با مدل به اشتراک بگذارید:
val generativeModel = Firebase.vertexAI.generativeModel( modelName = "gemini-1.5-flash", ... tools = listOf(Tool(listOf(getExchangeRate))) )
در نهایت، وقتی پاسخی از مدل دریافت میکنید، در پاسخ بررسی کنید که آیا مدل واقعاً درخواست اجرای تابع را دارد یا خیر:
// Send the message to the generative model var response = chat.sendMessage(prompt) // Check if the model responded with a function call response.functionCall?.let { functionCall -> // Try to retrieve the stored lambda from the model's tools and // throw an exception if the returned function was not declared val matchedFunction = generativeModel.tools?.flatMap { it.functionDeclarations } ?.first { it.name == functionCall.name } ?: throw InvalidStateException("Function not found: ${functionCall.name}") // Call the lambda retrieved above val apiResponse: JSONObject = matchedFunction.execute(functionCall) // Send the API response back to the generative model // so that it generates a text response that can be displayed to the user response = chat.sendMessage( content(role = "function") { part(FunctionResponsePart(functionCall.name, apiResponse)) } ) } // If the model responds with text, s،w it in the UI response.text?.let { modelResponse -> println(modelResponse) }
به طور خلاصه، شما توابع (یا ابزارهای مدل) را هنگام مقداردهی اولیه ارائه خواهید کرد:
و در صورت ،وم، مدل درخواست اجرای تابع من، و ارائه نتایج را می دهد:
شما می تو،د اطلاعات بیشتری در مورد فراخو، تابع در VertexAI برای اسناد Firebase.
باز ، پتانسیل Gemini API در برنامه شما
Gemini API گنجینه ای از ویژگی های پیشرفته را ارائه می دهد که توسعه دهندگان اندروید را قادر می سازد تا برنامه های واقعاً نوآورانه و جذاب ایجاد کنند. با فراتر رفتن از اعلانهای متنی اولیه و بررسی قابلیتهای برجستهشده در این پست وبلاگ، میتو،د تجربیاتی مبتنی بر هوش مصنوعی ایجاد کنید که کاربران خود را خوشحال میکند و برنامه شما را در فضای رقابتی اندروید متمایز میکند.
در مورد اینکه چگونه برخی از برنامههای Android از قبل شروع به استفاده از Gemini API کردهاند، بیشتر بخو،د.
برای ،ب اطلاعات بیشتر در مورد هوش مصنوعی در Android، منابع دیگری را که در طول هفته هوش مصنوعی در Android S،light Week در دسترس داریم، بررسی کنید.
استفاده کنید #AndroidAI برای به اشتراک گذاشتن خلاقیت ها یا بازخوردهای خود در رسانه های اجتماعی هشتگ کنید و در خط مقدم انقلاب هوش مصنوعی به ما بپیوندید!
قطعه کد در این پست وبلاگ دارای مجوز زیر است:
// Copyright 2024 Google LLC. // SPDX-License-Identifier: Apache-2.0
منبع: http://android-developers.googleblog.com/2024/10/advanced-capabilities-of-gemini-api-for-android-developers.html