2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
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.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