Slide 1

Slide 1 text

2024/10/28 #BLUEISH_LT会 Difyのソースコードリーディングを 続けて得た知見と感想

Slide 2

Slide 2 text

自己紹介 大嶋勇樹(おおしまゆうき) https://x.com/oshima_123 株式会社ジェネラティブエージェンツ取締役CTO/Co-founder 大規模言語モデルを組み込んだアプリケーションやAIエージェントの開発を実施 個人ではエンジニア向けの勉強会開催やUdemy講座の作成など 勉強会コミュニティStudyCo運営 「ChatGPT/LangChainによるチャットシステム構築[実践]入門」(共著)

Slide 3

Slide 3 text

2024/10/28 #BLUEISH_LT会 Difyのソースコードリーディングを 続けて得た知見と感想

Slide 4

Slide 4 text

Difyとは ● Difyは、ノーコードのLLMアプリケーション開発プラットフォームです ● Apache License 2.0をベースとしたライセンスで、GitHubで公開されています ● クラウドサービスとして使用することもできれば、自身で環境構築して使うこともできます DifyのWebサイト:https://dify.ai/ Difyのワークフローの例

Slide 5

Slide 5 text

ここ数カ月の間、毎週Difyのソースコードリーディング会をしてきました ● 毎週木曜のランチタイム(昼12時〜13時)の時間に開催 ● 今日のLT大会でも登壇予定の戸塚さんと2人で実施 ● 主催者も初見の状態でDifyのソースコードを読んでいく ● 8月末から今までに9回実施して、来週で10回目

Slide 6

Slide 6 text

過去9回のテーマ ● Difyソースコードリーディング #1 - Difyのシステム構成をざっくり把握 ● Difyソースコードリーディング #2 - Difyの開発環境を起動してみる ● Difyソースコードリーディング #3 - APIのリクエストからレスポンスまで ● Difyソースコードリーディング #4 - モデルやツールのYAMLファイルの扱いを読み解く ● Difyソースコードリーディング #5 - ナレッジベース・RAGの実装を読み解く ● Difyソースコードリーディング #6 - DSLのYAMLファイルの扱いを読み解く ● Difyソースコードリーディング #7 - ビルドやリリース時のバージョン番号付けなどを読み解く ● Difyソースコードリーディング #8 - Difyのコード実行環境「dify-sandbox」 ● Difyソースコードリーディング #9 - Difyのワーカーは何をしているのか この中でとくに面白かった内容を3つほどピックアップして紹介します

Slide 7

Slide 7 text

ピックアップ1)Difyのシステム構成 ● LLMを組み込んだWebアプリケーションを実装する場合の非常に典型的な構成でした https://github.com/langgenius/dify/blob/main/docker/docker-compose.png ● リバースプロキシ(nginx) ● フロントエンド(Next.js) ● バックエンドAPI(Flask) ● リレーショナルデータベース (PostgreSQL) ● ワーカー(Celery) ● キャッシュ/ブローカー(Redis) ● ベクトルデータベース(Weavite等)

Slide 8

Slide 8 text

ピックアップ1)Difyのシステム構成 ● コントリビュータ向けのドキュメントでは、ソースコードの構成などもまとめられています https://github.com/langgenius/dify/blob/main/CONTRIBUTING_JA.md 実運用されているある程度大きなアプリケーションのソースコードは公開されているものが少なく、 LLMアプリケーションの実装例として貴重なリソースだと思います

Slide 9

Slide 9 text

ピックアップ2)モデルやツールの追加方法 ● LLMアプリケーションでは、新モデルがリリースされた際に素早くサポートしたり、 次々とさまざまなツールと統合していきたい場合が多いです ● DifyではYAMLファイルを記述することで簡単にモデルやツールを追加できる仕組みが 実装されています gpt-4o-2024-08-06をサポートするためのYAMLファイルの一部 https://github.com/langgenius/dify/blob/main/api/core/model_ runtime/model_providers/openai/llm/gpt-4o-2024-08-06.yaml

Slide 10

Slide 10 text

ピックアップ3)dify-sandbox ● Difyでは、PythonやJavaScriptのコードをワークフロー内で実行することができます ● ユーザーが入力したコードを隔離して実行するサンドボックス環境の実装が公開されています chrootによる実行環境の隔離や Seccompによるシステムコールの制限 https://github.com/langgenius/dify-sandbox

Slide 11

Slide 11 text

Difyソースコードリーディングの全体的な感想 ● LLMアプリケーションの公開されている実装例として、読んでみると参考になる点も多いです (実運用されているある程度大きなアプリケーションのコードを読めるのはめずらしい) ● 社内ChatGPTのようなアプリケーションをかなり作り込んでいったようなものという印象も (モデル追加への対応など、ほしくなりそうな機能がたくさん) ● アプリケーション開発におけるPythonのTipsやエコシステムの知見も得られました 来週木曜日にも開催予定なので、ご興味あればぜひご視聴ください https://dify-mokumoku.connpass.com/event/335249/

Slide 12

Slide 12 text

(宣伝)LangChainとLangGraphの書籍を出します! 『LangChainとLangGraphによるRAG・AIエージェント[実践]入門』 西見公宏、吉田真吾、大嶋勇樹 [著] ● OpenAIのチャットAPI プロンプトエンジニアリング LangChainの基礎 ● 検索クエリの工夫 リランクモデル ハイブリッド検索 ● LangSmithを使ったRAGアプリケーション評価 ● LLMを活用したAIエージェントの起源と変遷 ● LangChain/LangGraphによるエージェントデザインパターンの実装 11月9日発売予定で、Amazonで予約受付中です https://www.amazon.co.jp/dp/4297145308

Slide 13

Slide 13 text

ご清聴ありがとうございました