هوش مصنوعی iOS خود را با فراخوانی ابزار تقویت کنید

آیا تا به حال به این فکر کرده‌اید که چگونه هوش مصنوعی را در اپلیکیشن‌های iOS خود هوشمندتر و متصل‌تر به دنیای واقعی کنید؟ در حالی که مدل‌های زبان روی دستگاه (on-device) قدرتمند هستند، یک محدودیت کلیدی دارند: آنها نمی‌توانند به اطلاعات زنده و آنی دسترسی داشته باشند. آنها از وضعیت آب و هوای فعلی، آخرین قیمت سهام یا همانطور که خواهیم دید، فیلم‌های پرطرفدار روز خبر ندارند. اینجاست که یک قابلیت انقلابی در فریم‌ورک Foundation Models در iOS 26 همه چیز را تغییر می‌دهد: فراخوانی ابزار (Tool Calling).

فراخوانی ابزار یک توانایی قدرتمند است که به مدل زبان روی دستگاه اجازه می‌دهد تا مستقیماً با توابع اپلیکیشن شما و سرویس‌های خارجی تعامل داشته باشد. آن را مانند ایجاد یک پل برای هوش مصنوعی خود به دنیای خارج در نظر بگیرید. به جای اینکه مدل در پاسخ به سوالی که نیاز به داده‌های فعلی دارد، به سادگی بگوید «نمی‌دانم»، اکنون می‌تواند وظیفه را به یک «ابزار» مشخص که شما ارائه می‌دهید (یک تابع یا یک فراخوانی API) محول کند و سپس از نتیجه برای فرموله کردن یک پاسخ دقیق استفاده کند.

بیایید این موضوع را با ارتقاء یک اپلیکیشن ساده «هر چه می‌خواهی بپرس» بررسی کنیم. در ابتدا، اگر از این برنامه در مورد فیلم‌های پرطرفدار بپرسید، مدل سردرگم می‌شود. ما می‌توانیم این مشکل را با ادغام آن با API پایگاه داده فیلم (TMDB) حل کنیم.

اتصال به TMDB API

ابتدا، ما به راهی برای برقراری ارتباط با سرویس خارجی نیاز داریم. ما یک کلاس MovieService در سوئیفت ایجاد می‌کنیم که مسئول دریافت داده‌ها است. این شامل تعریف مدل‌های داده برای ساختاردهی پاسخ API و یک تابع ناهمگام (asynchronous) برای انجام درخواست شبکه است.

// مدل برای یک فیلم
struct Movie: Codable, Identifiable {
    let id: Int
    let title: String
    let overview: String
}

// مدل برای پاسخ API
struct TrendingMoviesResponse: Codable {
    let results: [Movie]
}

// کلاس سرویس برای دریافت فیلم‌های پرطرفدار
class MovieService {
    private let baseURL = "https://api.themoviedb.org/3"
    private let apiKey = "<your-api-key>" // کلید API خود را فراموش نکنید!
    
    func fetchTrendingMovies() async throws -> [Movie] {
        let urlString = "\(baseURL)/trending/movie/day?api_key=\(apiKey)"
        guard let url = URL(string: urlString) else {
            throw URLError(.badURL)
        }
        
        let (data, _) = try await URLSession.shared.data(from: url)
        let decoder = JSONDecoder()
        let trendingResponse = try decoder.decode(TrendingMoviesResponse.self, from: data)
        return trendingResponse.results
    }
}

پیاده‌سازی ابزار

در مرحله بعد، ما «ابزار» واقعی را ایجاد می‌کنیم که مدل زبان آن را فراخوانی خواهد کرد. این کار با ایجاد یک ساختار (struct) که از پروتکل Tool پیروی می‌کند، انجام می‌شود. این پروتکل به یک name، یک description (تا مدل بداند ابزار چه کاری انجام می‌دهد) و یک متد call که منطق را اجرا می‌کند، نیاز دارد.

دمویی از اپلیکیشن قبل از استفاده از فراخوانی ابزار

import FoundationModels

struct GetTrendingMoviesTool: Tool {
    // نام و توضیحات واضح برای درک مدل
    let name = "getTrendingMovies"
    let description = "Get trending movies and their information"
    
    let service = MovieService()

    @Generable
    struct Arguments {}
    
    // این متد زمانی که مدل ابزار را فراخوانی می‌کند، اجرا می‌شود
    func call(arguments: Arguments) async throws -> [String] {
        let movies = try await service.fetchTrendingMovies()
       
        // فرمت کردن داده‌ها به یک آرایه رشته‌ای ساده برای مدل
        let formattedMovies = movies.map { movie in
            "\(movie.title): \(movie.overview)"
        }
        
        return formattedMovies
    }
}

ساختار Arguments در اینجا خالی است زیرا تابع ما به هیچ ورودی نیاز ندارد. با این حال، شما می‌توانید به راحتی پارامترهایی را اضافه کنید. به عنوان مثال، برای فیلتر کردن بر اساس ژانر، می‌توانید یک ویژگی genre: String به ساختار Arguments اضافه کنید و مدل به طور هوشمندانه ژانر را از درخواست کاربر درخواست یا استنباط می‌کند.

جمع‌بندی همه چیز

مرحله نهایی فوق‌العاده ساده است. ما فقط باید در هنگام مقداردهی اولیه، LanguageModelSession خود را از ابزار جدید مطلع کنیم.

@State private var session = LanguageModelSession(tools: [GetTrendingMoviesTool()])

و تمام! اکنون، وقتی برنامه را اجرا می‌کنید و می‌پرسید: «فیلم‌های پرطرفدار کدامند؟»، فریم‌ورک Foundation Models به طور خودکار تشخیص می‌دهد که این سؤال با توضیحات GetTrendingMoviesTool ما مطابقت دارد. این ابزار را فراخوانی می‌کند، که به نوبه خود TMDB API را صدا می‌زند، لیست فیلم‌ها را دریافت می‌کند و داده‌های فرمت‌شده را به مدل بازمی‌گرداند. سپس مدل از این اطلاعات تازه برای ارائه یک پاسخ کامل و به‌روز استفاده می‌کند.

دمویی از اپلیکیشن که با موفقیت اطلاعات فیلم‌های پرطرفدار را نمایش می‌دهد

خلاصه

فراخوانی ابزار، مدل‌های روی دستگاه را از تولیدکنندگان متن منزوی به دستیاران پویا و تعاملی تبدیل می‌کند. با اتصال هوش مصنوعی خود به توابع داخلی برنامه و API‌های خارجی، سطح جدیدی از قابلیت‌ها را باز می‌کنید و به برنامه‌های خود اجازه می‌دهید وظایف آگاه از زمینه را انجام دهند، داده‌های آنی را دریافت کنند و ویژگی‌های واقعاً هوشمندانه‌ای ارائه دهند.

آماده‌اید تا برنامه‌های هوشمندتر و مبتنی بر هوش مصنوعی بسازید؟ در آموزش کامل عمیق‌تر شوید.

منبع: AppCoda

Leave a Comment