Slide 1

Slide 1 text

LLM勉強会にDifyを使ったことで見えてきた Difyのソフトウェア開発への活用ポイント

Slide 2

Slide 2 text

Yg 自己紹e fg LLM勉強会のためにアプリを作ろうか悩んだけどDifyが解決してくれた g DifyはLLMアプリのソフトウェア開発プロセスを改善する

Slide 3

Slide 3 text

@hudebakonosoto 2020年 Slerに新卒で入社 2022年から株式会社QunaSysでソフトウェアエンジニア コーヒーのアプリ作るぐらいにはコーヒーが好き。 今回LT会は初登壇

Slide 4

Slide 4 text

LLM勉強会のためにアプリを作ろうか悩んだけど Difyが解決してくれた話

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

弊社、材料開発向けにLLM勉強会やってます。

Slide 7

Slide 7 text

弊社、材料開発向けにLLM勉強会やってます。 今日はハンズオンで、どんなツールを使ったか を話します。

Slide 8

Slide 8 text

ハンズオンの目的は? https://speakerdeck.com/qunasys/cai-liao-kai-fa-llmmian-qiang-hui-goan-nei?slide=3

Slide 9

Slide 9 text

ハンズオンの目的は? https://speakerdeck.com/qunasys/cai-liao-kai-fa-llmmian-qiang-hui-goan-nei?slide=3 We 材料開発のためのLLMアプリを構築 F Ee 材料開発視点のユースケースを発見する。

Slide 10

Slide 10 text

勉強会のハンズオンでのツール選定要件 要件 目的 ChatGPTのAPIキーはこちらで用意 できる? 参加する会社によってはAPIキーが用意できない可能性がある APIキーのレートリミットの管理が できる? 多くの人が一気にAPIキーを使うので、Embbedingとかはrate limit errorでそう。チャットは問題にはならないかも? ユーザーがアノテーションでき る? °¬ 本当に正しい答えをこちらでデータとして貯めたい¥ ®¬ データ評価まで実践してもらう機会を作りたい。 勉強会以外でも使ってもらえる? 参加者にユースケースを思いついてもらいたいので、常に使って もらえる環境を用意したい。 文献を集めることができる? みんなの知見を集めて、RAGに使えるようにしたい。 プロンプト集めることができる? 同上

Slide 11

Slide 11 text

案1. LangChain+LangServe+LangSmith+Google Colab QunaSysがホスティングし ているどこか クライアント 勉強会参加者

Slide 12

Slide 12 text

