最新の受注情報を答えてほしい
ようやくRAGによる社内情報の回答ができるようになりましたが、もう一つやりやかったのが、社内データベースからの回答です。OpenAI APIにはFunctionという機能があり、これを使うとデーターベースからの検索結果を回答にすることができます。
データーベースを絡めるしくみ
Function機能には、関数名+説明(Description)を定義する機能があります。この”説明”という部分が重要で、質問に対して、LLMが、この説明と合致すると判断すると、通常の文章回答を作成せず...
この関数を使えという指示(回答)がクライアントに返ってきます。
この指示に従い、クライアントはデータベースを検索し、検索結果をLLMに戻します。
LLMは、この検索結果と一連の質問内容から、再度、回答を生成し、今度は、通常の回答として文章を返します。
例えば、「ABCDを含む、製造番号を教えて」と質問すると、”製造番号”という言葉から、呼び出し関数名(例:getSeiban)と、"ABCD"というパラメータを受け取ることができます(あらかじめFunction機能の定義が必要です)。これらの値を使って、クライアントがデータベースの検索結果をLLMへ返すという仕組みです。
WebAPIは無関係
Functionのサンプルを見ると必ずと言ってよいほど、天気予報の結果を返す例が載っています。なんかWebAPIを使わないとできないように思い込んでしまい、ずいぶん遠回りしてしまいました。先の遷移を理解すれば、クライアントから単純にLAN内のSQLサーバーにアクセスすれば良いだけでした。
ただし万能ではない
通常の回答文章を返すか、Function機能を使うかという判断も、LLMがおこなっています。RAGでちゃんと回答のナレッジがあっても、Function機能と競合した場合、Function機能を優先するようで、意図した回答になりません。
このあたりのロジックは、クライアント側でコントロールできないので、Function機能はオプション扱いとし、ユーザーがFunction機能の有効無効(下記、DB検索)を切り替えられるようにしました※。
※Function機能をAssistantに組み込まないで、Message送信時のオプションで指定します。
これで一区切り
昨年からのLLMの社内活用は、これで一区切りです。今回、Function機能を組み込んでみて、クエリの検索結果だけでは実際の業務で活用するのは難しいと感じました。
今後は、社内の統合システム(受発注システム)との連携を考えてみたいと思っています。例えば「受注情報の登録」と言えば、製番台帳の新規入力フォームが起動するというような具合です。言うなれば「AIランチャー」みたいなものですね。熟練者にはまどろっこしいかもしれませんが、初心者やたまにしかやらない操作に関しては役にたつと思います。
Comentários