0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「AIが使えない」と嘆く前に:対話の限界と、道具の選び方

0
Last updated at Posted at 2025-11-09

はじめに

SNSでよく見かける投稿があります。

「AIに質問したけど、期待と全然違う答えが返ってきた。使えない」
「ああ言えばこう言うのに、求めているコードが出せない。性能が悪い」

本当にAIの性能が悪いのでしょうか?
それとも、使い方の問題でしょうか?

実は、どちらも正しくて、どちらも間違っています

この記事では、「AIが使えない」問題を2つの側面から解説します:

  1. 対話で解決できる問題:質問の仕方、コミュニケーションの改善
  2. 対話では解決できない問題:汎用LLMの構造的限界と、適切な道具の選び方

Part 1: 対話で解決できる問題

情報の非対称性

まず理解すべきは、あなたとAIの間には大きな情報の差があるということです。

あなたの頭の中

  • 解決したい問題の全体像
  • 技術スタック、パフォーマンス要件、既存コードの制約
  • なぜそれを求めているか(背景・文脈)
  • 過去の設計判断、プロジェクトの慣習
  • 期待する答えのイメージ

AIが見えているもの

  • あなたが言葉にした部分だけ
  • 一般的なパターンからの推測
  • 学習データに基づく確率的な選択

このギャップが、「期待と違う答え」を生み出します。

実例:人間同士でも起こる問題

これは人間同士でも同じです。

ベテランが新人に指示
「この処理、改善しといて」

新人の心の声

  • 何を改善?パフォーマンス?可読性?保守性?
  • どこまでやっていい?既存の関数使う?新規実装?
  • 他のコードとの整合性は?命名規則は?
  • テストも書く?

でも質問できない

  • 「こんなこと聞いたら怒られる?」
  • 「常識として知ってるべき?」

→ 推測で実装 → 期待と違う → やり直し

AIも全く同じ構造です。ただしAIには「質問を躊躇する」という心理的障壁はありません。しかし多くのAIは「推測して即座に答える」ように設計されているため、結果的に同じ問題が起こります。

効果的な対話の3つの原則

1. 前提・制約を明示する

悪い例

「この処理を改善して」

良い例

「既存のハッシュテーブル構造を維持したまま、
検索パフォーマンスをO(n)からO(1)に改善したい。
メモリ制約は1GB以内で、スレッドセーフである必要がある」

2. AIに選択の理由を説明させる

「なぜそのアプローチを選んだのか、理由を説明して」

→ AIの推測プロセスが可視化される
→ ズレがあればそこで修正できる
→ あなた自身の理解も深まる

3. 対話で精度を上げる

間違った期待

  • 1回の質問で完璧な答えを得る
  • AIが「察して」正解を出す

正しい理解

  • 最初の回答は「たたき台」
  • フィードバックで方向修正
  • 対話を重ねて精度を上げる
  • 人間同士のコードレビューと同じプロセス

AIに「選択肢を聞く」技術

パターン1: AIに白紙委任しない

悪い例

「最適な方法を教えて」

良い例

「A(ハッシュテーブル)とB(ソート済み配列+二分探索)の方法があるが、
このケース(100万件のデータ、検索頻度が高い、更新は少ない)では
どちらが適切か?理由も含めて」

パターン2: 不明点を洗い出してもらう

「この要件で実装する前に、確認すべき点を列挙して」

→ 自分が見落としていた情報が見えてくる
→ 要件定義の抜け漏れチェックになる

パターン3: トレードオフを明示してもらう

「この実装の利点と欠点、代替案を3つ挙げて」

→ 選択肢が見える
→ 意思決定の材料が揃う

「使える活用」と「使えない嘆き」の分岐点

使えないと嘆く人の思考パターン

  1. 曖昧な質問をする
  2. 期待と違う答えが返る
  3. 「AIは使えない」と結論づける
  4. 終了

効果的に使える人の思考パターン

  1. できるだけ明確な質問をする(完璧じゃなくてもOK)
  2. AIの回答を見て、ズレに気づく
  3. 「なぜそう答えたの?」「他にどんな選択肢がある?」と聞く
  4. フィードバックして方向修正
  5. 対話を重ねて精度を上げる
  6. 期待に近い答えを得る

