弁護士ドットコム株式会社 Creators’ blog

弁護士ドットコムがエンジニア・デザイナーのサービス開発事例やデザイン活動を発信する公式ブログです。

社内システムで生成AIを活用するコツは業務理解と事前準備

こんにちは。税理士ドットコム事業部の @komtaki です。

ChatGPT が 2022 年 11 月 30 日に出て一年が経ちました。みなさんも生成 AI を本番サービスで活用できてますか。

弁護士ドットコム株式会社でも実運用の壁を乗り越えて、実際にビジネスを変革するため本番サービスへの活用が進んでいます。「Developers Summit 2024」で市橋がプレゼンしていますので、よろしければご覧ください。

GenAI in Production~生成AIに君がみた光と、僕がみた希望~ / 20240215_devsumi2024 - Speaker Deck

その事例を踏まえて、社内システムで生成 AI を組み込む流れとその勘所についてお話しします。生成 AI のカスタマイズに関する専門的な話(ファインチューニングや RAG など)には一切触れず、プロンプトエンジニアリングだけで対応する基本的な内容になっております。

「社内で生成 AI でうちも業務効率化できないか」と聞かれている、生成AIに詳しくないエンジニアが実装する参考になれば幸いです。

Azure Open AI Serviceのおさらい

概要

Azure OpenAI Service – 高度な言語モデル | Microsoft Azure

Azure OpenAI Service は、Microsoft Azureのクラウドプラットフォーム上で提供されるAIサービスです。特に自然言語処理タスクや文章生成などの生成 AI に特化しており、REST などの Web API インタフェースで使用できます。

OpenAI、Meta、その他のさまざまな事前構築済みのモデルがすぐ使えて、現時点で OpenAI に Microsoft の資本が入っているため Chat-GPT と同じモデルが Azure 上で提供されています。また入力データを学習してモデルを改善することがなく、他のユーザーに情報漏洩するリスクがないため、ビジネス利用に適しています。

料金体系

Azure OpenAI Service - 価格 | Microsoft Azure

Azure OpenAI Serviceの料金は大きく4要素できまります。GPT-3.5 と GPT-4 で料金が倍違いますが、GPT-4 の方が明らかに賢くお値段以上の価値があります。

  • モデルの種類
  • 会話で保持するコンテキストの長さ
  • OpenAI に入力する token 数(要約方針指示のプロンプトと要約してもらう文章の量に影響)
  • OpenAI から出力される token 数(要約された結果の量に影響)

token とは文章を意味に沿って分割したものです。日本語では文章の長さに対してトークン数が多くなる傾向があります。

https://platform.openai.com/tokenizer

例えば「文字数とトークンの違いはなんですか」という文字列を解析すると 17 文字ですが 16 トークンに分解されます。

トークン数と文字数

導入の背景は生成AI活用の圧

弊社では、昨年の秋から生成 AI の本番活用がはじまっていました。

www.bengo4.com

その流れで、税理士ドットコムでもなにか出せないか という話が出てきました。

とはいえ、その時点で正社員エンジニアは私一人でした(今は採用が進み、ご縁があり正社員三倍になりました)。業務委託のお力を借りたとしても、日々の業務に忙殺されながら、新規に開発できることには限界があります。生成 AI の大きなチューニングを必要とするような開発のアイデアが出ても、対応できず、のらりくらりとかわしていました。

そんなとき、文章を要約するというタスクを改善できないか、という話が出てきました。これはまさに生成 AI の得意分野です。少ない工数で大きな成果が挙げられるように思えたので、飛びつきました。

税務相談要約自動下書き機能の概要

www.bengo4.com

税理士ドットコムでは毎日たくさんくる中小企業や個人事業主のユーザーさんからきた税務相談の問い合わせを税理士さんに紹介しています。

今回作ったのは、税理士さんに紹介する相談の要約をAzure Open AIで下書きする機能です。

定期実行バッチで詳しい依頼内容がかかれたヒアリングフォームを取得し、Open AI で文章要約を作成しています。

システム概要図 - IRから

巷では RAG とかモデルのカスタマイズとかで高い精度を出していますが、今のところプロンプトエンジニアリングだけで十分な業務効率化ができています。

まさに私のような生成 AI に詳しくない、エンジニアこそぜひ活用するべきだと感じています。

実装前にやる大事なこと3選

OpenAI での文章要約をプログラムで実装するには、要約を指示するプロンプトと要約してほしい文章を Azure Open AI の API になげるのが基本で、プロンプトエンジニアリング以外は非常にシンプルです。

なので生成 AI を組み込んだ機能が使われるかは、プロンプトとモデルの精度がほぼすべてです。同じプロンプトとデータでも結果がかわりますが、ブレは最大限抑える必要があります。

1. 実際の業務フローを自分が理解し、OpenAIなしでできるようになる

まず業務を理解しなければ、Open AI に要約を指示するプロンプトが作れません。そのため手作業で要約を作っている社内の方に、要約を作る際の手順書を教えてもらいました。

そして本番で作られたヒアリングフォームと要約をお手本として 10 件ピックアップして、参考にしながら手順書にそっていくつか自分で要約を作ってみました。

その結果、いくつかの傾向が見えてきました。

  • 1 文目で相談内容について、2 文目で面談方法について要約している。
  • 面談しやすい地域が含まれている場合は、3 文目でテンプレートに地域の名前を当てはめている。
  • 文字数は 100 文字以下にする。
  • 文末が「希望しています」で終わっていることが多い。

これらの特徴を踏まえてプロンプトを作成します。

2 .プレイグラウンドでプロンプトの調整と社内の品質チェック

Azure AI Studio にはプレイグラウンドという機能があります。まさに ChatGPT のようなインタフェースですが、トークン数の表示や system ロールの設定など開発しやすい機能が追加されています。

learn.microsoft.com

プロンプトは OpenAI が公開しているベストプラクティスに沿って構築しつつ、結果をみて微調整を繰り返します。

Best practices for prompt engineering with the OpenAI API | OpenAI Help Center

モデルは GPT-4.0 を使っています。当初 GPT-3.5 で試したのですが、文字数をオーバーするなどちょくちょく指示を無視してきました。一方 GPT-4.0 はきちんと文字数を守り、指示通りに文章を要約してくれました。

やはりベストプラクティスにもある最新のモデルを使えというのは間違いありません。

  1. Use the latest model

ベストプラクティスの 3 にもできる限り具体的な指示が推奨されていますが、要約ならどのような内容をいれるのか細かく指定するほど安定した要約ができます。テンプレートにあてはめて回答させるのも非常に効果的です。

3. Be specific, descriptive and as detailed as possible about the desired context, outcome, length, format, style, etc

今回の事例だと下記のようなプロンプトになりました。

### Command ###
あなたは税理士と中小企業をマッチングする税務相談に詳しいコーディネータです。
ユーザーからの入力は質問と回答からなる配列形式のjson形式のテキストです。
[Process] の通りに考えなさい。

### Settings ###
- 1文目で相談内容について、2文目で面談方法を合計75文字以内で要約しなさい。面談しやすい地域が含まれている場合は、「対面で面談する場合の地域は〇〇あたりを希望しています。」のテンプレートにあてはめて〇〇に地域の名前を入れなさい。
- 要約した内容では、箇条書きを使うかわりに、語尾はできる限り「希望しています」にしなさい。

### Process ###
- 一歩ずつ段階的に考えて答えなさい。
- 見出しや装飾なしで、結果のみ出力しなさい
- [Settings]の内容を守って回答しなさい。

これに架空のヒアリングデータを加えて、要約が出来上がります。ヒアリングフォームは question と answer のキーをもつオブジェクトの配列 json で、非常に長いため全文は割愛しています。

    {
        "answer": [
            "⭕️⭕️市🔸🔸駅"
        ],
        "question": "面談しやすい地域はどのあたりですか?(市区町村または最寄駅等を教えてください)"
    },
ユーザーは2024年度からの確定申告と法人化サポートを希望し、その他に記帳代行や年末調整も依頼したいと考えています。
オンラインと対面の両方での面談が可能で、対面で面談する場合の地域は⭕️⭕️市🔸🔸駅あたりを希望しています。

いくつかパターンを変えて試験的に要約を作ってみたところ、精度がよく微修正だけで済み 30 秒程度で終わるという予測がたてられました。

3. 費用対効果予測

今回の事例では、もともと決められたテンプレートにそって手作業しており、1 件およそ 3 分かかっていました。日々の業務ではこの作業が数十件から数百件発生します。

今回の事例を Open AI の料金に当てはめると、1 件あたり約 15 円になりました。

  • 会話は 1 往復なので、保持するコンテキストは最低限で OK
  • 入力する token 数:約 2500
  • 出力される token 数:約 500
(2500 / 1000 ) * 4.489 + (500 / 1000) * 8.977 = 15.711

2023 年 12 月のため替 149 円 /1$で計算しています。

1 日 100 件だと仮定すると 300 分(5 時間)、人件費を 1h3000 円で計算すると 15000 円になります。1 件の作業は簡単ですが、塵が積って山となりそれなりに人件費がかかっています。

(3分 * 100件 / 60分 ) * 3000 = 15000円

