今週のざっくばらん
SlashGPT: Dispatcher
オープンソース化したSlashGPTが、私にとっての最高の「遊び場(Playground)」になっているという話は先日書きましたが、先週、そこで実装したのが「Dispatcher」です。
Dispatcherの役割は、ユーザーからの入力(質問やリクエスト)を見て、それに最適なAIエージェントをアクティベート(召喚)して、そのエージェントに処理を委託することです。
SlashGPTの中には、複数にAIエージェントが実装されていますが、それぞれに役割が異なり、(Dispatchterを実装する前は)ユーザーは、適切なエージェントに切り替えた上で、そのエージェントに話しかける必要がありました。例えば、イベントのスケジュールをする場合には、「cal(calenderの省略形)」に切り替えた上で、イベント情報を入力するなど、です。
Dispatcherの役割は、その「エージェントの切り替え」を自動的に行うことにより、手間を減らそうというものです。
別のアプローチとして、さまざまな種類の質問に答えられるようなエージェントを作ることも技術的には可能ですが、プロンプトが複雑になる上に、ソフトウェアの開発がとても煩雑になります。特定の仕事だけを行うエージェントの方が、開発するのもメンテナンスするのも遥かに容易なのです。「ソフトウェアの作りやすさ・メンテナンスのしやすさ」がアーキテクチャを決める、良い例です。
Dispatcherのプロンプトは、ソースコード上では、"prompt": [
"You are responsible in categorize user's question into one of categories below.",
"{agents}"
]
のように定義されていますが、実行時には"{agents}"の部分が展開されて、You are responsible in categorize user's question into one of categories below.
cal:Schedules events
home2:Controls home equipments
drone2:Flying drones
webpilot:Allows users to input a URL, retrieves the web page content, and returns a comprehensible summary of it.
cook:Cooks some food
currency:Converts currency
weather:Gets Weather Info
worldnews:Gets world news
となります。それぞれのエージェントの"description"を読み込んで、展開しているのです。
Dispatcherのfunctionsには、categorizeという関数一つが定義されています。[
{
"name": "categorize",
"description": "Categorize the question",
"parameters": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "Question from the user"
},
この記事は約
NaN 分で読めます(
NaN 文字 / 画像
NaN
枚)