😽

LLM技術研修報告

に公開

LLM技術研修報告

~実用的なLLM応用力を身につけるために~


目次

  1. はじめに
  2. 開発者向けプロンプト技術
     2.1 プロンプト設計の原則
     2.2 プロンプトの反復改善
     2.3 基本NLPタスク:要約・推論・変換・拡張
     2.4 チャットボットの構築
     2.5 限界と注意点(幻覚・誤情報など)
  3. ChatGPT APIによるシステム構築
     3.1 入力フォーマットとToken制御
     3.2 チェーン思考とプロンプト連鎖
     3.3 出力の検証と評価手法
  4. LangChainによるLLMアプリ開発
     4.1 モデル・プロンプト・パーサー構成
     4.2 メモリ・チェーン・代理設計
     4.3 文書ベースのQ&A
  5. LangChainで私有データを活用する
     5.1 ドキュメントの分割とベクトル化
     5.2 RAG構成による情報検索と対話生成
  6. まとめと学びの活用
  7. 今後の学習ステップ(提案)

1. はじめに

本研修では、大規模言語モデル(LLM)の基礎から実践までを体系的に学習した。特に、Prompt Engineering(プロンプト設計)を中心に、ChatGPT APIを活用した対話型アプリケーションの構築、LangChainフレームワークを用いたLLMアプリの開発、さらに私有データとの連携による個別化応用まで幅広く網羅している。各モジュールでは、実践的なコード例とプロンプト設計のベストプラクティスが提示され、開発者が自らアプリケーションを構築・改善するための道筋が明確に示された。今後のLLM応用に向けた確かな基礎を築くことができた研修である。


第2章:開発者向けプロンプト技術

2.1 プロンプト設計の原則

  • 明確で具体的な指示を与えること / Clear and Specific Instructions
  • 十分な思考時間を与えること / Give the Model Time to Think

主なポイント:

  • モデルに求める動作を明文化することで、誤解を減らし安定した出力が得られる。
  • プロンプトの長さは短い方が良いとは限らず、**文脈(context)**を十分に含めることが重要。
  • 分割記号(delimiters) で入力の範囲を示す。
  • モデルに段階的な思考を求める 連鎖推論(Chain-of-Thought) を促す。

技術用語一覧:

用語(日本語) 用語(英語)
プロンプト Prompt
モデル出力 Completion
思考時間 Reasoning Time
分割記号 Delimiter
構造化出力 Structured Output
少数ショットプロンプト Few-shot Prompting

2.2 プロンプトの反復改善

概要:

  • 一度で理想的な出力を得るのは困難なため、**試行錯誤(trial-and-error)**により改善を繰り返す。
  • 出力が冗長すぎる、要点がずれているといった問題点を逐一確認し、プロンプトを微調整。
  • 例として、製品仕様書からマーケティング文書を生成する課題で、文の長さや文体を指定して改善。

ポイント:

  • 出力制御(Output Constraint):語数・トーンなどをプロンプトに明示。
  • 形式指定(例:JSONフォーマット)によって、機械処理しやすい応答を得ることが可能。

2.3 基本NLPタスク:要約・推論・変換・拡張

要約(Summarizing):

  • 長文を一文で要約するプロンプトパターンを紹介。
  • 構文:Summarize the following text delimited by triple quotes.

推論(Inferring):

  • 感情分類(Sentiment Classification)主題抽出(Topic Detection) など。
  • モデルに「まず自分で考えてから」判断させるプロンプトが効果的。

変換(Transforming):

  • 翻訳・校正・形式変換など。
  • 出力形式や文体(例:カジュアル、ビジネス)をプロンプト内で指定可能。

拡張(Expanding):

  • 短文からEメール文、説明文を生成するなど。
  • Few-shot Promptingで文体や構造を示すとより安定。

2.4 チャットボットの構築

  • ChatGPTの会話形式を利用し、ターンベースの対話設計が可能。
  • System / User / Assistant の各ロールを明示して会話設計を行う。
  • 例:子供と祖父母の対話例(詩的・比喩的な回答を促すスタイル指定)

2.5 限界と注意点(幻覚・誤情報など)

概要:

  • LLMはときに 虚偽の事実(hallucination) を生成する。
  • 存在しない製品情報や歴史上の事実をそれらしく述べることがある。

回避策:

  • 出典情報を引用させる。
  • プロンプトで「元の文から抜粋するように」明示する。
  • 出力結果を第三者的に検証する工程を設ける。

第3章:ChatGPT APIによるシステム構築

3.1 モデル、チャット形式、トークンの理解

概要:

  • OpenAIのモデルは チャット形式(Chat Format) に基づく入出力を前提としている。
  • APIでは System / User / Assistant の3種類のロールを活用して文脈制御を行う。
  • トークン(Token) は文字数ではなく「単語の断片」を単位とする計数方式。

技術用語:

用語(日本語) 用語(英語)
チャット形式 Chat Format
トークン Token
システムメッセージ System Message
ユーザーメッセージ User Message
アシスタント応答 Assistant Message

3.2 入力の検証:分類と監査

  • モデル入力に対して事前に**分類(Classification)監査(Moderation)**を行うことで、不適切なリクエストをブロックできる。
  • ChatGPTのAPIには Moderation API が付属しており、暴力・差別・性的内容などを自動検出可能。

3.3 思考の連鎖とプロンプトの組み合わせ

思考の連鎖(Chain of Thought Reasoning):

  • モデルに逐次的な推論を促すことで、複雑な問題への正答率が向上する。
  • 例:「まず考え、自分の解答を出したあと、与えられた答えを検証する」という構造。

プロンプトの連鎖(Chaining Prompts):

  • 複数ステップでプロンプトを組み合わせて処理を分割。
  • 例:要約 → 翻訳 → JSON出力 という3段階プロンプト。