案1. LangChain+LangServe+LangSmith+Google Colab ️ ︎ ・・・できる! ・・・できない。運用もしくは別サービスでカバー可能な場合 も含む 要件 満たす? APIキーはこちらで用意できる? レートリミットの管理ができる? (実行タイミングずらす とかなら... ユーザーがアノテーションできる? LangSmithをいい感じに 運用すればできるかも... 勉強会以外でも使ってもらえる? 文献を集めることができる? GoogleDriveに入れてと かなら...?... プロンプト集めることができる?

Slide 13

Slide 13 text

案2. じゃあアプリ作る? レートリミット対策でキューを作る? RAGを構築できるアプリを作る? RAGありなしで画面を分けるだけだと、 RAGのイメージをつきずらいよなあ... 2ヶ月ぐらいで作り切れる?

Slide 14

Slide 14 text

案2. じゃあアプリ作る? レートリミット対策でキューを作る? RAGを構築できるようなフローを作る? 画面分けるだけだと、RAGのイメージをつ きずらいよなあ... 2ヶ月ぐらいで作り切れる? 本番で使えるものを 2ヶ月で作り切る自信がない

Slide 15

Slide 15 text

Difyとの出会い

Slide 16

Slide 16 text

CRAGをDifyで構築す るとこんな感じ Difyとは? i GUIで簡単にRAGや、AIエージェント作成 (LLMもいろいろ使える` i もちろんプロンプトも変更しやすh i 作ったものをアプリとして公開できa i APIの公開とかも可能A i アノテーション機能もついてるA i LLMのAPI Keyのロードバランサーの機能もあa i セルフホスティングできる。 LLMアプリをローコードで作成できるOSSプラットフォーム

Slide 17

Slide 17 text

Difyがすべてを解決する 要件 満たす? APIキーはこちらで用意できる? レートリミットの管理ができる? ️ Embeddingの処理はキューを作ってくれてるし、API キーのロードバランサーもある。 ユーザーがアノテーションできる? 勉強会以外でも使ってもらえる? 文献を集めることができる? ️ナレッジ使える プロンプト集めることができる? ️ログとってくれる

Slide 18

Slide 18 text

Difyがすべてを解決する(+α) ローコードなのでコードの書き方にとらわれない。 ユースケースを考えてもらうという点では 本質的な部分にフォーカスできてより良いんじゃね? と私は思うのです...

Slide 19

Slide 19 text

Difyソフトウェア開発でも使えそう

Slide 20

Slide 20 text

気付いたDifyのLLMアプリへの使い所 h 作成物はアプリ or APIで公開できるので、まずはDifyを使うのがよさそŒ h どれぐらい使われるかわからない状況で、OpenAIのAPIキーをロードバランサーやレートリ ミット管理を作るのは大変です。ここをなんとかしてくれてるのは結構嬉しい(これ管理す るの意外と辛いのでF h 正直Difyにまだできないことが、複雑なことやろうとした時はDifyAPI+コードを書くこと でDifyの不得意なところは補うのがい h ドメインエキスパートと一緒にやりたい or ドメインエキスパートの方に管理してもらった 方がいいところはDifyに切り出’ h アノテーション機能が標準ついてるので便! h ただバージョン管理は煩雑になりそう(これから改善されるんじゃないかと思っている)

Slide 21

Slide 21 text

気付いたDifyのLLMアプリへの使い所 ’ 作成物はアプリ or APIで公開できるので、まずはDifyを使うのがよさそŠ ’ どれぐらい使われるかわからない状況で、OpenAIのAPIキーをロードバランサーやレートリ ミット管理を作るのは大変です。ここをなんとかしてくれてるのは結構嬉しい(これ管理す るの意外と辛いのでA ’ 正直Difyにまだできないことが、複雑なことやろうとした時はDifyAPI+コードを書くこと でDifyの不得意なところは補うのがい~ ’ ’ アノテーション機能が標準ついてるので便! ’ ただバージョン管理は煩雑になりそう(これから改善されるんじゃないかと思っている) ドメインエキスパートと一緒にやりたい or ドメインエキスパートの方に管理してもらった 方がいいところはDifyに切り出 ここもっと 注目してもいいかも!

Slide 22

Slide 22 text

DifyはLLMアプリのソフトウェア 開発プロセスを改善する

Slide 23

Slide 23 text

量子化学計算エージェントを作ったことがある。

Slide 24

Slide 24 text

使用したドメイン知識を持ったプロンプト あなたは、特に量子化学の分野で非常に強力なアシスタントです。 量子力学と計算化学の原理を深く理解しているため、各研究プロジェクトの具体的な 要件に基づいて、DFT計算に最適な汎関数を専門的に選択することができます。 出力は以下からお選びください。 [slaterx, pw86x, vwn3c, vwn5c, pbec, pbex, beckex, beckecorrx, beckesrx, beckecamx, brx, brc ....(以下略) 汎函数を選択させるプロンプト(素人の私が考えたプロンプト)

Slide 25

Slide 25 text

ドメイン知識持っている人にプロンプトを見てもらう と? これだと正直微妙ですね... まずは最初はよく使われる汎函数を使います。 有機分子ならとりあえずB3LYPをつかったりしますね。 実験やの人はB3LYPでいったん回して合わなければor収束し なければ変える感じおおいですね。 たとえば横長かつ、手が3つ生えたNが片側の端っこらへんに ある分子とかはB3LYPだと実験値とずれやすい(らしい)の でいくつか汎函数を試してベンチマーク的に計算値と実験値 のずれがあまりないものを調べますね。 電荷が長距離移動する有機分子をやっていたのでM06とか使 いました。 そういう意味では錯体は金属とその周りの有機配位子部分と で関数を変えるので、いろいろな汎関数が出てきがちかも? ただ注意する必要があるのはある分子系で用いる汎関数は1つ に絞ります(あくまで正当な理由がない限りです。 ・・・・・(以下略)

Slide 26

Slide 26 text

ドメイン知識持っている人にプロンプトを見てもらう と? これだと正直微妙ですね... まずは最初はよく使われる汎函数を使います。 有機分子ならとりあえずB3LYPをつかったりしますね。 実験やの人はB3LYPでいったん回して合わなければor収束し なければ変える感じおおいですね。 たとえば横長かつ、手が3つ生えたNが片側の端っこらへんに ある分子とかはB3LYPだと実験値とずれやすい(らしい)の でいくつか汎函数を試してベンチマーク的に計算値と実験値 のずれがあまりないものを調べますね。 電荷が長距離移動する有機分子をやっていたのでM06とか使 いました。 そういう意味では錯体は金属とその周りの有機配位子部分と で関数を変えるので、いろいろな汎関数が出てきがちかも? ただ注意する必要があるのはある分子系で用いる汎関数は1つ に絞ります(あくまで正当な理由がない限りです。 ・・・・・(以下略) ドメインに寄せたプロンプトチューニ ングはかなり高度

Slide 27

Slide 27 text

ドメイン知識持っている人にプロンプトを見てもらう と? これだと正直微妙ですね... まずは最初はよく使われる汎函数を使います。 有機分子ならとりあえずB3LYPをつかったりしますね。 実験やの人はB3LYPでいったん回して合わなければor収束し なければ変える感じおおいですね。 たとえば横長かつ、手が3つ生えたNが片側の端っこらへんに ある分子とかはB3LYPだと実験値とずれやすい(らしい)の でいくつか汎函数を試してベンチマーク的に計算値と実験値 のずれがあまりないものを調べますね。 電荷が長距離移動する有機分子をやっていたのでM06とか使 いました。 そういう意味では錯体は金属とその周りの有機配位子部分と で関数を変えるので、いろいろな汎関数が出てきがちかも? ただ注意する必要があるのはある分子系で用いる汎関数は1つ に絞ります(あくまで正当な理由がない限りです。 ・・・・・(以下略) ドメインに寄せたプロンプトチューニ ングはかなり高度 ︎ ドメインエキスパートに任せた方がい い。

Slide 28

Slide 28 text

LLMアプリ開発のツラミ ドメイン知識もりもりのプロンプトをエンジニアだけで作るのが難しい でもドメインエキスパートがプロンプトを触りずらい....

Slide 29

Slide 29 text

LLMアプリ開発のツラミの原因 LLM側にあるドメイン知識とシステム開発部分がかなり密接で、 ドメインエキスパートがプロンプトを改善しずらい ※ LLMアプリ = LLMパート + システム開発パート

Slide 30

Slide 30 text

LLMアプリ開発のツラミをどう解決する? PromptLayerとかでプロンプトを切り出す? でも、LLMのワークフローってプロンプトだけ じゃないからプロンプト切り出してもなあ....

Slide 31

Slide 31 text

Difyでいいやん

Slide 32

Slide 32 text

LLMアプリのツラミの解決策としてDify① ドメインエキスパートと開発者で責務の分離が起きる Difyに寄せてしまう。 ‚ ドメインエキスパートがLLMパートを改善しやすくなるd ‚ 実際のフローを改善するとなると、単に単一のプロンプトをいじるだけでなく て、LLMの数を増やすことや、条件分岐を増やすなどをする必要がでてくるか らDifyが役立つ ドメインエキスパートの責務 開発者の責務

Slide 33

Slide 33 text

LLMアプリのツラミの解決策としてDify② ソフトウェア開発的にも修正の影響範囲が明確になり、考えること ちょっと少なくなる。 o LLMパートとシステム開発パートで責務が完全に別れるのz o コード修正or LLM修正の影響を与える範囲が明確になり、影響範囲がわかりや すく予期せぬバグが少なくなるはずq o モジュール性が向上することで、そもそも依存度が下がりやす` o LLM部分が触りやすくなるので、継続的な改善が進めやすい

Slide 34

Slide 34 text

Difyはソフトウェア開発プロセスを改善する ドメインエキスパートと一緒にやりたい or ドメインエキスパートの方に管理してもらった方が いいところはDifyに切り出Œ “ ドメインエキスパートと開発者を責務分離できて、ドメインエキスパートがLLMパート を改善しやすくなるP “ ソフトウェア開発的にもLLMパートとシステム開発パートで責務が完全に別れるので コード修正 or LLM修正の影響範囲が明確になり、予期せぬバグが少なくなるはず!最 終的には改善を加速するはず! ただ、「ドメインエキスパートがいない」「エンジニア自身がドメインをよく知っている」 などの場合はこの限りではないと思ってます...

Slide 35

Slide 35 text

No content