본문으로 건너뛰기

AI 서비스 제공자 선택

앱에 포함한 AI 서비스 제공자 SDK를 등록한 뒤, 이후 AI 작업에서 AIBudsAISDK가 사용할 제공자를 선택합니다.

사전 요구 사항

  • 기본 AIBuds SDK가 초기화되어 있습니다.
  • 앱에 서비스 제공자 SDK가 하나 이상 설치되고 링크되어 있습니다.
  • 선택할 제공자가 AIBudsAISDK.initialize(_:)에 전달한 배열에 포함되어 있습니다.
  • 서비스 제공자 인증이나 기기 연동 AI 작업 전에 기기 정보가 설정되어 있습니다.

AI를 활용해 구현

AI로 구현

AI로 이 워크플로 구현

공식 “AIBuds AI 제공자 선택” 스킬을 사용해 앱에 맞게 구현하세요.

https://docs-aibuds.github.io/ko/skills/select-aibuds-ai-provider을 읽고 지침을 따르세요. 이 스킬로 “AIBuds AI 제공자 선택”을 이 iOS 프로젝트에 구현하고 검증하세요.
공식 스킬 보기

API Reference

프레임워크

AIBudsAI.xcframework

서비스 제공자 구현은 AIBudsStarBurst.xcframework, AIBudsMagicHelper.xcframework처럼 별도로 배포됩니다.

Import

Swift
import AIBudsAI
import AIBudsAIFoundation
import AIBudsStarBurst
import AIBudsMagicHelper

선언

서비스 제공자 수명 주기는 AIBudsAISDK에서 관리합니다. 제공자 구현은 AIConnectSDK을 준수합니다.

Swift
/// Initializes the SDK with the specified provider implementations.
/// - Parameter aiSDKs: The providers to register. Their order determines
///   recognition priority; a later provider using an already-registered
///   Bluetooth data protocol type is ignored.
/// - Returns: `true` when initialization succeeds; otherwise `false`.
public static func initialize( _ aiSDKs: [AIConnectSDK] ) -> Bool

/// The current AI service vendor.
static var aiServiceVendor: AIServiceVendor { get }

/// Sets the AI service vendor for the SDK.
/// - Parameter aiServiceVendor: The vendor used by subsequent AI services.
/// - Important: Call this method before using AI service-dependent functionality.
public static func setAIServiceVendor(_ aiServiceVendor: AIServiceVendor) -> Void

/// Returns all languages supported by the specified vendor.
/// - Parameter vendor: The vendor whose languages are requested.
/// - Returns: Supported languages, or an empty array when the vendor is `.none`
///   or its provider SDK is not registered.
public static func allSupportedLanguages(for vendor: AIServiceVendor) -> [AIServiceLanguage]

/// Returns the authentication initiation mode for the specified vendor.
/// - Parameter vendor: The vendor whose authentication mode is requested.
/// - Returns: The provider authentication mode.
public static func authenticationMode(for vendor: AIServiceVendor) -> AIAuthenticationMode

/// Indicates whether the device is authenticated for the specified vendor.
/// - Parameter vendor: The vendor whose authentication state is requested.
/// - Returns: `true` when the provider reports an authenticated device.
public static func isAuthenticated(for vendor: AIServiceVendor) -> Bool

서비스 제공자

SwiftObjective-C설명
.noneAIBudsAIServiceVendorNone선택한 제공자가 없는 기본 상태입니다.
.starBurstAIBudsAIServiceVendorStarBurstStarBurst AI(ByteDance)입니다.
.mltcloudAIBudsAIServiceVendorMltcloudMltCloud AI(Meilc)입니다.

정확한 열거형 정의는 AIServiceVendor을 참고하세요.

사용 예제

서비스 제공자 SDK 등록

서비스 제공자는 일반적으로 앱 시작 중 한 번만 등록합니다.

Swift
import AIBudsAI
import AIBudsStarBurst
import AIBudsMagicHelper

let initialized = AIBudsAISDK.initialize([
    StarBurstSDK.shared,
    MagicHelperSDK.shared,
])

guard initialized else {
    print("AIBudsAISDK initialization failed")
    return
}

앱에서 AIBudsAllInOneSDK를 사용하면 초기화 과정에서 번들 AI 서비스 제공자를 설치할 수 있습니다. AIBudsAISDK를 다시 초기화하지 마세요.

서비스 제공자 선택

Swift
let vendor: AIServiceVendor = .starBurst
AIBudsAISDK.setAIServiceVendor(vendor)

print("Selected provider: \(AIBudsAISDK.aiServiceVendor)")
print("Supported languages: \(AIBudsAISDK.allSupportedLanguages(for: vendor))")

인증 필요 여부 확인

연결된 기기의 AI 정보를 설정한 뒤, 앱에서 인증을 시작해야 하는 서비스 제공자를 인증합니다.

Swift
let vendor = AIBudsAISDK.aiServiceVendor

if AIBudsAISDK.authenticationMode(for: vendor) == .appInitiated,
    !AIBudsAISDK.isAuthenticated(for: vendor)
{
    AIBudsAISDK.authenticateDevice(deviceInfo) { success, error in
        guard success else {
            print(error?.localizedDescription ?? "Authentication failed")
            return
        }
        print("AI provider authenticated")
    }
}

참고

  • setAIServiceVendor(_:)는 서비스 제공자 SDK를 등록하거나 설치하지 않습니다.
  • .none을 선택하면 AI 서비스에 의존하는 작업에서 사용할 제공자가 없습니다.
  • initialize(_:)를 두 번 이상 호출하면 false를 반환하고 기존 초기화 상태를 유지합니다.
  • 여러 구현이 같은 제공자 열거형 값을 선언하면 먼저 등록한 구현을 유지합니다.
  • 지원 기능과 언어는 서비스 제공자마다 다를 수 있습니다.