3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

社内チャットボットを作るにあたって考えたこと ~④LLM~

Last updated at Posted at 2025-02-13

はじめに

2024年8月頃からAWS上でBedrockを使って社内向け生成AIチャットボットを作っています。
初めて生成AIを使ってみたところで色々考える点があったので、メモとして残しておくことにしました。

生成AI技術が日々すごいスピードで進歩しているので既に古い技術になっていそうなのと、そもそも初心者が書いておりますで、あまり技術的な参考にはならないと思いますが、ポエム的な感じ?でお読みいただけたら幸いです。

考えたこと④ LLM

image.png

前回からかなり時間が経ってしまい日に日に情報が古くなってしまっていますが、、
今回はLLMについて考えたことを書きたいと思います。

LLMの比較

私達のチャットボットは東京リージョン上で動くことが前提のため、以下の3つのモデルが候補となりました。

  • Amazon Titan Text G1 - Express
  • Anthropic Claude 3 Haiku
  • Anthropic Claude 3.5 Sonnet

このうち、「Amazon Titan Text G1 - Express」は日本語対応がプレビュー版?とのことなので対象外として(ちょっと試しましたがまだまだ使える感じではなかったです)、「Claude 3 Haiku」「Claude 3.5 Sonnet」の比較となりました。

特徴

AWSのサイトからの抜粋です。(比較用に横に並べてみました)
高精度のSonnetと高スピードのHaikuといったところでしょうか。
image.png

料金

Claude 3.5 Sonnetは Claude 3 Haikuに比べて、約10倍高いのお値段設定になってます。

image.png

動作の違い

QAチャットボットに期待する動作は以下のポイントがありました。

①既にQAデータとして登録されている質問には、QAデータから正確に回答させたい
②過去のQAからピタり回答を導きだせない場合には、できるだけ意味合いの近いQAデータから回答させたい
③QAデータに関連しない質問には、はっきり「データなし」と言わせたい

これらに関してLLMのモデルで動作の違いを比較してみました。

※比較の前提として、プロンプトは全ケース共通、QAデータはLLM間で同じものを利用しています。

今回は非常に簡単なプロンプトとしています。
実際のLLMの動作はプロンプトの組み方やRAG構成等に依りますので、
あくまで超簡易的な比較を目的にしたものとしてご参照ください。

比較時に利用したプロンプト(全ケース共通)
あなたの役割は入力されたクエリからコンテキストを検索し回答文を抽出し出力することです
回答文が抽出できた場合原文をそのまま出力してください
回答文が抽出できなかった場合、「データなしと出力してください
出力時は以下のルールに従ってください
事前学習データによる回答は行わないこと
あなた独自の見解コメントも含めないこと

ケース① 既にQAデータとして登録されている質問には、QAデータから正確に回答させたい

クエリ①
服装のルールはありますか?

QAデータ①
服装のきまりはありますか,"服装は原則自由とします。<br>ただし、次の点に留意して実施してください。<br>(1)清潔である(人に不快感を与えない)<br>(2)調和が取れている(働く場にふさわしい)<br>(3)機能的である(動きやすく、仕事がしやすい)"
  • Anthropic Claude 3.5 Sonnet
    image.png

  • Anthropic Claude 3 Haiku
    image.png

結果

  • SonnetもHaikuもQAデータから回答文を抽出できた
  • Sonnetはプロンプト指示に従って原文そのまま回答してくれたが、Haikuはちょっとプロンプト意図を汲み取ってもらえなかった様子。
  • 回答スピードはSonnetが2.547sに対してHaikuは1.299sとHaikuのほうが1秒以上早かった
LLM 回答速度 トークン数 料金
Claude 3.5 Sonnet 2.547 s 1.335K 0.0052410 USD
Claude 3 Haiku 1.299 s 1.362K 0.0004665 USD

ケース② 過去のQAからピタり回答を導きだせない場合には、できるだけ意味合いの近いQAデータから回答させたい

クエリ②
関西支店の住所を教えて

```ruby:QAデータ②
本社・拠点の住所や電話番号を教えてください,"本社・拠点の住所や電話番号については、会社のホームページを参照してください。<br><a href=""https://example.com/"" target=""_blank"">事業所一覧・アクセス</a>"
  • Anthropic Claude 3.5 Sonnet
    image.png
  • Anthropic Claude 3 Haiku
    image.png
    image.png

結果

  • Sonnetは拠点の住所に関する質問として質問意図の近いQAデータから回答を出してくれた
  • Haikuは「データなし」やハルシネーション(全く異なる住所を回答)することがあった
  • 回答スピードはSonnetが1.766sに対してHaikuは725msとHaikuのほうが1秒以上早かった
LLM 回答速度 トークン数 料金
Claude 3.5 Sonnet 1.766 s 1.191K 0.0044490 USD
Claude 3 Haiku 725.332 ms 1.147K 0.0003098 USD
ケース③ QAデータに関連しない質問には、はっきり「データなし」と言わせたい
QAデータ③
なし
  • Anthropic Claude 3.5 Sonnet
    image.png

  • Anthropic Claude 3 Haiku
    image.png

結果

  • Sonnetはプロンプト指示通り「データなし」と回答してくれた
  • Haikuもデータなしだったが回答文としては独自の文面だった
  • 回答スピードはSonnetが954msに対してHaikuは1.107sとSonnetのほうが若干早かった
LLM 回答速度 トークン数 料金
Claude 3.5 Sonnet 954.915 ms 1.151K 0.0035250 USD
Claude 3 Haiku 1.107 s 1.211K 0.0003708 USD

考えた結果

今回のチャットボットではプロンプト指示に対する正確性と回答精度を優先したため、『Claude 3.5 Sonnet』を採用しました。私のような初心者の甘いプロンプトでも意図を理解して動いてくれる点が特に有難く感じました。

ただ、回答スピードが若干遅かったり(他の処理も入れたりすると1秒が大事になる)、コスト面ではHaikuのほうがお得だったりするので、プロンプト等で精度改善できるところはHaikuにするなど使い分けしていきたいと思います。
また、『Claude 3.5 Haiku』もそのうち東京にやってくるかと思いますので、最新モデルに切り替えて使っていきたいと思います。

image.png

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?