💨

セマンティックカーネルを試す

に公開

はじめに

Semantic Kernel の名前は以前から認識していたものの、実際に触れる機会がなかったため今回試しました。公式クイックスタートに従い必要な Azure リソース(Azure OpenAI など)を用意し、掲載されているコードを最小限調整するだけで動作します。
触ってみた感想として、CLI 上で継続的な対話が簡潔に書ける点が特徴です。従来のLLM API 呼び出しでは毎回自前で履歴を構築・送信する必要がありますが、Semantic Kernel はチャット履歴管理とツール(プラグイン)呼び出しを統合し、対話的実装を標準構造で組み込めます。

https://learn.microsoft.com/ja-jp/semantic-kernel/get-started/quick-start-guide?pivots=programming-language-python


以下はCLIからの実行結果です。
知識のカットオフによって、返ってくる内容にはちょっと疑問がありますが、こんな感じで対話的にAIを扱うことができます。

ついかで

CLIから使えるAIとしてGeminiやClaudeがあります。
あれを起動すると、画面に「GEMINI」や「CLAUDE CODE」の文字が出てきてかっこいいので、同じように「SEMANTIC KERNEL」の文字を出してみようかと思います。

python code
def print_banner():
    """大きめの ASCII アートで Semantic Kernel バナーを表示 (80桁以内)"""
    CYAN = "\033[96m"
    BOLD = "\033[1m"
    RESET = "\033[0m"

    banner = r"""
┌───────────────────────────────────────────────────────────────────┐░
│  ███████╗███████╗███╗   ███╗ █████╗ ███╗  ██╗████████╗██╗ ██████╗ │░
│  ██╔════╝██╔════╝████╗ ████║██╔══██╗████╗ ██║╚══██╔══╝██║██╔════╝ │░
│  ███████╗█████╗  ██╔████╔██║███████║██╔██╗██║   ██║   ██║██║      │░
│  ╚════██║██╔══╝  ██║╚██╔╝██║██╔══██║██║╚████║   ██║   ██║██║      │░
│  ███████║███████╗██║ ╚═╝ ██║██║  ██║██║ ╚███║   ██║   ██║╚██████╗ │░
│  ╚══════╝╚══════╝╚═╝     ╚═╝╚═╝  ╚═╝╚═╝  ╚══╝   ╚═╝   ╚═╝ ╚═════╝ │░
│                                                                   │░
│  ██╗  ██╗███████╗██████╗ ███╗  ██╗███████╗██╗                     │░
│  ██║ ██╔╝██╔════╝██╔══██╗████╗ ██║██╔════╝██║                     │░
│  █████╔╝ █████╗  ██████╔╝██╔██╗██║█████╗  ██║                     │░
│  ██╔═██╗ ██╔══╝  ██╔══██╗██║╚████║██╔══╝  ██║                     │░
│  ██║  ██╗███████╗██║  ██║██║ ╚███║███████╗███████╗                │░
│  ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═╝  ╚══╝╚══════╝╚══════╝                │░
└───────────────────────────────────────────────────────────────────┘░
 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
"""

    subtitle = "Semantic Kernel Interactive CLI"
    tips = [
        "'exit' で終了", 
    ]

    print(f"{CYAN}{BOLD}{banner}{RESET}")
    print(f"{CYAN}{subtitle}{RESET}")
    print()
    print("Tips:")
    for i, t in enumerate(tips, 1):
        print(f"  {i}. {t}")
    print()

プラグイン

https://learn.microsoft.com/ja-jp/semantic-kernel/get-started/quick-start-guide?pivots=programming-language-python

API呼出し・データ検索やプロンプトテンプレートを “関数群” として Kernel に登録し、LLM からツール選択(Function Calling)で呼ばせる仕組みとして、プラグインというものが存在します。

サンプルにあるプラグインだと、Lightsのコードが書かれていますね。
モデルが回答途中で必要な関数(ツール)を自動選択できる状態になっていて、これによりユーザーは「ライトの状態を教えて」「3番のライトを消して」のような自然言語入力をするだけで LightsPlugin の get_lights / change_state が呼ばれ、結果が会話に統合されます。

kernel.add_plugin(
        LightsPlugin(),
        plugin_name="Lights",
    )

とりあえずセマンティックカーネルを触れてみて、どんなものか少しは理解ができた気がします。
今後は、Azure AI FoundryのAIを勝手に呼んでくれる“操作可能な統合エージェント”を作ってみようかな。

ヘッドウォータース

Discussion