Slide 1

Slide 1 text

LangChain コントリビュートのすゝめ 続・生成AI周回遅れキャッチアップ勉強会 ! 2023-10-11 @kzk_maeda

Slide 2

Slide 2 text

自己紹介 Kazuki Maeda 𝕏 @kzk_maeda SRE/DRE @atama plus AWS Community Builders AWS Startup Community Core Member

Slide 3

Slide 3 text

自己紹介

Slide 4

Slide 4 text

agenda 1. LangChainのOverview 2. LangChainへのContributeの種類 3. 実際にContributeしてみる

Slide 5

Slide 5 text

今日のGOAL

Slide 6

Slide 6 text

免責 ● 2023/10/09時点でのLangChainのコードや規約 ( v0.0.310)をベースに記載しています ● 個人の見解が多分に含まれています

Slide 7

Slide 7 text

LangChainのOverview

Slide 8

Slide 8 text

LangChainとは ● 大規模言語モデル(LLM)を利用したアプリケーション作成を支援 するフレームワーク ● 実装にはPython版とJavaScript/TypeScript版がある ● 第三者のContributionも含めると非常に開発が活発

Slide 9

Slide 9 text

LangChainとは

Slide 10

Slide 10 text

LangChainについて学ぶ ちょうどいい本が出るので こちらで勉強するのがいいかと思います!!

Slide 11

Slide 11 text

LangChainへのContributeの種類

Slide 12

Slide 12 text

公式のGuideを読む ◉ CONTRIBUTING.mdに期待されるコントリビュートの方法が記載 されているので、そこを読むところから

Slide 13

Slide 13 text

🙋Getting Help ● 環境のセットアップ やlint強制などで詰 まった場合は maintainerに遠慮な く連絡してね!との こと Contributeの種類 󰠁 Contributing Code ● Bug Fix, Docsの改 善、機能追加など ● “If there's something you'd like to add or change, opening a pull request is the best way to get our attention.” 🚩GitHub Issues ● Bug reportや機能 追加要望を出せる ● 過去のIssueは Labelingされて整理 されているので、先 にここを眺めると良 さそう

Slide 14

Slide 14 text

🙋Getting Help ● 環境のセットアップ やlint強制などで詰 まった場合は maintainerに遠慮な く連絡してね!との こと Contributeの種類 󰠁 Contributing Code ● Bug Fix, Docsの改 善、機能追加など ● “If there's something you'd like to add or change, opening a pull request is the best way to get our attention.” 🚩GitHub Issues ● Bug reportや機能 追加要望を出せる ● 過去のIssueは Labelingされて整理 されているので、先 にここを眺めると良 さそう 今日のFocus Point

Slide 15

Slide 15 text

Q. コードベース、全部読むべき..? A. そんなことないです 機能ごとにcomponentも実装も細かく分かれて いるので、関連するコードの周辺のみで十分です よくありそうな悩み

Slide 16

Slide 16 text

Q. コミュニケーションが不安.. A. なんとかなります PR数やばいのに、メンテナの方からの レスは結構早いしフランクです (むしろこっちが返信忘れるまで  あります) よくありそうな悩み

Slide 17

Slide 17 text

Q. 品質水準満たせているか不安.. A. ガードレールがあります linter/formatterはCIでcheck 既存機能であれば、test codeも 割とある印象 メンテナも気づいてFBくれたり よくありそうな悩み

Slide 18

Slide 18 text

Q. LLMの仕組みとかよくわからないので難しそう .. A. 僕もよくわかってません LangChainはLLMそのものではなく、それを利用するための フレームワークなので、LLM自体の知識よりも、それをどう使うかのア プリケーション実装に重きが置かれているので 多分大丈夫です よくありそうな悩み

Slide 19

Slide 19 text

実際にContributeしてみる

Slide 20

Slide 20 text

コントリビュートのStep 1. ネタを探す 2. RepositoryをForkし、環境を構築 3. Let's Coding 4. 変更の検証 5. 品質を整えて、Push/PR作成 6. mergeに向けてコミュニケーション

