Bring your app to Siri세션을 정리한 글입니다.
앱을 시리에 연결하는 방법을 소개합니다
Introduction
Integrate with Siri
시리를 사용하면 사용자가 기기 어느화면에서든 앱을 이용해 작업을 수행할 수 있음
사용자들이 앱을 보고있을 때 신속하게 작업수행 할 수있도록 도와줌
Developing with Siri
iOS 10부터 SiriKit이 도입되었습니다
덕분에 개발자는 시스템이 제공하는 인텐트를 통해 사용자가 이미 이용하는 Siri 기능을 앱에서도 사용할 수 있게 지원할 수 있습니다
iOS 16에서는 앱 인텐트가 도입되었습니다
이 새로운 프레임워크는 앱을 Siri, 단축어 Spotlight 등과 통합해 줍니다
앱이 기존 SiriKit 도메인과 겹치지 않는다면 앱 인텐트가 적합한 프레임워크입니다
What's new
올해 Apple Intelligence가 생기면서 siri성능이 크게 향상됨
Apple Intelligence를 통해 세 가지 주요 방식으로 Siri를 더욱 발전시키는 데 필요한 기본 기능을 갖추게 되었습니다
첫째, Siri가 이제 더욱 자연스러운 목소리로 말합니다
둘째, Siri는 이제 더욱 맥락에 맞고 사용자에게 맞춤화됩니다
Apple Intelligence로 Siri가 화면을 인식할 수 있어 사용자가 무엇을 보는지 이해하고 그에 맞게 행동할 수 있습니다
셋째, 언어 이해도가 더욱 풍부해져 이제 Siri와 훨씬 자연스럽게 대화할 수 있습니다
말을 더듬더라도 Siri가 사용자의 의도를 이해할 수 있습니다
방대한 앱 세계를 Apple Intelligence에 연결하기 위한 수단으로
앱 인텐트 도메인이라는 일련의 새로운 API를 구축했습니다
도메인은 도서, 카메라 또는 스프레드시트와 같은 특정 종류의 기능을 위해 설계된 앱 인텐트 기반 API 모음입니다
iOS 18에서는 이러한 도메인 중 12개를 출시
12개 도메인에서 100개 이상의 다양한 동작을 지원
Actions
스키마는 너무 광범위한 용어라 정의를 내려보겠습니다
사전에서는 스키마를 클래스의 모든 멤버에게 공통적으로 적용되는 개념으로 일반적이거나 필수적인 유형 또는 양식이라고 합니다
Siri의 맥락에서 그 의미를 풀어 보겠습니다
Apple Intelligence는 방금 이야기한 도메인에서 Siri에게 새로운 기능을 제공하는 기반 모델에 의해 구동됩니다
이러한 모델은 특정 형태의 인텐트를 예상하도록 학습됩니다
이러한 형태를 스키마라고 합니다
그리고 Assistant Schema를 우리는 API라고 부릅니다
앱 인텐트를 올바른 형태로 구축하면 자연어의 복잡성을 걱정할 필요 없이 학습의 혜택을 누릴 수 있습니다
수행 메서드만 작성하고 나머지는 플랫폼이 알아서 처리하도록 맡겨두면 됩니다
스키마는 각각 해당 인텐트를 사용하는 모든 사용자에게 공통으로 적용되는 일련의 입력과 출력을 정의합니다
이것이 바로 형태(Shape)입니다
이 모든 지오메트리의 중심에는 perform() 매서드가 있습니다
자유롭게 창의력을 발휘해 앱에 적합한 경험을 정의할 수 있습니다
Apple intelligence를 통한 siri요청의 LifeCycle
모든 것은 사용자 요청에서 시작됩니다
사용자 요청은 Apple Intelligence로 라우팅되어 모델을 통해 처리됩니다
Apple의 모델은 스키마를 추론하도록 특별히 학습되어 있어 사용자 요청에 따라 Apple Intelligence가 스키마를 예측할 수 있습니다 적절한 스키마가 선택되면 요청은 toolbox로 라우팅됩니다
이 toolbox에는 기기의 모든 앱의 AppIntent 모음이 스키마별로 그룹화되어 있습니다
인텐트를 스키마에 일치시켜 모델에 추론할 수 있는 기능을 부여합니다
마지막으로 AppIntent를 호출하여 작업을 수행합니다
결과가 표시되고 출력이 반환됩니다
AppIntent
스키마를 따르는 것은 쉽습니다 AppIntent 선언 앞에 Swift 매크로 하나만 추가하면 됩니다
(@AssistantIntent(schema: .photos.createAlbum 추가)
이 예제에서는 photos가 도메인이고 createAlbum이 스키마입니다
스키마의 형태는 컴파일 시 이미 알고 있기 때문에 더 이상 AppIntent에 대한 추가 메타데이터를 제공할 필요가 없습니다
즉, 위의코드를 이렇게 더 줄일 수 있습니다
필요한 경우 선택적 매개변수를 사용하여 Assistant Intent를 확장할 수 있음
(@Parameter(title: ), var albumType: AlbumType? 추가)
앱 인텐트 프레임워크에는 동작을 빌드하기 위한 인텐트만 있는 것은 아닙니다
AlbumEntity처럼 앱의 개념을 모델링하기 위한 엔티티도 있습니다
AppEntity
아래와 같이 Siri에 AppEntity를 노출하기위한 매크로도 추가했음
사전 정의된 형태의 이점으로 위의코드를 더욱 간결하게 구현할 수 있음
또한
엔티티는 필요한 경우
AlbumEntity의 Album Color 속성처럼
새로운 선택적 속성을 선언하여 형태를 훨씬 더 확장할 수도 있습니다
AppEnum
AppEnum을 Siri에 노출하는 것은 엔티티와 인텐트만큼이나 쉽습니다
enum 선언에 새로운 AssistantEnum 매크로를 추가하기만 하면 나머지는 알아서 처리됩니다
Xcode Demo
AppIntent를 구현한 코드에
AssistantIntent 매크로를 추가하여 Siri에 노출할 수 있음
이후 인텐트를 siri에 노출할 때 관련된 엔티티나 enum도 같이 노출해줘야함
알맞은곳에 AssistantEntity, AssistantEnum 매크로를 추가해줌
그게전부임!
Testing
다른 앱 인텐트와 마찬가지로 스키마에 부합하는 앱 인텐트는 단축어 앱에서 자동으로 동작으로 표시되어 전체 단축어 에코시스템에 연결됩니다
여기에는 개인 자동화, 홈 화면 단축어 등이 포함되죠 단축어 앱은 Assistant Schema를 바로 테스트하기 좋은 방법입니다
앞으로는 이러한 동일한 인텐트와 엔티티가 Siri에서 자동으로 작동할 겁니다
Personal context
In-app search
Apple Intelligence를 통해 Siri는 사용자의 개인적 맥락에 대한 풍부한 이해력을 갖추게 됩니다
즉, Siri는 기기 전체에서 안전하고 개인적인 방식으로 사용 가능한 모든 정보를 검색하고 추론할 수 있습니다
기존의 ShowInAppSearchResultsIntent를 기반으로 구축된 이 기능은 시스템이 앱의 검색 기능을 직접 활용할 수 있도록 합니다
앱에서 검색 결과를 표시하는 AppIntent입니다
이는 기존의 ShowInAppSearchResultsIntent 타입을 준수합니다
이제 앱에 내장된 검색 기능을 Siri와 통합하기 위해 시스템 도메인 아래에 새로운 Assistant Schema를 도입합니다
이 새로운 스키마를 따르려면 AppIntent 선언 앞에 Swift 매크로를 추가하기만 하면 됩니다
위의 인텐트처럼 사전 정의된 형태를 활용할 수도 있습니다
ShowInAppSearchResultsIntent 유형을 삭제해서 간결한 앱 인텐트도 구현 가능합니다
Semantic search
이제 Siri는 Apple Intelligence 덕분에 시맨틱 검색을 수행할 수 있는 능력을 갖추게 되었습니다
즉, 반려동물을 검색할 때 단순히 반려동물이라는 단어만 찾는 것이 아니라 고양이, 개, 심지어 뱀까지 찾을 수 있습니다
이제 Siri는 LLM을 통해 반려동물이 무엇인지 이해합니다
콘텐츠를 찾았으면 콘텐츠에 대해 원하는 동작을 바로 수행할 수 있습니다
추가컨텍스트를 제공하는 엔티티 정의가능
IndexedEntity를 준수하여 Siri에게 앱의 콘텐츠를 검색할수있는 기능을 부여할 수 있음
'iyOmSd > Title: Swift' 카테고리의 다른 글
[Swift] WWDC24 Explore machine learning on Apple platforms (0) | 2024.11.22 |
---|---|
[Swift] WWDC23 Debug with structured logging (2) | 2024.11.20 |
[Swift] WWDC24 Meet Swift Testing (1) | 2024.11.14 |
[Swift] WWDC22 Meet Transferable (0) | 2024.11.13 |
[SwiftUI] WWDC24 Enhance your UI animations and transitions (0) | 2024.11.12 |