Slide 1

Slide 1 text

LangChain Agentを使って 自社ツールとChatGPTを連携 ChatGPT単体の限界を越える 2023/09/30 第27回勉強会

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

本日のお話 ● 結論 ○ 自社ツールとChatGPTを連携させるときは、まずLangChain AngentのZero-shot ReActか OpenAI Functionsを利用する。 ○ OpenAI Functionsのほうが、ChatGPTから良い答えが返ってきやすい。 ○ 自社ツールとChatGPT連携のコツはいかに「ツールの説明」を伝えるか。 ● 目次 ○ ChatGPTの概要 ○ LangChain Agent ○ デモ

Slide 4

Slide 4 text

ChatGPTの概要

Slide 5

Slide 5 text

ChatGPT概要 ● ChatGPTはビジネスでも多く活用されてきている ○ ベネッセホールディングス: 社内AIチャット「Benesse GPT」をグループ社員1.5万人に向け に提供開始 ○ 立命館大学: 大学の英語授業に機械翻訳とChatGPTを組み合わせたサービスを試験導入 ● ChatGPTから良い回答をもらうためにはプロンプトが必要 ○ プロンプトエンジニアリングと呼ばれる領域 ○ プロンプトに入れるべき項目やプロンプトを複数回使いこなして良い回答を手に入れるテク ニックなどが登場してきている ● プロンプトエンジニアリング ○ プロンプトで抑える項目 ○ Few-Shot Prompting

Slide 6

Slide 6 text

プロンプトで抑えるべき項目 ● あいまいな質問ではなく、具体的かつ明確な質問にする。 例: 「日本の歴史において重要な出来事は何ですか?」ではなく、「日本の戦国時 代における重要な出来事について教えてください。」 ● 状況やコンテキストを明示する。 例: 「二酸化炭素が温室効果にどのように影響するか説明してください。」 ● どのような形式の回答を望むかを指定する。 「リスト形式で、健康的な生活習慣について5つ挙げてください。」 ● 範囲を限定する 例: 「第二次世界大戦中の日本の経済についての主な特徴は何でしたか?」 ● どの時点の情報や、どの人物の視点からの回答を求めているか示す。 例: 「2010年の日本経済を子供でもわかるように教えてください。」

Slide 7

Slide 7 text

Few-Shot Prompting ● モデルに少数の例 (ショット) を示すことで、特定のタスクをどのように実行 するかを理解させる手法 ● Few-Shot Promptingの例 ○ Prompt 例1: 文章: 「このレストランの料理は最高です!」 感情: ポジティブ 例2: 文章: 「この映画は本当に時間の無駄だった。」 感情: ネガティブ 例3: 文章: 「素晴らしい休日になりました!」 感情: ポジティブ テスト: 文章: 「そのサービスは非常に遅く、不満です。」 ○ 出力 ■ 感情: ネガティブ

Slide 8

Slide 8 text

Promptを工夫しても直面する限界 ● Promptのテクニックはどんどん出てきているが、すべてをChatGPTにやら せることには無理がある ● 新しいデータや自社独自のデータの取得など、そもそもChatGPTだけではで きないこともある

Slide 9

Slide 9 text

ChatGPTに限らずLLMの課題 ● LLMの課題 (参考: MRKL Systems) ○ 最新の情報にアクセスできない 最新の為替や株価など動的に変化していく情報にChatGPTが対応するのは不可能 ○ 独自の情報源にアクセスできない 企業のDBにある顧客名簿などの情報にアクセスできない ○ 推論が不得意 簡単な算術でも計算を間違えることがある ○ ファインチューニングによる汎用性の劣化 特定のタスクを解くためのファインチューニングすることで汎用性が失われることがある ● LangChain Agentを使って、苦手なことは別のツールでやってしまおう!

Slide 10

Slide 10 text

LangChain Agent

Slide 11

Slide 11 text

LangChain Agentとは ● 言語モデルを利用するアプリケー ションのためのフレームワークで あるLangChainの機能の一つ ● 次にどんなアクションを取るかをLLMに 決めてもらい実行する ● 実際にやっていること ○ 「各ツールができること」と「質 問」をレスポンスのフォーマットを 指定してLLMに投げる。 ○ 指定したフォーマットで帰ってきた レスポンスをパースして、次のアク ションを決める。

Slide 12

Slide 12 text

LangChain Agentのイメージ LLMが次のステップで使う適切なツールとツールへのInputを考えてくれる

Slide 13

Slide 13 text

Agent Type ● Agent Type ○ Zero-shot ReAct: ツールの説明のみにもとづいて、どのツールを使用するべきかを決定す る。ReActフレームワークを使用する最も汎用的なAgent。 ○ Structured input ReAct: 複数の入力を受けるツールを使用するAgent。 ○ OpenAI Functions: OpenAIのFunction Callingを使用するAgent。 ○ Conversational: 会話用に設計されたAgent。 ○ Self-ask with search: self-askを利用して検索をするAgent。 ○ ReAct document store: このエージェントは、docstoreと対話するためにReActフレーム ワークを使用します。 ● 今回のでもではZero-shot ReActとOpenAI Functionsを利用

Slide 14

Slide 14 text

OpenAI Function Calling ● 2023年6月リリース ● LangChain Agentが担っていた「次のステップを決定するやり取り」を ChatGPTができるようにファインチューニングされている ● メリット ○ ツール (関数) の挙動をより正確に伝えやすくなった ○ ChatGPTが返してきた答えを頑張って正規表現を使って必要がなくなった。

Slide 15

Slide 15 text

デモ ● LangChain Agentを使ってChatGPTと自社ツールを連携 ○ Zero-shot ReActとOpenAI Functions ○ ChatGPTにツールの説明を渡して、課題を解くために最適なツールを選択してもらう ● https://github.com/knishioka/machine-learning-workshop/tree/main/l angchain