Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LangChainについてのサーベイ
Search
Melonps
June 20, 2023
Technology
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LangChainについてのサーベイ
2023年5月頃に流行ったLangChainについて自ら調べ、研究室内で発表しました。
Melonps
June 20, 2023
More Decks by Melonps
See All by Melonps
コーディングエージェントはTypeScriptの 型エラーをどう自己修正しているのか
melonps
4
740
Zodのデータ変換が便利すぎた。 しかし使いすぎで苦しくなっていった話
melonps
0
76
さくらのAI Engineから始める クラウドネイティブ意識
melonps
0
280
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
670
OpenTelemetryで“見えるIoT”を目指したら クラウドネイティブの奥深さに直面した
melonps
0
72
CloudSeed
melonps
0
190
Other Decks in Technology
See All in Technology
Digitization部 紹介資料
sansan33
PRO
2
7.7k
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
210
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
4
1.2k
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
190
変化の早いClaude Codeを 書籍に落とし込む
oikon48
6
1.3k
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
1
380
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.7k
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
5
980
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
230
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
0
180
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
170
AI時代の強いチームの作り方
yuukiyo
23
15k
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
1
180
GraphQLとの向き合い方2022年版
quramy
50
15k
Designing Experiences People Love
moore
143
24k
GitHub's CSS Performance
jonrohan
1033
470k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
650
Claude Code のすすめ
schroneko
67
230k
The Spectacular Lies of Maps
axbom
PRO
1
890
How to Talk to Developers About Accessibility
jct
2
480
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Transcript
Lang Chainの概要と使い方 第3グループ Kakehi(Melonps) 技術サーベイ 1
発表の概要 •GPTなどLLM(大規模言語モデル )を研究で使いたい人向け •こんなこともできるらしいぞ!という紹介 2 LangChainとは •LLMの機能拡張を実装するためのライブラリ •異なる種類のLLMを同じインターフェースで利用可 •結局はプロンプトに帰着
こんなこと苦手だよね!GPT •正確な情報の提供 •複雑な計算を含む質問 •多数の質問の一括処理 •アートや視覚に関する質問 3 GPTが作成した ミッキーのSVG →GPTの機能を拡張する必要あり!
どのような場合に使うのか? •最新の検索結果の内容も踏まえて返答をさせたい ◦ 検索結果に「~なのだ」を付けて返答させたい[1] •長文を踏まえて返答させたい ◦ pdfなど特殊なデータ形式から[2] ◦ 長文の要約[3] •複雑な計算問題を回答させたい[4]
[1]LangChain の Googleカスタム検索 連携を試す|npaka, https://note.com/npaka/n/nd9a4a26a8932 [2]話題の ChatGPT + LangChain で、膨大な PDF ドキュメントの内容を爆速で把握する - Qiita, https://qiita.com/hiroki_okuhata_int/items/7102bab7d96eb2574e7d [3]長文から論点を抽出して、その論点を軸に文章の要約を試みる| mah\_lab / 西見 公宏, https://note.com/mahlab/n/ndce1a18681e8 [4]LangChainの使い方 紹介編 - Qiita, https://qiita.com/kzkymn/items/a72796c89ffc696034c8#6-wolfram-alpha%E3%81%A8%E9%80%A3%E6%90%BA%E3%81%99%E3%82%8B
具体的な機能は6つ 01. Models :言語モデルやチャットモデルを組み合わせ 02. Prompt :プロンプトの管理、シリアル化 03. Indexes :PDFなどの外部データを使用
04. Chains :複数のプロンプトを入力 05. Agents :どのような手段でどういう順番で解決するか 06. Memory :ChainsやAgentsの内部状態を保持 イメージが掴みにくい方:[5] LangChainの概要と使い方|サクッと始めるプロンプトエンジニアリング【LangChain / ChatGPT】, https://zenn.dev/umi_mori/books/prompt-engineer/viewer/langchain_overview もっと詳しく見たい方:[6] https://langchain.com/features.html
目次 01. 概要 02. 実装例を見てみよう 03. 質問 6
実装例を見てみよう! 01. Models :言語モデルやチャットモデルを組み合わせ 02. Prompt :プロンプトの管理、シリアル化 03. Indexes :PDFなどの外部データを使用
04. Chains :複数のプロンプトを入力 05. Agents :どの手段でどういう順番で解決するかを決定 06. Memory :ChainsやAgentsの内部状態を保持 以降では参考文献[1]の内容を借りて説明
仕様とやりたいこと •仕様 ◦ Google検索の結果を使いたい ◦ 一人称は"ぼく"、語尾には"なのだ"をつけたい •やりたいこと ◦ AgentsにGoogle検索のアクセスを許可 ◦
→それをカスタマイズして語尾などを使用 8
必要なもの •Tools ◦ API:SerpAPI(入力はクエリ) ◦ LLMs:OpenAIのGPT-3系モデル •Agents(6種類) ◦ ツールの説明のみに基づいて使用ツールを決定 →zero-shot-react-description
• プロンプトテンプレート ◦ 「次のToolsにアクセスできるから使って◦◦に答えてね。」 ◦ 「語尾は◦◦を使用してね。それじゃあ始めて。」 • Chains ◦ 複数のプロンプトテンプレートを入力→LLMchain 9
ぼっち・ざ・ろっくの作者の 名前は? 図解 Tools テンプレ プロンプト Tools テンプレ × 2
Agents 質問 はまじあきなのだ。 回答 Chains
コードを見る(Python) 11 from langchain.agents import ZeroShotAgent, Tool, AgentExecutor, load_tools from
langchain import OpenAI, SerpAPIWrapper, LLMChain # Toolsの準備 tools = load_tools([ "google-search" ], llm=OpenAI()) # デフォルトでGPT-3のモデルを選択 # プロンプトテンプレートの準備 prefix = """次の質問にできる限り答えてください。次のツールにアクセスできます :""" suffix = """始めましょう! 最終的な答えを出すときは、一人称は "ぼく"、語尾には"なのだ"を使用してください Question: {input} {agent_scratchpad}""" prompt = ZeroShotAgent.create_prompt( tools, # Agentsがアクセスできる Toolのリスト prefix=prefix, # Tools一覧の前に付けるテンプレート suffix=suffix, # Tools一覧の後に付けるテンプレート input_variables=["input", "agent_scratchpad"] # 最終プロンプトが期待する入力変数のリスト ) # Agentsの準備 llm_chain = LLMChain(llm=OpenAI(temperature=0), prompt=prompt) # 温度が低いほど出現率の高い単語を選択 agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools) agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools, verbose=True)
説明の正確さの予測 12 agent_executor.run( "ぼっち・ざ・ろっくの作者の名前は? ") > Entering new AgentExecutor chain...
Thought: この質問に答えるために、 Google Search を使う必要がある Action: Google Search Action Input: "ぼっち・ざ・ろっくの作者 " Observation: まんがタイムきらら MAXで『ぼっち・ざ・ろっく!』載せてもらってます ⑤巻発売中。アニメ 2022年10~12月放 送してました。バンド大好き!通知切ってるのでリプライ ... 『ぼっち・ざ・ろっく!』( BOCCHI THE ROCK! )は、はまじ あきによる日本の 4コマ漫画。『まんがタイムきらら MAX』(芳文社)にて、 2018年2月号から4月号までゲスト連載 ... Nov 29, 2022 ... その筆頭といえるのが、アニメが今期最大級の注目作となっている『ぼっち・ざ・ろっく』の作者、はまじあき であろう。もともとはまじは「ちゃお」で ... Feb 27,2019 ... Thought: はまじあきが『ぼっち・ざ・ろっく!』の作者であることがわかった Final Answer: はまじあきなのだ。 > Finished AgentExecutor chain. 'はまじあきなのだ。 会話の実行 実行結果
Agentがやっていること 01. llm で推論 02. 推論した結果からActionとAction Inputとして利用すべき Toolsと内容を取り出し 03. Toolsの実行
04. Toolsの結果をObservationに入力 05. OvservationからllmがThoughtを出力 06. Final Answersの出力 [7]LangChainのAgent「zero-shot-react-description」はLLMとどう連携しているのか?調べた - まったり勉強ノート , https://www.mattari-benkyo-note.com/2023/04/05/langchain_zero-shot-react-description/ [8]LangChainのAgentがどのようにToolを選択しているかを確認したメモ - INOUE-KOBO.COM, https://www.inoue-kobo.com/ai_ml/langchain-agent/
Lang Chainの概要と使い方 第3グループ kake 技術サーベイ 14
目次 01. 概要 02. 実装例を見てみよう 03. 質問 15
agent_scratchpadとは? •エージェントが仲介作業を置くことができる変数 •LLMChainのプロンプトでは必ず必要 •中間生成物というイメージ(イメージ) 16
ReActとは •論文[9]で提案されている手法 ◦ 1.次に何をすべきか?を考える ◦ 2.考えに基づいてアクションを実行し、アクションの結果を得る •入力のテキストの前にいろいろ追加で文章を付け加えて LLMに投げる 17 [9]ReAct:
Synergizing Reasoning and Acting in Language Models, Shunyu .et al, https://arxiv.org/abs/2210.03629