플러그인 개념 — 기존 코드를 AI가 호출하게
플러그인 개념 — 기존 코드를 AI가 호출하게
AI 모델이 할 수 있는 일을 늘리는 가장 확실한 방법은, 이미 갖고 있는 기능을 AI가 호출할 수 있게 열어 주는 거예요. Semantic Kernel의 플러그인이 바로 그 역할을 해요. 비즈니스 로직이나 데이터 접근 코드를 플러그인으로 감싸면 AI가 그 함수를 필요할 때 불러서 쓸 수 있죠.
플러그인을 만드는 흐름은 크게 세 단계예요. 먼저 함수를 정의하고, 그걸 커널에 추가하고, 마지막으로 에이전트가 그 함수를 호출하게 만들면 돼요.
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에 넘기지 않으면 비용과 리스크를 줄일 수 있어요.