Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
LLMアプリケーションの デバッグ・テスト・評価・監視を楽にする LangSmith 2024/02/24 第32回勉強会
Slide 2
Slide 2 text
自己紹介 ● 名前: 西岡 賢一郎 ○ Twitter: @ken_nishi ○ note: https://note.com/kenichiro ○ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) ● 経歴 ○ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ○ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ○ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ○ CDPのスタートアップ (Sr. PdM)・株式会社データインフォームド (CEO)・株式会社ディース タッツ (CTO) ○ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
Slide 3
Slide 3 text
本日のお話 ● LLMアプリケーションのデバッグ ● LangSmith ● デモ
Slide 4
Slide 4 text
LLMアプリケーションのデバッグ
Slide 5
Slide 5 text
LLMアプリケーションの課題 LLMアプリケーション開発においては、さまざまな問 題が発生する。これらの問題には以下が含まれる。 ● モデル呼び出しの失敗: 原因としてはネットワー クエラー、API制限の超過、認証エラーなどがあ る。 ● 出力のフォーマットエラー: 期待したフォーマッ トと異なる出力が生成されることがある。 ● ネストされたモデルのエラー: 複数のモデルを組 み合わせる際に、どの段階で誤った出力が生じ たかの特定が困難である。 これらの問題への対処には、適切なデバッグ手法と ツールの利用が求められる。
Slide 6
Slide 6 text
LLMアプリケーションのデバッグが難しい理由 LLMアプリケーションのデバッグにおける困難は、以下の点に 集約される。 ● 非決定性: LLMの応答は非決定的であり、同一の入力か ら異なる結果が生じうる。この性質は、予測可能性の低 下を招き、デバッグを複雑化する。 ● 複雑なチェーンとエージェント: 複数のステップやコン ポーネントから成るチェーンやエージェントの使用は、 相互作用の複雑さを増す。これにより、エラーの特定が 難しくなる。 ● パフォーマンス評価の難しさ: 正確性、レイテンシー、 トークン使用量など、多岐にわたる指標を考慮し、測定 及び最適化する必要がある。これらの複合的な要因は、 パフォーマンスの評価を困難にする。 ● 共同デバッグの障壁: 特にローカル環境での作業におい て、チーム内でのデバッグ情報の共有が難しい。デバッ グ情報の不足は、協働を妨げる。 これらの課題は、LLMアプリケーション開発の効率と効果を低 下させ、解決策の模索を要する。
Slide 7
Slide 7 text
LLMアプリケーションのデバッグ方法 ● LLMアプリケーションのデバッグ方法は、以下のス テップに基づいている。 ○ ログの確認: エラーメッセージやAPI応答を通 じて問題を把握する。 ○ 単体テストの実施: 各モデルの呼び出しを個別 にテストし、問題箇所を特定する。 ○ 出力の検証: 期待されるフォーマットに従って 出力が生成されているか検証する。 ○ 段階的デバッグの適用: ネストされた呼び出し を段階ごとにデバッグし、各ステップの出力 を確認する。 ● デフォルト状態では、ログが不十分でデバッグが難 しいことがある。デバッグを効率化する方法は、外 部ツールの使用有無によって二つに分けられる。 ○ 外部ツールを使用しない場合: LangChainの Verbose ModeやDebug Modeを活用する。 ○ 外部ツールを使用する場合: LangSmithなどの ツールを利用する。
Slide 8
Slide 8 text
外部ツールを使用しないデバッグ 外部ツールを使用しないデバッグでは、 Debug ModeやVerbose Modeが利用される。 ● Debug Modeの活用: set_debugや langchain.debug = Trueを設定すること で、LangChainの各コンポーネント (チェーン、モデル、エージェント、 ツール、リトリーバ)が受け取った入力 と生成した出力を表示する。 ● Verbose Modeの活用: set_verboseや langchain.verbose = Trueを設定する と、入力と出力が読みやすい形で出力さ れる。ただし、特定の生の出力(例: LLM呼び出しのトークン使用統計)のロ グは省略される。
Slide 9
Slide 9 text
LangSmith
Slide 10
Slide 10 text
LangSmithの概要 ● LangSmithとは: LangChainによって開発されたツールで、信頼性の高い LLMアプリケーションの構築を支援する。 ● 目的: プロンプト、チェーン、エージェントのパフォーマンスを向上させ、 Production環境での信頼性を確保する。 ● 特徴: トレーシング機能がデフォルトで有効になっており、LLM、チェー ン、エージェントへの全呼び出しを自動でログに記録する。 ● LangChainのCallbackと似ているが、LangChainのCallback一つのイベント に対して使用されるのに対し、LangSmithは環境変数を設定するだけですべ てのイベントログの収集が可能
Slide 11
Slide 11 text
LangSmithのデバッグ支援機能 ● 入力と出力の可視化: LangSmithは、LLM呼び出し の正確な入力と出力を明確に表示し、デバッグを容 易にする。 ● イベントシーケンスの追跡: 複雑なチェーンやエー ジェントの動作を可視化し、各ステップの入出力と 実行順序を明確にする。 ● プロンプトの編集: Playground機能を使ってプロン プトを編集し、出力の変化を確認できる。
Slide 12
Slide 12 text
LangSmithの共同デバッグとデータセット管理 ● 共同デバッグ: "Share"ボタンを用いて、デバッグ情 報を共有し、チーム内での協力を促進する。 ● データセットの収集と管理: 不具合や期待外れの出力 をデータポイントとして収集し、"Add to Dataset" 機能でデータセットに追加する。これにより、将来 のデバッグやテストが容易になる。 ● モニタリングと評価: アプリケーションのモニタリン グを通じてパフォーマンスを追跡し、人間による評 価や自動評価メトリクスを用いて品質を保証する。
Slide 13
Slide 13 text
Playground機能で出力の調整 ● ModelやらParameterをUI上で変更可能 ● System, AI, Human, Chatなどに加えて、Toolや FunctionなどもUI上で与えることができる。 ● Token数の確認やAnnotationも可能。
Slide 14
Slide 14 text
Hubでプロンプトを取得 ● LangChain Hubは、LangChainおよび一般的なLLM 用のプロンプトを発見、共有、バージョン管理する ためのツールである。 ● プロンプトのインスピレーションを得たり、自分の プロンプトを世界と共有するのに適している。 ● 現在はLangChainのプロンプトテンプレートをサ ポートしており、今後さらに多くのオブジェクトタ イプが追加される予定である。 ● 残念ながら、日本語のプロンプトはない
Slide 15
Slide 15 text
デモ LangSmithの基本機能の紹介 ● https://smith.langchain.com/ ○ 2月中旬にGA版 (General Availability Version)がリリース ● LangChainとLangSmithとの連携 ● LangSmith上でのログの確認方法 ● ソースコード: https://github.com/knishioka/machine -learning-workshop/blob/main/langcha in/langsmith.ipynb