Semantic Kernel์ ์ปค๋ ์ดํดํ๊ธฐ (C#)
Semantic Kernel์์ ์ปค๋์ ์ค์ฌ์ ์ธ ๊ตฌ์ฑ ์์๋ก, AI ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์๋น์ค์ ํ๋ฌ๊ทธ์ธ์ ๊ด๋ฆฌํ๋ ์์กด์ฑ ์ฃผ์ (Dependency Injection) ์ปจํ ์ด๋์ ๋๋ค. ๋ชจ๋ ์๋น์ค์ ํ๋ฌ๊ทธ์ธ์ ์ปค๋์ ์ ๊ณตํ๋ฉด, AI๊ฐ ํ์ํ ๋ ์ด๋ฅผ ์ํํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปค๋์ ์ค์ฌ์ ์์ต๋๋ค
์ปค๋์ ๋ค์ดํฐ๋ธ ์ฝ๋์ AI ์๋น์ค๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์๋น์ค์ ํ๋ฌ๊ทธ์ธ์ ๋ณด์ ํ๊ณ ์์ผ๋ฏ๋ก, Semantic Kernel SDK ๋ด ๊ฑฐ์ ๋ชจ๋ ๊ตฌ์ฑ ์์์์ ์์ด์ ํธ๋ฅผ ๊ตฌ๋ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฆ, Semantic Kernel์์ ์ด๋ค ํ๋กฌํํธ๋ ์ฝ๋๋ฅผ ์คํํ๋๋ผ๋, ์ปค๋์ ํญ์ ํ์ํ ์๋น์ค์ ํ๋ฌ๊ทธ์ธ์ ๊ฒ์ํ ์ ์์ต๋๋ค.

์ด๋ฌํ ๊ตฌ์กฐ๋ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋จ์ผ ์์น์์ AI ์์ด์ ํธ๋ฅผ ๊ตฌ์ฑํ๊ณ , ๊ฐ์ฅ ์ค์ํ ๋ชจ๋ํฐ๋ง์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ปค๋์์ ํ๋กฌํํธ๋ฅผ ํธ์ถํ ๋ ๋ค์๊ณผ ๊ฐ์ ์์ ์ด ์ํ๋ฉ๋๋ค:
-
ํ๋กฌํํธ๋ฅผ ์คํํ ์ต์ ์ AI ์๋น์ค๋ฅผ ์ ํํฉ๋๋ค.
-
์ ๊ณต๋ ํ๋กฌํํธ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ํ๋กฌํํธ๋ฅผ ์์ฑํฉ๋๋ค.
-
ํ๋กฌํํธ๋ฅผ AI ์๋น์ค์ ์ ์กํฉ๋๋ค.
-
์๋ต์ ์์ ํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํฉ๋๋ค.
-
๋ง์ง๋ง์ผ๋ก LLM์ ์๋ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐํํฉ๋๋ค.
์ด ์ ์ฒด ๊ณผ์ ์์ ๊ฐ ๋จ๊ณ๋ง๋ค ์ด๋ฒคํธ์ ๋ฏธ๋ค์จ์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ก๊น , ์ฌ์ฉ์์๊ฒ ์ํ ์ ๋ฐ์ดํธ ์ ๊ณต, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ์ฑ ์ ์๋ AI ๊ตฌํ๊ณผ ๊ฐ์ ์์ ์ ๋จ์ผ ์์น์์ ์ํํ ์ ์์ต๋๋ค.
์๋น์ค ๋ฐ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ์ปค๋ ๋น๋ํ๊ธฐ
์ปค๋์ ๋น๋ํ๊ธฐ ์ ์ ๋ ๊ฐ์ง ์ ํ์ ๊ตฌ์ฑ ์์๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค:
| ๊ตฌ์ฑ ์์ | ์ค๋ช |
|---|---|
| ์๋น์ค | AI ์๋น์ค(์: ์ฑํ ์์ฑ)์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ๊ธฐํ ์๋น์ค(์: ๋ก๊น ๋ฐ HTTP ํด๋ผ์ด์ธํธ)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ ๋ชจ๋ ์ธ์ด์์ ์์กด์ฑ ์ฃผ์ ์ ์ง์ํ๊ธฐ ์ํด .NET์ ์๋น์ค ์ ๊ณต์ ํจํด์ ๋ชจ๋ธ๋ก ์ผ์์ต๋๋ค. |
| ํ๋ฌ๊ทธ์ธ | AI ์๋น์ค์ ํ๋กฌํํธ ํ ํ๋ฆฟ์ด ์์ ์ ์ํํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ตฌ์ฑ ์์์ ๋๋ค. ์๋ฅผ ๋ค์ด, AI ์๋น์ค๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์ธ๋ถ API๋ฅผ ํธ์ถํ์ฌ ์์ ์ ์ํํ ์ ์์ต๋๋ค. |
์ปค๋์ ์์ฑํ๋ ค๋ฉด, ํ์ผ ์๋จ์ ํ์ํ ํจํค์ง๋ฅผ ๊ฐ์ ธ์ต๋๋ค:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;๊ทธ๋ฐ ๋ค์, ์ปค๋์ ์์ฑํฉ๋๋ค:
// ์ปค๋ ๋น๋ ์์ฑ
var builder = Kernel.CreateBuilder();
// Azure OpenAI ์ฑํ
์์ฑ ์๋น์ค ์ถ๊ฐ
builder.AddAzureOpenAIChatCompletion(modelId, endpoint, apiKey);
// ๋ก๊น
์๋น์ค ์ถ๊ฐ
builder.Services.AddLogging(c => c.AddDebug().SetMinimumLevel(LogLevel.Trace));
// ํ๋ฌ๊ทธ์ธ ์ถ๊ฐ
builder.Plugins.AddFromType<TimePlugin>();
// ์ปค๋ ๋น๋
Kernel kernel = builder.Build();MCP ์๋ฒ ์์ฑํ๊ธฐ
Semantic Kernel ์ธ์คํด์ค์ ๋ฑ๋ก๋ ๊ธฐ๋ฅ์ผ๋ก๋ถํฐ MCP ์๋ฒ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ง์ํฉ๋๋ค.
์ด๋ฅผ ์ํด, ์ผ๋ฐ์ ์ผ๋ก ์ปค๋์ ์์ฑํ ๋ค์, ํด๋น ์ปค๋๋ก๋ถํฐ MCP ์๋ฒ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Mcp;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(modelId, endpoint, apiKey);
builder.Plugins.AddFromType<TimePlugin>();
var kernel = builder.Build();
// MCP ์๋ฒ ์คํ
var server = new McpServer(kernel);
server.Start();์ด๋ ๊ฒ ํ๋ฉด, Semantic Kernel์ ๋ฑ๋ก๋ ๊ธฐ๋ฅ์ ํ์ฉํ๋ MCP ์๋ฒ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ Microsoft Learn์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค.