Semantic Kernel์ Python SDK์์๋ OpenAI Realtime API์ **Model Context Protocol(MCP)**์ ๋ชจ๋ ์ง์ํ์ฌ, ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ AI ์ํฌํ๋ก์ฐ๋ฅผ ์ ์ฐํ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, Realtime API๋ WebSocket ๋ฐ WebRTC ๊ธฐ๋ฐ์ Realtime Client๋ฅผ ํตํด ํ ์คํธยท์ค๋์ค ์คํธ๋ฆฌ๋ฐ๊ณผ ํจ์ ํธ์ถ์ ์ ๊ณตํ๊ณ , MCP๋ SK๋ฅผ ํธ์คํธ๋ ์๋ฒ๋ก ๋์์์ผ ์ธ๋ถ ๋๊ตฌ์ ์์ด์ ํธ๋ฅผ ํ์ค ํ๋กํ ์ฝ๋ก ์ฐ๋ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๊ฒฐํฉํ๋ฉด, SK ๋ด๋ถ์์ ์ค์๊ฐ ์ ์ถ๋ ฅ ๊ธฐ๋ฅ์ Kernel ํจ์๋ก ๋ํ(wrap)ํ๊ณ , MCP ํ๋ฌ๊ทธ์ธ ํน์ ์๋ฒ๋ก ๋ ธ์ถํ์ฌ ๋ค๋ฅธ MCP ํธ์คํธ/ํด๋ผ์ด์ธํธ์ ์ํธ์ด์ฉํ๋ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
1. OpenAI Realtime API ์ง์
1.1 ์ง์ ํํฉ
-
SK Python ํจํค์ง(
semantic-kernel[realtime]) ์ค์น๋ง์ผ๋ก ์คํ์ Realtime API ํตํฉ์ด ํ์ฑํ๋ฉ๋๋ค (Realtime AI Integrations for Semantic Kernel | Microsoft Learn). -
ํ์ฌ Python ์ ์ฉ, Experimental ๋จ๊ณ์ด๋ฉฐ, .NET SDK์์๋ ์์ง ๊ณต์ ์ง์๋์ง ์์ต๋๋ค (Realtime AI Integrations for Semantic Kernel | Microsoft Learn).
1.2 ์ ๊ณต ๊ธฐ๋ฅ
-
WebSocket ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ(
OpenAIRealtimeWebsocket)์ -
WebRTC ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ(
OpenAIRealtimeWebRTC)๊ฐ ์ ๊ณต๋์ด-
ํ ์คํธยท์ค๋์ค ์์ชฝ์ ์คํธ๋ฆฌ๋ฐํ๊ณ
-
ํจ์ ํธ์ถ(Function Calling)์ด ๊ฐ๋ฅํฉ๋๋ค (Realtime AI Integrations for Semantic Kernel | Microsoft Learn).
-
1.3 ์ฌ์ฉ ์์
from semantic_kernel.connectors.ai.open_ai import OpenAIRealtimeWebsocket, OpenAIRealtimeExecutionSettings
# 1) Realtime ํด๋ผ์ด์ธํธ ์์ฑ
realtime_client = OpenAIRealtimeWebsocket()
# 2) ์คํ ์ค์ : ์์ฑ ์ง์ ๋ฑ
settings = OpenAIRealtimeExecutionSettings(voice="alloy")
# 3) ์ธ์
๊ด๋ฆฌ ๋ฐ ๋ฉ์์ง ์ก์์
async with realtime_client(settings=settings, create_response=True):
async for event in realtime_client.receive():
if event.type == "text":
print(event.text.text, end="")์ด์ฒ๋ผ receive()๊ฐ async generator๋ก ๋์ํ์ฌ, ๋์ฐฉํ๋ ํ
์คํธ๋ ์ค๋์ค ์ฒญํฌ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค (Realtime AI Integrations for Semantic Kernel | Microsoft Learn).
์ฐธ๊ณ
-
์์ธํ ๊ตฌํ ์ฝ๋๋ GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค (semantic-kernel/python/semantic_kernel/connectors/ai/open_ai โฆ).
-
๊ณ ๊ธ ์์ ๋ก **Azure Communication Services(ACS)**๋ฅผ ์ด์ฉํด ์ ํ ํตํ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃฌ ๋ฐ๋ชจ๋ ์ ๊ณต๋ฉ๋๋ค (Realtime AI Integrations for Semantic Kernel | Microsoft Learn).
2. Model Context Protocol(MCP) ์ง์
2.1 MCP ๊ฐ์
- MCP๋ Anthropic์ด ์ ์ํ ๋ชจ๋ธยท๋๊ตฌยท์์ด์ ํธ ์ํธ ์ด์ฉ ํ์ค ํ๋กํ ์ฝ๋ก, stdioยทSSEยทWebSocket ๋ฑ ๋ค์ํ ์ ์ก ๋ฐฉ์์ ์ง์ํฉ๋๋ค (Semantic Kernel adds Model Context Protocol (MCP) support for Python | Semantic Kernel).
2.2 SK์ MCP ๊ธฐ๋ฅ
-
MCP ํธ์คํธ(Client): SK๊ฐ ์ธ๋ถ MCP ์๋ฒ๋ฅผ ํ๋ฌ๊ทธ์ธ์ฒ๋ผ ์ฐ๊ฒฐํ์ฌ ๋๊ตฌ์ ํ๋กฌํํธ๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค
-
MCP ์๋ฒ(Server): SK์ ํจ์ยทํ๋กฌํํธ๋ฅผ MCP ์๋ฒ๋ก ๋ ธ์ถํ์ฌ, ๋ค๋ฅธ ํธ์คํธ์์ ํ์ค ๋ฐฉ์์ผ๋ก ํธ์ถํ ์ ์์ต๋๋ค (Semantic Kernel adds Model Context Protocol (MCP) support for Python | Semantic Kernel).
2.2.1 ์์: MCP ํธ์คํธ
from semantic_kernel.connectors.mcp import MCPStdioPlugin
async with MCPStdioPlugin(
name="ReleaseNotes",
command="uv",
args=["--directory=python/samples/demos/mcp_server","run","mcp_server_with_sampling.py"],
) as plugin:
# plugin์ Kernel ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉ
...์ด ๊ตฌ์ฑ์ผ๋ก ๋ก์ปฌ stdio MCP ์๋ฒ๋ฅผ SK ์์ด์ ํธ์์ ๋ฐ๋ก ํธ์ถํ ์ ์์ต๋๋ค (Semantic Kernel adds Model Context Protocol (MCP) support for Python | Semantic Kernel).
2.2.2 ์์: MCP ์๋ฒ
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
kernel = Kernel()
kernel.add_service(OpenAIChatCompletion(service_id="default"))
# SK๋ฅผ MCP ์๋ฒ๋ก ์คํ
server = kernel.as_mcp_server(server_name="sk")
import anyio
from mcp.server.stdio import stdio_server
async def handle_stdin():
async with stdio_server() as (read, write):
await server.run(read, write, server.create_initialization_options())
anyio.run(handle_stdin)์ด์ sk๋ผ๋ MCP ์๋ฒ๋ก SK ํจ์์ ํ๋กฌํํธ๊ฐ ๋
ธ์ถ๋ฉ๋๋ค (Semantic Kernel adds Model Context Protocol (MCP) support for Python | Semantic Kernel).
3. Realtime API์ MCP ํตํฉ ์๋๋ฆฌ์ค
3.1 ์ํคํ ์ฒ ๊ฐ์
-
Realtime Client๋ฅผ Kernel์ ๋ฑ๋กํ์ฌ
-
KernelFunction์ผ๋ก ๋ํ(wrap)
-
Wrap๋ ํจ์ ๋๋ ์์ด์ ํธ๋ฅผ MCP ์๋ฒ๋ก ๋ ธ์ถ
-
๋ค๋ฅธ MCP ํธ์คํธ/ํด๋ผ์ด์ธํธ๊ฐ ํ์ค ํ๋กํ ์ฝ๋ก ํธ์ถ
์ด๋ ๊ฒ ํ๋ฉด ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๊ธฐ๋ฅ์ MCP ๊ธฐ๋ฐ ํด ์ฒด์ธ์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค (Realtime AI Integrations for Semantic Kernel | Microsoft Learn, Semantic Kernel adds Model Context Protocol (MCP) support for Python | Semantic Kernel).
3.2 ์ฃผ์์ฌํญ ๋ฐ ์ ํ
-
๋ ๊ธฐ๋ฅ ๋ชจ๋ Python SDK ์ ์ฉ์ด๋ฉฐ, ํ์ฌ .NET SDK๋ก๋ Realtime API ํตํฉ์ด ์ ๊ณต๋์ง ์์ต๋๋ค (Realtime AI Integrations for Semantic Kernel | Microsoft Learn).
-
MCP C# SDK๋ฅผ ํ์ฉํ๋ฉด .NET ์ฑ์์ MCP ์๋ฒ/ํธ์คํธ๋ก ์ฐ๋ํ ์ ์์ผ๋, Realtime API๋ Python์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค (Integrating Model Context Protocol Tools with Semantic Kernel: A Step-by-Step Guide | Semantic Kernel).
4. ๊ฒฐ๋ก
Semantic Kernel Python SDK์ Realtime API์ MCP ๊ธฐ๋ฅ์ ๊ฒฐํฉํ๋ฉด, ํ ์คํธยท์ค๋์ค ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ๊ณผ ์์ด์ ํธ ๊ฐ ํ์คํ๋ ์ํธ์ด์ฉ์ฑ์ ํ ๋ฒ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ณต์กํ ๋ฉํฐ๋ชจ๋ฌ ์์ด์ ํธ๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋, ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๋คํธ์ํฌ ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ํ์ดํ๋ผ์ธ์ ์์ฝ๊ฒ ์ค๊ณํ ์ ์์ต๋๋ค. ์์ผ๋ก .NET ์ชฝ Realtime ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด, Python์์ ์๋ํ ์ํคํ ์ฒ๋ฅผ .NET ํ๊ฒฝ์ผ๋ก๋ ํ์ฅํด๋ณผ ์ ์์ ๊ฒ์ ๋๋ค.