موبائل ایپس میں اے آئی کی انضمام: ایک عملی مرحلہ وار گائیڈ

موبائل ایپس میں اے آئی کی انضمام

2026 میں، موبائل ایپلی کیشنز اب محض جامد ڈیٹا کے لیے انٹرفیس نہیں رہ گئی ہیں۔ ان سے توقع کی جاتی ہے کہ وہ اپنے ماحول کو حقیقی وقت میں سمجھیں، تجزیہ کریں اور اس پر ردعمل دیں۔ اپنے موبائل ٹیک اسٹیک میں آرٹیفیشل انٹیلیجنس کو ضم کرنا اب کوئی مستقبل کا عیش و آرام نہیں بلکہ ایک جدید ضرورت بن چکا ہے۔

تاہم، ڈویلپرز کو ایک اہم فن تعمیراتی فیصلے کا سامنا ہے: کیا آپ کو اے آئی ماڈلز کو APIs کے ذریعے کلاؤڈ میں چلانا چاہئے، یا براہ راست ڈیوائس پر؟

یہ گائیڈ موبائل ایپس میں اے آئی کے انضمام کے بارے میں تفصیلی معلومات فراہم کرتی ہے، کلاؤڈ اور آن ڈیوائس آرکیٹیکچر کا موازنہ کرتی ہے اور iOS (سوفٹ) اور Android (کوٹلن) دونوں کے لیے مرحلہ وار عملی نفاذ فراہم کرتی ہے۔


1. کلاؤڈ اے آئی بمقابلہ آن ڈیوائس اے آئی: آرکیٹیکچرل انتخاب

کوڈ لکھنے سے پہلے، آپ کو یہ سمجھنا ہوگا کہ آپ کا ماڈل کہاں چلتا ہے اور اس کے کیا فوائد و نقصانات ہیں:

معیار کلاؤڈ اے آئی (بذریعہ API) آن ڈیوائس اے آئی (ایج)
کمپیوٹنگ طاقت عملی طور پر لامحدود (GPUs/TPUs) موبائل ہارڈویئر تک محدود (CPU/GPU/NPU)
تاخیر (Latency) نیٹ ورک پر منحصر (100ms - 2s+) انتہائی کم (10ms سے کم)
لاگت زیادہ (بار بار ہونے والی API/سرور کی لاگت) صفر (صارف کے ہارڈویئر کو استعمال کرتا ہے)
آف لائن کام کرنا ناممکن (انٹرنیٹ کنکشن درکار ہے) آف لائن بھی 100٪ کام کرتا ہے
پرائیویسی حساس ڈیٹا کو ڈیوائس سے باہر بھیجنا پڑتا ہے مکمل پرائیویسی (ڈیٹا ڈیوائس سے باہر نہیں جاتا)

2. آن ڈیوائس اے آئی فریم ورکس

اگر آپ ڈیوائس پر ماڈل چلانے کا انتخاب کرتے ہیں، تو کئی آپٹمائزڈ فریم ورکس دستیاب ہیں:

  • Google ML Kit: اینڈرائیڈ اور آئی او ایس دونوں پر عام کاموں (امیج لیبلنگ، ٹیکسٹ کی شناخت، چہرے کی شناخت) کے لیے بہترین، پلگ اینڈ پلے SDK۔
  • CoreML: ایپل کا تیار کردہ انتہائی آپٹمائزڈ فریم ورک جو بہترین رفتار کے لیے ایپل نیورل انجن (ANE) کا استعمال کرتا ہے۔
  • TensorFlow Lite / PyTorch Mobile: اپنی مرضی کے مطابق نیورل نیٹ ورک آرکیٹیکچر کو لاگو کرنے کے لیے بہترین۔
  • ONNX Runtime Mobile: ایک کراس پلیٹ فارم انجن جو آپ کو ڈیوائس پر تقریباً کسی بھی تربیتی فریم ورک (PyTorch، TensorFlow وغیرہ) کے ماڈل چلانے کی اجازت دیتا ہے۔

3. مرحلہ وار عملی گائیڈ: آن ڈیوائس امیج کی درجہ بندی

آئیے ایک عملی خصوصیت بناتے ہیں: آن ڈیوائس امیج کی درجہ بندی، جو انٹرنیٹ کنکشن کے بغیر کھینچی گئی تصویر میں موجود اشیاء کو لیبل کرتی ہے۔

الف۔ اینڈرائیڈ نفاذ (کوٹلن)

ہم گوگل ایم ایل کٹ کا امیج لیبلنگ API استعمال کریں گے۔ یہ ایک پہلے سے تربیت یافتہ ماڈل فراہم کرتا ہے جو مقامی طور پر اینڈرائیڈ ڈیوائس پر چلتا ہے۔

مرحلہ 1: لائبریری شامل کریں

