플러그인 개념 — 기존 코드를 AI가 호출하게

플러그인 개념 — 기존 코드를 AI가 호출하게

AI 모델이 할 수 있는 일을 늘리는 가장 확실한 방법은, 이미 갖고 있는 기능을 AI가 호출할 수 있게 열어 주는 거예요. Semantic Kernel의 플러그인이 바로 그 역할을 해요. 비즈니스 로직이나 데이터 접근 코드를 플러그인으로 감싸면 AI가 그 함수를 필요할 때 불러서 쓸 수 있죠.

출처: https://learn.microsoft.com/en-us/semantic-kernel/concepts/plugins/?pivots=programming-language-csharp

플러그인을 만드는 흐름은 크게 세 단계예요. 먼저 함수를 정의하고, 그걸 커널에 추가하고, 마지막으로 에이전트가 그 함수를 호출하게 만들면 돼요.

1) Define your plugin

아래는 조명의 상태를 조회하고 바꾸는 플러그인을 만드는 예시예요.

// C# SDK에서 플러그인 함수를 정의하는 흐름

2) Add the plugin to your kernel

만든 플러그인을 커널에 붙여요. 예제에서는 ChatCompletionService와 함께 플러그인을 커널에 등록해요.

// Create a kernel with Azure OpenAI chat completion and plugin
Kernel kernel = Kernel.builder()
    .withAIService(ChatCompletionService.class, chatCompletionService)
    .withPlugin(lightPlugin)
    .build();

3) Invoke the plugin's functions

커널이 준비되면 에이전트가 플러그인의 함수를 호출할 수 있어요.

플러그인을 만들 때 한 가지 팁이 있어요. 대부분의 LLM이 Python 스타일의 함수 호출로 학습됐기 때문에, C#이나 Java SDK를 쓰더라도 함수 이름과 속성 이름은 snake case(예: my_function)로 쓰는 걸 권장해요.

또 커다란 문서나 기밀 데이터처럼 민감한 데이터를 다룰 때는, LLM에 보낼 필요가 없는 원본이나 중간 결과를 로컬 상태에 두는 것도 고려해요. 불필요하게 LLM에 넘기지 않으면 비용과 리스크를 줄일 수 있어요.

더 알아보기