3.4 出力の検証と評価

出力チェック(Check Outputs):

  • モデルが誤答や矛盾を出力する可能性があるため、出力の二重化・検証が重要。
  • 例:複数のプロンプトを使って同一質問に答えさせて、回答の整合性を比較。

評価(Evaluation):

  • 出力の品質評価には、以下の2種類がある:

    • 単純質問評価(Simple QA Evaluation)
    • 複雑質問評価(Complex QA Evaluation)
  • 人手評価(Human Evaluation)と自動評価を組み合わせるのが理想。


3.5 実践例:質問応答システムの構成

  • ユーザー入力に対して、分類→監査→推論→出力検証という一連のフローを構築。
  • ChatGPT APIをLLMシステムのコアコンポーネントとして活用する設計方針が示されている。

第4章:LangChainによるLLMアプリ開発

4.1 モデル・プロンプト・出力パーサーの設計

概要:

  • LangChainでは、モデル(Model)プロンプト(Prompt)出力パーサー(Output Parser) を分離し、再利用性・拡張性を高める。
  • パーサーを使うことで、構造化出力(Structured Output) を容易に扱える。
  • モジュール分離により、プロンプト改善や評価をモジュール単位で行える。

技術用語:

日本語 英語
出力パーサー Output Parser
モデルインターフェース Model Interface
プロンプトテンプレート Prompt Template

4.2 メモリとチェーンの構築

メモリ(Memory):

  • LangChainは対話履歴を管理するメモリコンポーネントを提供。
  • 会話型アプリでは、ユーザーとの対話履歴を活用することで自然な応答が可能。

モデルチェーン(Model Chains):

  • 複数のモデル呼び出しやプロンプトを**チェーン(Chain)**として構成し、ステップバイステップで処理。
  • 例:入力を分類 → 抽出 → 要約 → 書式変換 という処理をひとつのPipelineに統合。

4.3 文書ベースの質問応答

  • 外部ファイル(PDFやテキスト)を読み込み、**ベクトル化(Embedding)**してDB化。

  • ユーザーの質問をベクトルで検索し、関連文脈とともに回答を生成(RAG構成)。

  • 利用される技術:

    • LangChain Retriever
    • Vectorstore(FAISS / Chromaなど)

4.4 代理(Agent)とツール連携

  • LangChainでは、エージェント(Agent) によってツールを動的に呼び出し、複雑なタスクを実行。
  • 例:API呼び出し、計算、ウェブ検索などの外部操作を対話中に実行可能。

4.5 評価フレームワークの提供

  • LangChainはアプリの自動評価ユーティリティも提供しており、以下を支援する:

    • 出力の一貫性、一意性、正確性の評価
    • テスト用の入力セット(データセット)を用いた反復的評価

第5章:LangChainで私有データを活用する

5.1 ドキュメントの読み込みと分割

概要:

  • 私有文書を読み込むには、LangChainのDocument Loaderを利用。
  • 文書を意味のある最小単位に分割することで、ベクトル化の精度を高める。

技術用語:

日本語 英語
ドキュメント読み込み Document Loading
ドキュメント分割 Document Splitting
チャンクサイズ Chunk Size
オーバーラップ設定 Overlap

5.2 ベクトルデータベースと埋め込み

  • 分割されたテキストは、OpenAIなどのEmbeddingモデルでベクトル化される。
  • ベクトル化された文書は、**Vectorstore(例:FAISS、Chroma)**に保存され、後の検索に使用。

ポイント:

  • 質問とベクトルデータベースの**類似度検索(Similarity Search)**により関連文書を抽出。
  • この段階で RAG(Retrieval Augmented Generation)構造 が実現される。

5.3 検索と質問応答

  • ユーザーの質問をベクトル化し、関連文書を検索。
  • 該当文書とともにプロンプトとしてLLMへ渡すことで、私有データに基づく応答が可能に。

5.4 チャットインタフェース構築

  • LangChainのチャット機能と**メモリ機能(Memory)**を組み合わせ、会話的な私有データQ&Aが構築可能。
  • 例:社内ドキュメント、FAQ、議事録などをもとにしたChatbot。

5.5 応用の可能性と注意点

  • 検索対象のドキュメントは機密性の高い情報を含む可能性があるため、セキュリティ制御が重要。
  • 埋め込みモデルやベクトルDBの更新・削除処理も長期運用には必須。

第6章:まとめと活用展望

  • 本研修を通じて、プロンプト設計からアプリケーション実装、私有データ連携までの一連のLLM応用技術を体系的に学んだ。
  • 特に以下のスキルが実践的に身についた:
習得スキル 内容概要
プロンプトエンジニアリング 明示的な指示、少数例、分割、出力制御の技法
ChatGPT APIの統合 チャット構文、分類・監査、思考連鎖、検証技法
LangChainアプリ開発 メモリ・チェーン・パーサー設計、対話型アーキテクチャ
RAGベース質問応答システム Embedding、ベクトル検索、文書分割、再生成の応用
私有データ統合LLMの構築 内部情報を活かした安全かつ精度の高いチャット応答設計

第7章:今後の学習ステップ(5つの提案)

  1. LangChain Agent機能の深掘り
     → 外部ツール統合やマルチステップ推論の自動化フローに進む

  2. RAG構成の運用と評価の最適化
     → ドキュメント更新・Embedding再生成の仕組み化

  3. OpenAI Function Callingの活用
     → 明示的なAPI統合によるツール呼び出しの高度化

  4. セキュアな社内ナレッジベースの構築
     → RBAC(Role Based Access Control)と連携した社内LLM導入

  5. 日本語環境に最適化されたプロンプトパターンの開発
     → 多言語対応を想定したPrompt Engineering技法の比較検証

Discussion