差は:対話をプロセスとして捉えているかどうか。


Part 2: 対話では解決できない問題

ここまでは「対話のスキル」で解決できる話でした。

しかし、対話だけでは根本的に解決できない問題もあります。

あなたは「専門家」である

例えば、あなたが20年のC言語実務経験を持つエンジニアだとします:

  • 数千のプロジェクトを経験
  • エッジケースの知識が膨大
  • パフォーマンスチューニングの勘所
  • 特定ドメイン(組み込み、金融、医療など)の制約に精通
  • 暗黙知の蓄積

一方、汎用LLM(ChatGPT、Claude、Geminiなど)は

  • インターネット上の一般的な知識で学習
  • Stack Overflowの頻出パターンに強い
  • 教科書的な実装が得意
  • 特定ドメインの深い知識は薄い

ギャップ

  • あなた:「このケースなら、メモリアライメントを考慮してこうすべきだろう」
  • 汎用AI:「一般的にはこうです」
  • あなた:「全然わかってない!使えない!」

これは質問の仕方の問題ではありません
AIに「知識がない」のです。

汎用LLMの構造的限界

1. 学習データの偏り

  • メジャーな分野:Python、JavaScript、機械学習 → 豊富な学習データ
  • ニッチな分野:レガシーシステム、特定ドメインの専門知識 → データ不足
  • 最新情報:学習データのカットオフ(例:2023年4月)以降の情報は知らない

2. ドメイン固有知識の不足

  • 業界特有の慣習、規制、コンプライアンス
  • プロジェクト固有の設計方針、アーキテクチャ
  • 組織内の暗黙知、過去の意思決定の経緯

3. コンテキスト長の限界

  • プロジェクト全体のコードベース(数万〜数十万行)を一度に渡せない
  • 過去の設計判断の経緯を全て説明しきれない
  • 会話の履歴も一定量を超えると古い部分が忘れられる

Part 3: 解決策 - 道具を正しく選ぶ・作る

では、汎用LLMの限界をどう克服するか?

アプローチ1: RAG(Retrieval-Augmented Generation / 検索拡張生成)

何が解決するか

汎用LLMに「あなたの専門知識」を渡すことができます。

仕組み

質問
  ↓
関連情報をベクトルDBから検索
  ↓
検索結果 + 質問 をLLMに渡す
  ↓
LLMが「手元の情報」として回答生成

具体例

  1. 社内ドキュメントをベクトルDB化

    • 設計書、議事録、過去のトラブルシューティング記録
    • PDF、Markdown、Wikiなどを埋め込みベクトルに変換
  2. 質問に関連する部分だけを抽出

    • 質問「認証エラーの対処法は?」
    • → 過去の認証関連トラブル事例を検索
  3. LLMに渡す

    • 「以下の過去事例を参考に回答してください:[検索結果]」
    • LLMは一般知識 + 検索結果 で回答

各LLMでの実装例

⚠️ 重要:API利用とプログラミングが必要

以下の実装例は、LLMのAPIをプログラムから呼び出す方法です。
ChatGPTやClaude.aiのようなWebブラウザでの対話型インターフェースでは利用できません

必要なスキル

  • プログラミング(Python推奨)
  • API キーの取得と管理
  • ベクトルDBの構築(Chroma、Pinecone等)
  • LangChain/LlamaIndexなどのフレームワーク

Webベースの対話型LLMでRAGっぽいことをする代替手段

もしプログラミングせずにWebブラウザだけで使いたい場合、以下の方法があります:

  1. ChatGPT(Web版)

    • ファイルアップロード機能で、関連ドキュメントをアップロード
    • コンテキストに含めて質問
    • 制限:ファイルサイズ、会話ごとにアップロードが必要
  2. Claude.ai(Web版)

    • プロジェクト機能で、ドキュメントを追加
    • プロジェクト内で質問すると、ドキュメントを参照
    • 制限:プロジェクトごとの容量制限
  3. 手動でコンテキストに貼り付け

    • 関連部分を手動でコピペして質問
    • 最も原始的だが、すぐに試せる
    • 制限:コンテキスト長、手間がかかる

これらは「簡易版RAG」であり、完全なRAGではありません

  • 自動検索ができない
  • 大量のドキュメントは扱えない
  • ベクトル検索による高精度な情報抽出は不可

本格的なRAGを実装するには、以下のAPI利用例が必要です


実際にRAGで検索結果をLLMに渡す方法を、各LLMのAPI別に紹介します。

1. OpenAI API(ChatGPT)での実装

from openai import OpenAI

client = OpenAI(api_key="your-api-key")

# ベクトルDBから検索した関連ドキュメント
retrieved_docs = """
【過去事例1】認証エラー: JWTトークンの有効期限切れ
解決方法: リフレッシュトークンを使って再取得

【過去事例2】認証エラー: 署名検証失敗
解決方法: 公開鍵が古い場合は最新の鍵をダウンロード
"""

# ユーザーの質問
user_question = "認証エラーが出ます。どう対処すればいいですか?"

# RAGパターン: システムメッセージで検索結果を渡す
response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[
        {
            "role": "system",
            "content": f"以下の過去事例を参考に回答してください:\n\n{retrieved_docs}"
        },
        {
            "role": "user",
            "content": user_question
        }
    ]
)

print(response.choices[0].message.content)

2. Anthropic API(Claude)での実装

import anthropic

client = anthropic.Anthropic(api_key="your-api-key")

# ベクトルDBから検索した関連ドキュメント
retrieved_docs = """
【過去事例1】認証エラー: JWTトークンの有効期限切れ
解決方法: リフレッシュトークンを使って再取得

【過去事例2】認証エラー: 署名検証失敗
解決方法: 公開鍵が古い場合は最新の鍵をダウンロード
"""

# ユーザーの質問
user_question = "認証エラーが出ます。どう対処すればいいですか?"

# RAGパターン: ユーザーメッセージに検索結果を含める
message = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": f"""以下の過去事例を参考に、質問に答えてください。

<retrieved_documents>
{retrieved_docs}
</retrieved_documents>

<question>
{user_question}
</question>"""
        }
    ]
)

print(message.content[0].text)

3. Google AI(Gemini)での実装

import google.generativeai as genai

genai.configure(api_key="your-api-key")
model = genai.GenerativeModel('gemini-pro')

# ベクトルDBから検索した関連ドキュメント
retrieved_docs = """
【過去事例1】認証エラー: JWTトークンの有効期限切れ
解決方法: リフレッシュトークンを使って再取得

【過去事例2】認証エラー: 署名検証失敗
解決方法: 公開鍵が古い場合は最新の鍵をダウンロード
"""

# ユーザーの質問
user_question = "認証エラーが出ます。どう対処すればいいですか?"

# RAGパターン: プロンプトに検索結果を含める
prompt = f"""以下の過去事例を参考に、質問に答えてください。

過去事例:
{retrieved_docs}

質問: {user_question}
"""

response = model.generate_content(prompt)
print(response.text)

4. ローカルLLM(Ollama)での実装

import requests

# ベクトルDBから検索した関連ドキュメント
retrieved_docs = """
【過去事例1】認証エラー: JWTトークンの有効期限切れ
解決方法: リフレッシュトークンを使って再取得

【過去事例2】認証エラー: 署名検証失敗
解決方法: 公開鍵が古い場合は最新の鍵をダウンロード
"""

# ユーザーの質問
user_question = "認証エラーが出ます。どう対処すればいいですか?"

# RAGパターン: システムプロンプトで検索結果を渡す
response = requests.post(
    'http://localhost:11434/api/chat',
    json={
        "model": "llama3.2",
        "messages": [
            {
                "role": "system",
                "content": f"以下の過去事例を参考に回答してください:\n\n{retrieved_docs}"
            },
            {
                "role": "user",
                "content": user_question
            }
        ]
    }
)

print(response.json()['message']['content'])

実装のポイント

  • 検索結果の渡し方:システムメッセージ、ユーザーメッセージ、プロンプト内包など、LLMによって最適な方法が異なる
  • 構造化:XMLタグ(Claude)や明確な区切りで、検索結果と質問を区別
  • コンテキスト長制限:検索結果が長すぎる場合は、上位N件に絞る、要約するなどの工夫が必要
  • LangChain/LlamaIndex:これらのフレームワークを使えば、上記の処理を自動化できる

メリット

  • 既存のドキュメントをすぐに活用できる
  • 汎用LLMのAPIをそのまま使える
  • 導入が比較的容易

限界

  • 検索精度に依存:関連情報を正しく見つけられないと意味がない
  • 暗黙知は拾えない:ドキュメント化されていない知識は活用できない
  • リアルタイム性:情報を追加してもベクトル化が必要

アプローチ2: 記憶製造機(プロジェクト固有知識の蓄積)

RAGとの違い

  • RAG:既存ドキュメントを検索して参照
  • 記憶製造機:対話を通じて知識を蓄積・成長させていく

仕組み(筆者のAI Vtuberプロジェクトの例)

  1. 対話から重要情報を抽出

    • ユーザーとの会話、設計の意思決定、実装のコツ
    • 「これは覚えておくべき」と判断した情報
  2. エピソード記憶として保存

    • SQLiteベースの記憶DB
    • タイムスタンプ、重要度、カテゴリで管理
  3. 次回の対話で参照

    • 類似の質問が来たら過去の記憶を検索
    • 「前回こう言っていたので、今回はこうします」
  4. 長期記憶として定着

    • 繰り返し参照される記憶は重要度が上がる
    • 記憶の濃淡(重み付け)で優先度管理

メリット

  • 暗黙知も蓄積:ドキュメント化されていない対話内容も記録
  • プロジェクトと共に成長:使えば使うほど賢くなる
  • 個人の思考パターンを学習:あなたの好み、判断基準を理解していく

具体的な実装例

記憶製造機の詳細な設計と実装については、筆者の別記事で解説しています:

📖 関連記事

  1. AI VTuberに「記憶」を持たせたい - RAGを試して気づいたこと

    • RAGの限界と、記憶システムが必要になった背景
    • RAGと記憶製造機の違い
  2. AI VTuberの「記憶製造機」- 構造化記憶システムの設計

    • エピソード記憶、短期記憶、長期記憶の3層構造
    • SQLiteベースの実装
    • 記憶の濃淡(重み付け)アルゴリズム
    • Pythonでの実装コード例

実装のポイント

  • ローカルLLM(Ollama)+ SQLiteで実現
  • 記憶の抽出・要約にLLMを活用
  • 時系列と重要度で記憶を整理
  • エピソード記憶→短期記憶→長期記憶への昇華プロセス

アプローチ3: ローカルLLM + カスタマイズ

なぜローカル?

  1. プライバシー:機密情報、社内データを外部に送らない
  2. カスタマイズ性:ファインチューニング、プロンプト調整が自由
  3. コスト:大量の呼び出しでも固定費(電気代、GPU代)

選び方

汎用モデル(Llama, Mistral, Qwenなど):

  • 広範な知識が必要な場合
  • 日本語対応が必要な場合はQwen、Gemma推奨

ドメイン特化モデル

  • CodeLlama:コード生成に特化
  • BioGPT:医療・生物学に特化
  • FinGPT:金融分野に特化

カスタマイズ手法

1. ファインチューニング

  • 自社データで追加学習
  • 専門用語、業界慣習、コーディングスタイルを学習
  • 必要リソース:GPU(RTX 4090など)、学習データ

2. LoRA(Low-Rank Adaptation)

  • 軽量なカスタマイズ手法
  • 複数の「専門性」を切り替え可能
  • 例:「C言語モード」「Python モード」「ドキュメント執筆モード」

3. システムプロンプト + RAG

  • ファインチューニング不要
  • システムプロンプトで役割を定義
  • 例:「あなたは組み込みシステム専門の20年経験エンジニアです。メモリ効率とリアルタイム性を最優先してください」

ハードウェア要件と性能ベンチマーク

ローカルLLMを動かすには、それなりのスペックが必要です。実際の要件を把握しておきましょう。

モデルサイズ別の推奨スペック

モデルサイズ VRAM(GPU) RAM 用途 推論速度(目安)
7B(小型) 8GB以上 16GB 個人開発、軽い用途 20-40 tokens/sec
13B(中型) 16GB以上 32GB 実用レベル 10-20 tokens/sec
34B(大型) 24GB以上 64GB 高精度が必要 5-10 tokens/sec
70B(超大型) 48GB以上 128GB プロダクション 2-5 tokens/sec

推奨ハードウェア構成例

エントリーレベル(個人開発)

  • CPU:Ryzen 7 / Core i7 以上
  • GPU:RTX 4060 Ti 16GB / RTX 3060 12GB
  • RAM:32GB
  • ストレージ:SSD 500GB以上
  • 予算:15〜25万円程度
  • 動かせるモデル:7B〜13B

ミドルレンジ(実用レベル)

  • CPU:Ryzen 9 / Core i9
  • GPU:RTX 4090 24GB / RTX A6000 48GB
  • RAM:64GB
  • ストレージ:SSD 1TB以上
  • 予算:40〜80万円程度
  • 動かせるモデル:13B〜34B

ハイエンド(プロダクション)

  • CPU:Xeon / Threadripper
  • GPU:複数GPU(RTX 4090 x2、A100 80GB など)
  • RAM:128GB以上
  • ストレージ:NVMe SSD 2TB以上
  • 予算:100万円〜
  • 動かせるモデル:70B以上、複数モデル同時稼働

実際の性能ベンチマーク例

筆者の環境(AI Vtuberプロジェクト)

  • CPU:Ryzen 9 9950X
  • GPU:RTX 4060 Ti 16GB
  • RAM:128GB
  • OS:Ubuntu 24.04 LTS(WSL2)

推論速度実測

  • Llama 3.2 3B:約 40 tokens/sec(CPU推論)
  • Llama 3.2 7B:約 25 tokens/sec(GPU推論)
  • Qwen 2.5 14B:約 15 tokens/sec(GPU推論)
  • 記憶システム込みの応答時間:1〜3秒

量子化による最適化

VRAMが不足する場合、量子化(Quantization)で軽量化できます:

  • FP16(無圧縮):最高精度、VRAMを最も使う
  • INT8(8bit量子化):VRAM使用量が約半分、精度はほぼ維持
  • INT4(4bit量子化):VRAM使用量が約1/4、精度は若干低下
  • GGUF形式:CPU推論も可能、RAM上で動作

:Llama 3.2 13B

  • FP16:26GB VRAM必要
  • INT8:13GB VRAM必要
  • INT4:7GB VRAM必要(RTX 4060 Tiでも動作)

Ollamaのハイブリッド推論(GPU + CPU)

Ollamaには、VRAMを超える大きなモデルも動かせるオフローディング機能があります。

仕組み

  • モデルの一部をGPU VRAM上に配置
  • 残りをシステムRAM(CPU側)に配置
  • 推論時に必要な部分を適宜転送

実例

  • GPU:RTX 4060 Ti 16GB
  • RAM:128GB
  • 34Bモデルも動作可能(通常は24GB VRAM必要)
  • 70Bモデルも動作可能(通常は48GB VRAM必要)

トレードオフ

  • ✅ VRAM制限を超えた大きなモデルを実行できる
  • ✅ 高価なハイエンドGPUが不要
  • ❌ GPU-CPU間の転送時間が発生(推論速度は低下)
  • ❌ RAMの容量が重要になる

推論速度の目安

  • 全てGPU上:20 tokens/sec
  • ハイブリッド(50% GPU + 50% RAM):10-15 tokens/sec
  • ハイブリッド(30% GPU + 70% RAM):5-10 tokens/sec

実用性
速度は落ちますが、対話型アプリケーションなら十分実用的です。
筆者のAI Vtuberプロジェクトでも、ハイブリッド推論で運用しています。

設定方法
Ollamaは自動的に最適な配置を判断しますが、手動で制御も可能:

# モデルの50%をGPUに配置
OLLAMA_NUM_GPU=50 ollama run llama3.2:70b

コストパフォーマンスの考え方

「初期投資が高い」と感じるかもしれませんが:

  • クラウドLLMの月額コスト(5,000〜20,000円)× 12ヶ月 = 6〜24万円/年
  • ローカルGPU投資(20〜40万円)は1年で元が取れる可能性
  • 電気代:RTX 4090で24時間稼働でも月2,000〜3,000円程度

特にプライバシーが重要な場合、ローカルLLMは長期的にコスト効率が良い

アプローチ4: ドメイン特化型クラウドLLMを探す

汎用LLM(ChatGPT/Claude/Gemini)だけが選択肢ではありません

  • コード生成特化:GitHub Copilot, Cursor, Codeium
  • 医療特化:Med-PaLM(Google)
  • 法務特化:Harvey AI
  • 金融特化:Bloomberg GPT

選び方のポイント

1. 学習データの確認

  • どの分野のデータで学習したか?
  • 最新情報の更新頻度は?
  • 日本語対応の質は?

2. API/統合性

  • 既存ツール(VSCode、Slackなど)と統合可能?
  • カスタマイズの自由度は?
  • RAGとの併用は可能?

3. コストとパフォーマンス

  • 料金体系(トークン課金、月額固定、従量制)
  • レスポンス速度、スループット
  • 無料枠、トライアル期間

トークン制限と上位プランの検討

無料プラン・最低限の課金の落とし穴

多くのLLMサービスは無料枠や低価格プランを提供していますが、実務で使うとトークン不足に陥りやすい問題があります。

よくある制約

  • 月間トークン数の制限(例:無料で100万トークン/月)
  • レート制限(1分あたりのリクエスト数)
  • 同時接続数の制限
  • レスポンスタイムの低下(優先度が低い)

実務での影響

  • RAGで長い検索結果を渡すと、すぐにトークンを消費
  • 複数メンバーで使うと、あっという間に上限に到達
  • 制限に達すると、開発が止まる
  • トークンを節約しようとして、精度が落ちる

推奨アプローチ

  1. まず無料/低価格プランで試す

    • LLMの性能、自分のユースケースとの相性を確認
    • どのLLMが「合う」かを見極める
  2. 合うと思ったら、上位プランへ

    • トークン制限を気にせず使える
    • 開発速度が圧倒的に上がる
    • 精度を犠牲にしなくて済む
  3. プラン選択の目安

    • 個人開発:月5,000〜10,000円程度(トークン制限緩和)
    • チーム開発:月20,000円〜(複数メンバー、高頻度利用)
    • プロダクション:従量課金 or エンタープライズプラン

コスト vs 生産性

「月額20,000円は高い」と感じるかもしれませんが:

  • トークン不足で開発が止まる時間のコスト
  • 精度を落としたことで生じるデバッグ時間
  • エンジニアの時給換算

これらを考慮すると、合うLLMには適切に投資する方が長期的にはコストパフォーマンスが高いです。

節約と投資のバランス

  • 汎用的な質問 → 無料/低価格LLM
  • 専門的・重要なタスク → 上位プランの特化LLM
  • ローカルLLMと併用して、コストをコントロール

Part 4: どう組み合わせるか

現実には、複数のアプローチを組み合わせるのが効果的です。

パターン1: 汎用LLM + RAG

向いているケース

  • 既存ドキュメントが豊富
  • 機密性が低い(クラウドLLM利用可)
  • 手軽に始めたい

構成例

  • OpenAI API / Claude API
  • ベクトルDB(Pinecone, Weaviate, Chroma)
  • LangChain / LlamaIndex でRAG実装

パターン2: ローカルLLM + 記憶製造機

向いているケース

  • プライバシー重視(社内データ、個人情報)
  • プロジェクト固有知識を蓄積したい
  • 長期的に育てていきたい

構成例(筆者のAI Vtuberプロジェクト):

  • ローカルLlama(Ollamaで管理)
  • SQLiteベースの記憶DB
  • 記憶の濃淡システム(重要度による重み付け)
  • エピソード記憶 → 長期記憶への昇華

パターン3: ドメイン特化LLM + RAG

向いているケース

  • 専門分野でクオリティ重視
  • クラウドの利便性も維持したい
  • コスト許容範囲が広い

構成例

  • GitHub Copilot(コード生成)
  • 社内コードベースをRAGで参照
  • コーディング規約、過去のPRをコンテキストに

パターン4: ハイブリッド(複数LLM併用)

向いているケース

  • タスクによって最適なLLMが異なる
  • コストとパフォーマンスのバランス重視

構成例

  • 汎用質問 → GPT-4 Turbo(安価、高速)
  • 専門的コード生成 → Claude Opus(高品質)
  • 機密情報処理 → ローカルLlama
  • 画像理解 → Gemini Pro Vision

管理ツール

  • LangSmith:複数LLMの統合管理、トレーシング
  • LiteLLM:統一APIで複数LLMを扱う

筆者のAI Vtuberプロジェクトでも実践しています:

  • Gemini:汎用対話、画像理解(VLM)
  • ローカルLlama:記憶製造機、プライバシー保護
  • LangSmith:エラーハンドリング、パフォーマンス監視

Part 5: 実装のステップ

ステップ1: 現状分析

まず、「何が足りないのか」を明確にします。

チェックリスト

  • □ 汎用LLMで十分な精度が出ない分野は?
  • □ ドキュメント化されているが活用できていない知識は?
  • □ 暗黙知として存在するが言語化されていない知識は?
  • □ 機密性の高いデータは?(クラウドに送れない)
  • □ リアルタイムで更新される情報は?

ステップ2: ツール選択

現状分析に基づいて、適切なアプローチを選びます。

課題 解決策
既存ドキュメントを活用したい RAG
暗黙知を蓄積したい 記憶製造機
特定分野の精度を上げたい ドメイン特化LLM
機密情報を扱う ローカルLLM
コストを抑えたい ローカルLLM + 小型モデル

ステップ3: 小さく始める

いきなり完璧なシステムを作ろうとせず、プロトタイプから始めます。

例:RAGのMVP(Minimum Viable Product)

  1. 重要なドキュメント10件をテキスト化
  2. ChromaDBでベクトル化
  3. LangChainで簡単なRAG実装
  4. 実際に質問して効果を確認

効果が確認できたら拡張

  • ドキュメントを増やす
  • 検索精度を調整
  • チャンク分割のロジック改善

ステップ4: 評価と改善

定量的・定性的に評価します。

定量評価

  • 検索精度(Precision, Recall)
  • 回答の正確性(人間による採点)
  • レスポンス時間

定性評価

  • 期待通りの回答が返るか?
  • 実務で使えるレベルか?
  • ユーザー満足度

継続的改善

  • 失敗事例を分析
  • プロンプトを調整
  • 検索ロジックを改善
  • 記憶の重み付けを調整

まとめ

「AIが使えない」の真の原因

1. 対話の問題

  • 質問の仕方が曖昧
  • 前提条件を伝えていない
  • 1回で完璧を期待している

→ 解決策

  • 明確な指示を出す
  • 対話で精度を上げる
  • AIに選択肢を聞く
  • フィードバックループを回す

2. 道具の選択の問題

  • 汎用LLMでは知識が足りない
  • ドメイン固有の専門性が必要
  • プロジェクト固有の文脈が必要

→ 解決策

  • RAGで既存知識を活用
  • 記憶製造機で暗黙知を蓄積
  • ドメイン特化LLMを探す
  • ローカルLLMでカスタマイズ
  • 複数LLMを組み合わせる

効果的なAI活用のために

対話のスキルを磨く

  • でもそれだけでは足りない

適切なツールを選択・構築する

  • あなたの専門性を「AIに教える」仕組みを作る

小さく始めて、継続的に改善する

  • 完璧を目指さず、まずプロトタイプ
  • 効果を測定しながら拡張

AIは万能ではない。でも正しく拡張すれば、あなたの専門性を増幅するツールになる

「使えない」と嘆く前に、まず対話を改善する。
それでも限界を感じたら、道具を変える・作る。

これが、AI時代のエンジニアに求められるスキルです。


参考資料

筆者の関連記事:

技術リソース:


🤖 本記事は Claude Code との対話から生まれました

GitHub: https://github.com/koshikawa-masato/AI-Vtuber-Project

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?