////
Search

시맨틱 커널이 플러그인을 사용하는 이유

시맨틱 커널 공식문서가 강조하는 주요 개념들 중 하나는 바로 플러그인입니다. 그렇다면 왜 시맨틱 커널은 플러그인을 강조할까요?

시맨틱 커널의 정의

시맨틱 커널은 AI 모델을 효과적으로 활용할 수 있도록 돕는 오케스트레이션 라이브러리입니다. 그렇다면 어떻게 AI 모델을 효과적으로 사용할 수 있도록 한다는 걸까요?

플러그인

이러한 기능들(오케스트레이션)은 전부 그냥 있는게 아닙니다. 늘 어딘가 코드로 구현되어야 합니다.
이때, 플러그인이 그 역할을 맡습니다. 플러그인은 AI가 사용 가능한 기능을 묶어둔 모듈입니다. 따라서 우리들은 플러그인을 이용해 단순히 텍스트 응답을 받는 것이 아니라, DB 조회나 API 호출들이 가능해지는 겁니다.

기존의, AI 모델을 호출하던 방식은 어떻길래?

GPT, Gemini, LLaMA 같은 모델들을 호출해 응답을 생성하는 방식은 그럼 어떤 방식으로 동작해왔던 걸까요? 왜 플러그인이 AI 모델의 역할을 확장시켜준다는 걸까요?
ChatGPT 애플리케이션을 상상해보시면 됩니다. 우리는 텍스트를 입력해 어떤 정보를 원하고, AI가 텍스트 기반의 응답을 생성해 우리에게 답을 주죠.
이때 단점이 들어납니다. AI 모델을 호출하는 하여 응답을 얻는건 좋지만, 그렇다고 해서 우리의 데이터베이스를 조회해 가져온 정보를 토대로 답을 준다던지, 응답을 파일로 저장한다거나, 직접 소스 코드를 실행하지는 못합니다. 자신이 학습해온 정보들을 토대로 과거의 정보를 알려주거나 일반 상식들에 대해서는 잘 답변을 해주죠.

결론

// OpenAI API만을 사용하는 경우 var apiKey = "YOUR_OPENAI_API_KEY"; var httpClient = new HttpClient(); // 단순히 프롬프트를 적어 AI 모델 호출 var request = new { model = "gpt-4", prompt = "현재 서울의 날씨는?", max_tokens = 100 }; var response = await httpClient.PostAsJsonAsync("https://api.openai.com/v1/completions", request); // 결과는, 단순 텍스트이며, 받아온 서울 날씨 정보는 평균적인 날씨를 알려주거나 과거의 날씨를 알려줌(실시간 반영X) var result = await response.Content.ReadAsStringAsync(); Console.WriteLine(result);
C#
복사
// 시맨틱 커널을 이용해 플러그인으로 API를 호출해 얻어온 실시간 날씨 정보를 응답으로 반환 // 응답 형태는 코드 내부를 봐야 알 수 있음 : 단순 텍스트, JSON 등등 var kernel = new KernelBuilder().Build(); // 날씨 API를 조회하는 플러그인 추가 var weatherPlugin = kernel.ImportPluginFromPromptDirectory("./Plugins/Weather"); var result = await kernel.RunAsync(weatherPlugin["GetCurrentWeather"], new() { ["city"] = "Seoul" }); Console.WriteLine(result); // 실시간 날씨 정보 출력
C#
복사
위의 코드와 같이, 우리가 기존에 작성해놓은 코드들이 있을때, 그저 시맨틱 커널을 오케스트레이션 역할로서 커널 객체를 넣어주기만 하면, 플러그인들을 통해 기존 정보들을 얻어낸 다음 AI 모델에 정보를 줌으로써 좀 더 프로젝트에 알맞은 정보들을 알려줄 수 있게 됩니다.