2024.10.01
自社の社内情報を未来の“ゴミ”にしないための備え 「情報量が多すぎる」時代がもたらす課題とは?
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.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには