2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
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が非常にいい感じに実行計画を立ててくれるので、ちょっと便利ですよねといったところになります。
というところで、詳しくは以下のブログに書いているので、ぜひご覧いただければと思います。
ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略