
2025.02.06
ポンコツ期、孤独期、成果独り占め期を経て… サイボウズのプロマネが振り返る、マネージャーの成長の「4フェーズ」
Semantic Kernelを使ってGPTと外部ツールを簡単に連携する(全1記事)
リンクをコピー
記事をブックマーク
佐々木峻氏:自己紹介ですね。Acroquest Technologyの佐々木と申します。ふだんは主に検索システムあたりの開発をやっています。
軽くうちの会社の紹介だけさせてください。新横浜にあるシステム開発の会社で、主にIoT関連やデータ分析などをやっています。
最近は、「ChatGPT」と検索システムの結合などをやり始めているので、検索とChatGPTを組み合わせたいという要望があれば、お問い合わせください。
というところで、今日話すことは、3つですね。まず、ReActについて話をして、「Semantic Kernel」がどういうふうに使えるのかといったところで、実際にちょっと作ってみましょうという話をしていきます。
まず、ReActという考え方の話ですね。ReActは、ユーザーの入力をGPTが解釈して、実行は外部ツールを使用するという考え方です。
GPTはどこまでいっても言語モデルなので、やはり文字列を入力して、文字列を返すことしか基本はできません。そういったところの拡張性をほかのツールにやらせよう、プログラムに書かせて実装させようというのがReActの考え方です。
例えば、「OpenAI APIの使い方について、検索してまとめを教えてください」というのであれば、GPTの3モデルが、「OpenAIのAPIの使い方で検索する」というところを考えて、そこから外部ツールを呼び出して、「OpenAI API」みたいなところで検索して、戻ってきた値を「今度は要約しよう」と考えて、予約自体はまた別ツールでやるというのがReActの考え方になります。「Reasoning」と「Action」といったところが「ReAct」の考え方になります。
先ほど言ったとおり、言語モデルは文字列を入れて文字列を返すことしかできませんが、それとの連携が取れるといったところがうれしいところになります。
そんな中で、じゃあSemantic Kernelとは何かという話なんですが、このライブラリ。ロゴらしいロゴはないのですが、ReActを活用したアプリケーションを実装できるライブラリです。
もう1個よく使われるのは、この「LangChain」ですが、(Semantic Kernel)はこれの後発ライブラリですね。
言語はC#かPython。マイクロソフトらしくC#が必要なパーツなので、大人しくC#を使っておいたほうがいいですね。ReActのアプリを簡単に実装できるライブラリです。
簡単な動作イメージですが、概念としては「Kernel」と「Skill」というものがあります。Kernelというのは、先ほどお話ししたReasoning、考えるところ。Skillは、具体的に何をするか? といったところのツールの部分になります。
LangChainは、AgentとToolで分かれていますが、そのSemantic Kernelバージョンです。
ちょっと細かい説明がいろいろ入りますが、Kernelは、先ほどお話ししたとおり処理全体を制御する役割を持っています。
Skillは何ができるか? というところですが、2種類あります。Semantic Functionは、プロンプトのテンプレートを持っているだけの、これを呼び出すというところのSkillですと。
Native Functionは、実際にC#でプログラムで実装して、そのとおりに動かすファンクションです。
Semantic Kernelはおもしろいのが、Plannerという機能があることで、Plannerはユーザーの入力から、どのSkillをどの順番に実行すると良いか、最初に実行計画というのを立ててくれるんですね。
(スライドを示して)例えばここにあるように、「GPTをアシスタントとして使うための情報があるか検索して要約してください」と書くと、最初にサーチが来て、GPTをアシスタントとして使うための情報を検索して、次の行でSummaryDocumentを動かして、要約します。最後に、その結果を出力しますよと計画を立ててくれます。
というところで、「実際にSemantic Kernelを作る時、どういうふうに作ればいいの?」というところを、さらさらと流していきます。
先ほども言ったとおり、作るもののイメージはこのような感じで、「Elasticsearch」の検索ができて、予約できるという2つのSkillを持ったアプリをちょっと簡単に作ってみたいと思います。
やること。Skillを作って、Kernelを実装して、実行してみる、という感じですね。作るSkillは2つです。要約するSkillと、Elasticsearchで検索するSkillです。
最初に、要約するのはGPTに任せればいいので、Semantic Functionを作ります。用意するものは2つで、まずはconfigですね。これはLLM、GPTでのパラメーターを定義するものです。
大事なのが、この中のdescriptionで、ここの中でこのスキルは何ができるものですよと説明ができます。これの説明を見て実行計画を立てるので、ここで適当なことを言うと、ぜんぜん的外れな実行計画を立てられてしまいます。なので、ここは簡潔になるべく英語で書いてあげると、まともな出力になります。
このskpromptがテンプレートですね。このinputに、実際に実行計画を立てた時のinputが入ってきます。
ちょっとこれは細かいので、Elasticsearchで検索しているとだけ覚えてください。Native Functionの実装はこんな感じで作ります。
ここも同じくdescriptionで、この関数は何をするのかというところを簡単に説明しています。
あとはこれを配置して、ディレクトリの中に配置して……。
といったところで、このSkillを配置して、実際に動かしてみます。
Kernelを実装するところに入ります。段階は主に3つで、Skillを登録して、実行計画を立てて、順番に実行していきます。
まずは、Semantic Kernel自身が実行計画を立てるのに使うモデルを定義して、あとはPlannerというSkill……これもSkillの1個なので使えるように登録します。
じゃあちょっと、「Plannerでどのぐらいのことまでできるの?」というのを簡単なデモでお見せします。
例えば、簡単な文章ですね。これはただ単に検索するだけなので、要約まではしなくていいパターンですね。これをやると、出力でサマリーだけを実行するといったところが出てきます。
では次に、「検索して、次に要約してくれ」というのが出てきたらどうなるかというと、先ほど見せたとおり、1回検索して、その後サマリーします。その結果を出力するというところに、計画が立てられます。こっちがいろいろ考えなくても、いい感じに道筋をつけてくれてすばらしいといったところですね。
実際に実行してみると、本当はちょっと長ったらしいコンソールが出てきて、順番に実行計画を立てたものを実行していくのですが、最終的には、検索結果を踏まえて要約したものが出てきます。といったところがSemantic Kernelの説明ですね。
まとめです。まず、Semantic Kernelを使うとReActで簡単に外部ツールと連携したものが実行できます。あとはPlannerが非常にいい感じに実行計画を立ててくれるので、ちょっと便利ですよねといったところになります。
というところで、詳しくは以下のブログに書いているので、ぜひご覧いただければと思います。
ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.03
「昔は富豪的プログラミングなんてできなかった」 21歳で「2ちゃんねる」を生んだひろゆき氏が語る開発の裏側
2025.02.03
手帳に書くだけで心が整うメンタルケアのコツ イライラ、モヤモヤ、落ち込んだ時の手帳の使い方
2025.02.04
日本企業にありがちな「生産性の低さ」の原因 メーカーの「ちょっとした改善」で勝負が決まる仕組みの落とし穴
PR | 2025.02.07
プロジェクトマネージャーは「無理ゲーを攻略するプレイヤー」 仕事を任せられない管理職のためのマネジメントの秘訣
2025.02.05
「納得しないと動けない部下」を変える3つのステップとは マネージャーの悩みを解消する会話のテクニック
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.01.30
2月の立春までにやっておきたい手帳術 「スケジュール管理」を超えた、理想や夢を現実にする手帳の使い方
2025.02.06
落合陽一氏や松尾豊氏の研究は社会に届いているか? ひろゆき氏が語るアカデミアの課題と展望
2025.02.05
エンジニアとして成功するための秘訣とは? ひろゆき氏が語る、自由な働き方を叶えるアプリ開発とキャリア戦略