اسے اپنے ایپ کی build.gradle.kts فائل میں شامل کریں:

dependencies {
    implementation("com.google.mlkit:image-labeling:17.0.7")
}

مرحلہ 2: کوڈ لکھیں

تصویر کو لوڈ کرنے اور کلاسیفائر چلانے کے لیے کوٹلن کا کوڈ یہاں دیا گیا ہے:

import android.content.Context
import android.net.Uri
import com.google.mlkit.vision.common.InputImage
import com.google.mlkit.vision.label.ImageLabeling
import com.google.mlkit.vision.label.defaults.ImageLabelerOptions

class ImageClassifier(private val context: Context) {

    fun classifyImage(imageUri: Uri, onSuccess: (List<String>) -> Unit, onFailure: (Exception) -> Unit) {
        try {
            // 1. Uri سے InputImage تیار کریں
            val image = InputImage.fromFilePath(context, imageUri)
            
            // 2. پہلے سے طے شدہ مقامی امیج لیبلر کو شروع کریں
            val labeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
            
            // 3. تصویر پر عمل کریں
            labeler.process(image)
                .addOnSuccessListener { labels ->
                    val result = labels.map { "${it.text} (${(it.confidence * 100).toInt()}%)" }
                    onSuccess(result)
                }
                .addOnFailureListener { e ->
                    onFailure(e)
                }
        } catch (e: Exception) {
            onFailure(e)
        }
    }
}

ب۔ آئی او ایس نفاذ (سوفٹ)

آئی او ایس کے لیے ہم ایپل کے اصل Vision اور CoreML فریم ورکس کا استعمال کریں گے۔ ایپل عام امیج کلاسیفیکیشن کے لیے ایک مفت پہلے سے مرتب شدہ MobileNetV2 ماڈل فراہم کرتا ہے۔

مرحلہ 1: ماڈل اور فریم ورک درآمد کریں

ایپل کی ڈیولپر ویب سائٹ سے MobileNetV2.mlmodel فائل ڈاؤن لوڈ کریں اور اسے اپنے ایکس کوڈ پروجیکٹ میں شامل کریں۔

مرحلہ 2: کوڈ لکھیں

امیج پر عمل کرنے کے لیے سوفٹ کا کوڈ یہاں دیا گیا ہے:

import Vision
import CoreML
import UIKit

class iOSImageClassifier {
    
    func classifyImage(image: UIImage, completion: @escaping (Result<[String], Error>) -> Void) {
        // 1. Vision ریپر کا استعمال کرتے ہوئے CoreML ماڈل لوڈ کریں
        guard let configuration = try? MLModelConfiguration(),
              let coreMLModel = try? MobileNetV2(configuration: configuration),
              let visionModel = try? VNCoreMLModel(for: coreMLModel) else {
            completion(.failure(NSError(domain: "Classifier", code: 1, userInfo: [NSLocalizedDescriptionKey: "ماڈل لوڈ کرنے میں ناکامی"])))
            return
        }
        
        // 2. Vision درخواست بنائیں
        let request = VNCoreMLRequest(model: visionModel) { request, error in
            if let error = error {
                completion(.failure(error))
                return
            }
            
            guard let results = request.results as? [VNClassificationObservation] else {
                completion(.success([]))
                return
            }
            
            // 3. نتائج کو فارمیٹ کریں
            let formattedResults = results.prefix(3).map { 
                "\($0.identifier) (\(Int($0.confidence * 100))%)" 
            }
            completion(.success(formattedResults))
        }
        
        // 4. UIImage کو CGImage میں تبدیل کریں اور درخواست چلائیں
        guard let cgImage = image.cgImage else {
            completion(.failure(NSError(domain: "Classifier", code: 2, userInfo: [NSLocalizedDescriptionKey: "تصویر کا فارمیٹ غلط ہے"])))
            return
        }
        
        let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
        DispatchQueue.global(qos: .userInitiated).async {
            do {
                try handler.perform([request])
            } catch {
                completion(.failure(error))
            }
        }
    }
}

4. مرحلہ وار گائیڈ: کلاؤڈ اے آئی انٹیگریشن

پیچیدہ کاموں کے لیے جن کے لیے جدید ترین ماڈلز (جیسے GPT-4 یا Claude) یا متحرک تصاویر بنانے کی ضرورت ہوتی ہے، ہارڈ ویئر کی حدود کی وجہ سے ڈیوائس پر ماڈل چلانا ممکن نہیں ہے۔ ایسے معاملات میں، ہم کلاؤڈ اے آئی کا استعمال کرتے ہیں۔

[!IMPORTANT] سیکیورٹی وارننگ: کبھی بھی API کیز (جیسے OpenAI یا Anthropic کیز) کو براہ راست اپنے موبائل ایپلیکیشن کوڈ کے اندر شامل نہ کریں۔ APK یا IPA فائل کی ریورس انجینئرنگ ان کیز کو آسانی سے بے نقاب کر سکتی ہے۔ ہمیشہ اپنی درخواستوں کو محفوظ بیک اینڈ پراکسی یا API گیٹ وے کے ذریعے بھیجیں۔

A. اینڈرائیڈ امپلیمنٹیشن (Kotlin)

کلاؤڈ پر مبنی ماڈل سے جواب حاصل کرنے کے لیے OkHttp کا استعمال کرتے ہوئے ایک محفوظ بیک اینڈ اینڈ پوائنٹ پر غیر مطابقت پذیر (asynchronous) HTTP POST درخواست بھیجنے کا طریقہ یہاں دیا گیا ہے:

import okhttp3.*
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.IOException

class CloudAIService {
    private val client = OkHttpClient()
    private val mediaType = "application/json; charset=utf-8".toMediaType()

    fun generateText(prompt: String, callback: (String?) -> Unit) {
        val jsonPayload = """
            {
                "model": "gpt-4-mini",
                "messages": [{"role": "user", "content": "$prompt"}]
            }
        """.trimIndent()

        val requestBody = jsonPayload.toRequestBody(mediaType)
        val request = Request.Builder()
            .url("https://api.ghaznix.com/v1/ai/generate")
            .post(requestBody)
            .build()

        client.newCall(request).enqueue(object : Callback {
            override fun onFailure(call: Call, e: IOException) {
                callback(null)
            }

            override fun onResponse(call: Call, response: Response) {
                if (response.isSuccessful) {
                    val responseString = response.body?.string()
                    callback(responseString)
                } else {
                    callback(null)
                }
            }
        })
    }
}

B. آئی او ایس امپلیمنٹیشن (Swift)

نیچے اسی کلاؤڈ اے آئی بیک اینڈ کے ساتھ بات چیت کرنے کے لیے جدید async/await اور URLSession کا استعمال کرتے ہوئے سوئفٹ (Swift) میں آئی او ایس (iOS) امپلیمنٹیشن دی گئی ہے:

import Foundation

class CloudAIService {
    
    struct ChatRequest: Codable {
        let model: String
        let messages: [Message]
    }
    
    struct Message: Codable {
        let role: String
        let content: String
    }
    
    func generateText(prompt: String) async throws -> String {
        guard let url = URL(string: "https://api.ghaznix.com/v1/ai/generate") else {
            throw URLError(.badURL)
        }
        
        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        
        let payload = ChatRequest(
            model: "gpt-4-mini",
            messages: [Message(role: "user", content: prompt)]
        )
        
        request.httpBody = try JSONEncoder().encode(payload)
        
        let (data, response) = try await URLSession.shared.data(for: request)
        
        guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else {
            throw URLError(.badServerResponse)
        }
        
        if let jsonString = String(data: data, encoding: .utf8) {
            return jsonString
        } else {
            throw URLError(.cannotDecodeContentData)
        }
    }
}

5. موبائل اے آئی آپٹیمائزیشن کی حکمت عملی

ماڈل کو براہ راست صارف کے آلات پر چلانے کے دوران، بیٹری کی بچت اور ایپ کے سائز کو کم رکھنے کے لیے آپٹیمائزیشن انتہائی اہم ہے:

  1. کوانٹائزیشن (Quantization): ماڈل کے وزن کو 32 بٹ فلوٹنگ پوائنٹ (FP32) سے 8 بٹ انٹیجر (INT8) میں تبدیل کرنا۔ یہ درستگی میں کسی خاص نقصان کے بغیر ماڈل کے سائز کو 75٪ تک کم کر دیتا ہے اور این پی یو پر کام کو تیز کرتا ہے۔
  2. ماڈل پروننگ (Pruning): غیر ضروری اعصابی رابطوں کو ہٹانا جن کا درستگی میں کردار نہ ہونے کے برابر ہو۔
  3. ہارڈویئر ایکسلریشن (Hardware Delegation): یقینی بنائیں کہ آپ کا کوڈ ہارڈویئر ایکسلریٹر کو استعمال کرتا ہے (جیسے اینڈرائیڈ پر .useNNAPI(true) کا استعمال کرتے ہوئے یا iOS سوفٹ کنفیگریشن میں GPU/Neural Engine کے اختیارات کو فعال کر کے)۔

6. نتیجہ

موبائل ایپس میں اے آئی کو ضم کرنا اب صرف بیرونی APIs سے منسلک ہونے تک محدود نہیں رہا۔ مقامی طور پر ماڈلز چلا کر، ڈویلپرز محفوظ، بغیر کسی تاخیر کے، اور انتہائی تیز صارف تجربہ فراہم کر سکتے ہیں۔

غزنکس بلاگ پر مزید تکنیکی معلومات دیکھیں ←