본문 바로가기
취미/컨퍼런스

Flutter를 위한 AI 백엔드 앱 만들어보기, 그런데 Semantic Kernel을 곁들인 (feat. Semantic Kernel) (유저스틴 - Microsoft) - Flutter In Production Extended Seoul

by WooHey 2025. 1. 12.

본 게시글은 Flutter in Production 컨퍼런스 참여 후 작성한 글입니다.
Flutter In Production Extended Seoul 컨퍼런스 후기

 

 

들어가며..

이번 세션은 semantic kernel 의 소개와 함께 예제 코드를 통해 streaming API 와 non-streaming API 의 구현을 Semantic kernel 을 통해 구현하는 방법, 또 실제 프로젝트에서 어떻게 활용하면 좋은 지에 대한 내용이 담겨있다.

 

 


 

AI 오케스트레이션이 뭐야?

우선, 오케스트레이션에 대해 설명을 하자면,

오케스트레이션(Orchestration)은 여러 요소나 시스템을 통합적으로 관리하고 조율하여 하나의 작업을 효율적으로 수행하게 만드는 것을 뜻한다.

즉, 다양한 작업이나 프로세스를 한데 모아 체계적으로 조율하는 개념이다.

 

마치 여러 악기가 함께 연주하여 하나의 아름다운 음악을 만들어내는 오케스트라 느낌이다.

 

 

그렇다면, AI 오케스트레이션은?

AI 오케스트레이션은 다양한 AI 서비스모델통합하고, 이를 효율적으로 조율하여 응답을 생성하는 프로세스이다.

 

AI 오케스트레이션의 필요성

AI 서비스는 다양한 데이터 형식과 응답 구조를 가질 수 있다.

때문에 이를 효율적으로 처리하고, 필요에 따라 스트리밍 및 비동기 처리를 지원해야 하는데, Semantic Kernel 을 통해 이러한 작업이 체계적으로 구현 가능하다.

 

 

 

Semantic Kernel 이란?

AI 오케스트레이션을 위한 마이크로소프트에서 개발한 오픈소스 프로젝트이다.

 

여기서 Semantic Kernel은 AI 오케스트레이션의 중추적 역할을 수행하고,

API 호출, 데이터 처리, 비동기 로직 구현을 간단하게 통합할 수 있다.

또한 의존성 주입과 빌더 패턴을 통해 유연하게 API 설계가 가능하다.

이미지 출처

 

 

Streaming API 와 Non-Streaming API

Streaming API

데이터를 점진적으로 반환하는 방식으로, 사용자가 요청한 데이터가 실시간으로 스트림 형태로 전달된다.

 

장점

  • 실시간 처리와 효율적인 자원 사용.
  • 메모리 소비 감소.
  • 대규모 데이터 처리 및 실시간 응답이 필요한 애플리케이션에 적합.

구현

  • CompleteChatStreamingAsync 메서드 활용.
  • 데이터는 Async Enumerable로 반환되어 순차 처리 가능.

예시

{ "content" : "이것은 응답 입니다." }

 

 

Non-Streaming API

데이터를 한 번에 반환하는 방식이다.

yield return 을 통해 마치 Chat GPT 의 응답 처럼 한 음절씩 응답을 보여줄 수 있다.

 

장점

  • 단순한 데이터 요청 및 처리에 적합.
  • 짧은 응답 시간 제공.

구현

  • CompleteChatAsync 메서드 활용.

예시

{ "content" : ["이것은", "응답", "입니다."] }

 

 

구현 예제 코드

예제 소스코드

 

 

 

Semantic Kernel과 AI 오케스트레이션의 결합

유연한 호출 방식

  • Semantic Kernel을 통해 스트리밍과 논 스트리밍 방식을 혼합하여 API 설계 가능.
  • 각 방식의 특성을 활용해 사용자 경험 최적화.

AI 모델과 API의 통합

  • Semantic Kernel은 AI 모델과 API 간의 데이터 흐름을 원활하게 관리.
  • 프롬프트를 기반으로 요청을 처리하고, 결과를 효율적으로 반환.

개발 생산성 향상

  • Semantic Kernel은 의존성 주입과 빌더 패턴으로 복잡한 설정을 단순화.
  • AI 오케스트레이션 작업을 자동화하고, 재사용 가능한 구조를 제공.