Slide 1

Slide 1 text

驚愕の事実!LangChainが抱える問題 機械学習の社会実装勉強会第26回 Henry 2023/8/26

Slide 2

Slide 2 text

記事の紹介 ■ The Problem With LangChain ● https://minimaxir.com/2023/07/langchain-problem/ ● BuzzFeed社のエンジニアが執筆 ■ 記事が言いたいこと ● LangChainは思うほど使いやすくない ● 過度な複雑さと避けるために、APIをそのまま使うべき ■ 断り:あくまでも記事の意見であって、発表者の意見ではない 2

Slide 3

Slide 3 text

内容 ■ LangChainが実現したReAct論文 ■ LangChainのテンプレート ■ LangChainの履歴保存 ■ LangChain Agentに関して ■ 環境情報 ● Python 3.8.6 ● langchain 0.0.266 3

Slide 4

Slide 4 text

LangChainが実現したReAct論文 ■ ReAct: Synergizing Reasoning and Acting in Language Models ● ICLR 2023 上位論文 ■ タスクに対して、ReasoningとActを交互に行う 4

Slide 5

Slide 5 text

LangChainが実現したReAct論文 ■ 著者実装は https://github.com/ysymyth/ReAct にて公開 ■ 論文実験用なので、ハードコーディングのところがある ● https://github.com/ysymyth/ReAct/blob/master/hotpotqa.ipynb 5

Slide 6

Slide 6 text

LangChainのテンプレート ■ 記事の主な批判「LangChainが簡単なことを複雑化した」 ■ その一例として、Templateの作り方に対して ■ langchain/langchain/prompts/base.py ● f-stringはstring.Formatterベース ● jinja2はjinja2.Templateでレンダーリング 6

Slide 7

Slide 7 text

LangChainの履歴保存 ■ 履歴を保存するためのコードは逆に長くなっている ● 左:LangChain、右:OpenAI API 7

Slide 8

Slide 8 text

LangChain Agentに関して ■ initialize_agentではデフォルトでsystem promptを入れてない ● system promptを含むagent_kwargsを明示的に渡す必要がある ■ Tool選択の際で、出力がJSONじゃないといけない ● langchain/langchain/agents/conversational_chat/prompt.py 8

Slide 9

Slide 9 text

LangChain Agentに関して ■ Tool選択の際で、出力がJSONじゃないといけない ● Custom AgentやCustom Chainなどを使うことができるが、やることが また複雑になってしまう ● function callingも使える? ■ function callingは6/13にAPIで公開 ■ 記事の日付は7/14だが、内容が固まったのはfunction calling公開前だと思われる ● 自由フォーマットの内容をJSONにパースするのにもう一回LLMも使え る? 9

Slide 10

Slide 10 text

まとめ ■ LangChainに関する記事の検証 10