ですが OpenAI を使えば人件費が大幅に圧縮され、1 日 4000 円ちょっとになります。

下書きをするためのOpenAIの料金:15.711 * 100件 = 1571.1円
下書きを修正する人件費:(30秒 * 100件 / 60分 ) * 3000 = 2500円

この結果から、本番導入へと踏み切りました。

実装中に困ったこと3選

1. 一番大変だったのはAzure Open AIの申請

今回、予算の都合で Azure サブスクリプションの作成からやったのですが、Azureへの申請に一番時間がかかりました

2023 年 12 月で影響があったのは下記の 3 つの申請でした。このあたりはどんどん変わっていくので、最新の情報をもとに試してみください。

  • OpenAI Service の利用申請
  • 同一リージョン内での OpenAI Service のクォータ解除の申請
  • GPT-4.0 の日本リージョン解放の申請

OpenAI Serviceの利用申請

社内の有識者にききつつ、こちらの記事を参考に申請を出したのですが、質問項目が非常に多く時間がかかりました。

www.softbank.jp

責任ある AI 運用のためいろいろきかれますが、ここからが始まりです。この申請に通らなければ何もできません。

最後に審査には 10 日くらいかかると出てきますが、翌日には許可がおりました。書いてあることに問題がなければ、すぐ許可されるのかもしれません。

同一リージョン内でのOpenAI Serviceのクォータ解除の申請

サブスクリプションが分かれていても、同一リージョン内で作成できるOpen AI Serviceの数には制限があります

同じリージョンで、本番用、staging 用、検証用と 3 つくらい作りたいですよね。

その場合は申請が必要です。

これは、Azure のサポートセンターから問い合わせれば 2-3 日で対応してもらえます。

GPT-4.0の日本リージョン解放の申請

また現在 GPT-4 は下記の 3 リージョンはデフォルトで利用できるのですが、他のリージョンは段階的に解放されています。

  • Sweden Central
  • Canada East
  • Switzerland North

そのためアカウントを初期に作った人は、日本リージョンが自動で使えるようになっています。しかし今からアカウントを作成して、日本リージョンをすぐ使いたい場合には別途審査が必要です。以下のフォームから申請する必要があります。

Azure OpenAI Service: Request for Quota Increase

税理士ドットコムの事例では、早くリリースしたかったのとバッチで動かしておりレスポンス速度が多少遅くても問題ないため、日本リージョンで GPT-4 の利用は見送って、カナダのリージョンを使っています。

2. OpenAIのレスポンスが遅い

これは確認していなかった私が悪いのですが、実装している途中でOpen AIからのレスポンスが10秒以上かかり処理の途中でタイムアウトすることに気づきました。

そのため当初、ヒアリングフォーム保存時にリアルタイムで要約を生成していたのですが、バッチ処理に切り替えました。

3. 要約の文章が切れることがある

要約してもらう文章が長すぎる場合、要約の途中で文章が途切れるのです。Chat GPT でもよくある現象で、Chat GPT の場合「続けて」というと途切れたあとの文章を教えてくれましたが、API の場合そうはいきません。

またプログラム的に、要約が途切れているか判断するのはコストがかかります。いくつかパターンを確認した結果文章が切れるケースは少なく、要約を最後に人が見て修正するため、対応は見送りました。

まとめ

いくつか要約に対する改善案もでていますが、予想に近い工数が短縮でき、OpenAI の料金も想定内に収まっています。

ですが下書きを作成しているのは全体の一部の案件です。これから改善を重ねながら、全体に拡大していく予定です。

やはり生成AIを活用するには、データの加工や生成結果の検品や効果予測など社内の人を巻き込んだ事前準備が成否をわけます。

ただ弊社では、すでに生成 AI を活用した事例があり、社内で生成 AI 活用のガイドラインができつつあるので、法務確認など社内の調整が比較的スムーズに進んだのは事実です。また一から要約を作る方法を教えてもらいプロンプトで作った要約の検品をコーディネーターの方手伝ってもらったり、開発チーム以外の方にも協力していただき本当に助かりました。

xtech.nikkei.com

生成 AI はここ数年で急速に普及し、ビジネスを大きくかえていくはずです。日本 Microsoft の津坂社長も 2024 年 2 月 20 日の自社イベントで「AI を語る時代から導入する時代に入った」と語っています。

だから今こそ生成AIを使って、エンジニアリングでビジネスを加速するチャンスではないでしょうか。

税理士ドットコムでは、プロダクトの改善以外にも Solr を Open Search 化するなど技術的改善を進めています。メンバー募集中なので、共に改善していく仲間をお待ちしております。