Slide 21

Slide 21 text

コントリビュートのStep 1. ネタを探す 2. RepositoryをForkし、環境を構築 3. Let's Coding 4. 変更の検証 5. 品質を整えて、Push/PR作成 6. mergeに向けてコミュニケーション

Slide 22

Slide 22 text

ネタを探す ● Issuesから手頃なBug Reportや機能要望を探し てみる ● 使っていて不便に思ったことを自分で直す ● ドキュメントを充実させる、typoを直す

Slide 23

Slide 23 text

自分が欲しいと思った機能をつくる LangChain Japan MeetUp 登壇資料

Slide 24

Slide 24 text

rename漏れ直したり、ローカル環境便利にしたり

Slide 25

Slide 25 text

コントリビュートのStep 1. ネタを探す 2. RepositoryをForkし、環境を構築 3. Let's Coding 4. 変更の検証 5. 品質を整えて、Push/PR作成 6. mergeに向けてコミュニケーション

Slide 26

Slide 26 text

公式のGuideを読む(再掲) ◉ CONTRIBUTING.mdにローカル環境構築で実施すべきことが記 載されている

Slide 27

Slide 27 text

環境のベースをつくる ● Package ManagerはPoetryが使われているので、Python環境を 合わせる必要がある ● CoreとExperimentalというレイヤがある ○ Core:LangChainの基本的なコード ○ Experimental:実験的な機能・コード ● 変更したコードを試せる環境が別であると便利(後述)

Slide 28

Slide 28 text

コントリビュートのStep 1. ネタを探す 2. RepositoryをForkし、環境を構築 3. Let's Coding 4. 変更の検証 5. 品質を整えて、Push/PR作成 6. mergeに向けてコミュニケーション

Slide 29

Slide 29 text

Let's Coding

Slide 30

Slide 30 text

コントリビュートのStep 1. ネタを探す 2. RepositoryをForkし、環境を構築 3. Let's Coding 4. 変更の検証 5. 品質を整えて、Push/PR作成 6. mergeに向けてコミュニケーション

Slide 31

Slide 31 text

変更したコードの機能確認 ● ローカルcloneしたLangChainをimportして検証できる環境をつく る ● いくつか方法があるけど、pathで実装中のlibraryをinstallするの がシンプルで楽

Slide 32

Slide 32 text

変更したコードの機能確認 ● jupyter notebookなどで新旧コードの挙動を確認

Slide 33

Slide 33 text

コントリビュートのStep 1. ネタを探す 2. RepositoryをForkし、環境を構築 3. Let's Coding 4. 変更の検証 5. 品質を整えて、Push/PR作成 6. mergeに向けてコミュニケーション

Slide 34

Slide 34 text

品質を整える ● Formatter/Linterはmakefileに用意されているので通す ● 機能追加やBug Fixの場合、Test Codeを書く ● Testもmakefileに用意されているので通す

Slide 35

Slide 35 text

PRを作成する ● PR Templateが用意されているので、基本的に則る 前はPR作成時に、PRの種類によって 誰にmentionすべきかのガイドがあっ たのですが、最近それがなくなったの でよりPR作成しやすくなりました

Slide 36

Slide 36 text

コントリビュートのStep 1. ネタを探す 2. RepositoryをForkし、環境を構築 3. Let's Coding 4. 変更の検証 5. 品質を整えて、Push/PR作成 6. mergeに向けてコミュニケーション

Slide 37

Slide 37 text

mergeに向けてコミュニケーション ● 特に疑義のない変更であれば、スッとmergeしてくれる

Slide 38

Slide 38 text

mergeに向けてコミュニケーション ● 後方互換性の維持など、注意が必要な場合、指摘に対してディ スカッションしたりすることも必要

Slide 39

Slide 39 text

まとめ

Slide 40

Slide 40 text

まとめ ● LangChainは非常に変化の激しいライブラリで、色々なものが途 上なのでContributeしやすいです ● 自分が使っていて「こうだったらいいのにな」を実現しやすい環境 かなと思います ● ぜひContributeしてみましょう!!