Slide 1

Slide 1 text

© 2024 Loglass Inc. 1 © 2024 Loglass Inc. Checkpointerを介し て、DynamoDBに状態 を保存してみた 宮本 淳志 2024.11.29

Slide 2

Slide 2 text

© 2024 Loglass Inc. 2 自己紹介 自動車整備士としてキャリアをスタートし、退職後カナダのバンクーバーへ渡航。その後、プログラミン グを現地の学校で勉強した後に、機械学習エンジニアとして現地のスタートアップでエンジニアとして のキャリアをスタートさせる。 2年半カナダに滞在したのち、福岡へ移住。 福岡の受託開発会社でバックエンドエンジニアとして3年ほど勤務。バックエンド・フロント・インフラの 経験を積む。 2024年10月に株式会社ログラスへクラウドエンジニアとして入社。 生成AI入門中 株式会社ログラス クラウドエンジニア 宮本 淳志 Atsushi Miyamoto

Slide 3

Slide 3 text

© 2024 Loglass Inc. 3 Loglassについて

Slide 4

Slide 4 text

© 2024 Loglass Inc. 4 今日話すこと 1. 永続化の仕組み 2. Checkpointer 3. DynamoDBをcheckpointerとして使ってみた 4. まとめ Agenda

Slide 5

Slide 5 text

© 2024 Loglass Inc. 5 01 永続化の仕組み

Slide 6

Slide 6 text

© 2024 Loglass Inc. 6 ● Checkpointerを介して、単一スレッド内のグラフの状態を管理する仕組み ● 会話のフィルタリングやサマライズすることで トークン量を節約し、コスト削減やレイテンシ改善することが可能 01|永続化の仕組み Short-term memory (短期記憶) ※参考: https://langchain-ai.github.io/langgraphjs/concepts/memory/ Long-term memory (長期記憶) ● Storeを使用して、異なるスレッドを跨いだデータを管理できる仕組み ● 異なるスレッドの内容をいつでも、呼び出すことが可能

Slide 7

Slide 7 text

© 2024 Loglass Inc. 7 02 Checkpointer

Slide 8

Slide 8 text

© 2024 Loglass Inc. 8 特定のグラフの状態をスレッドに保存する スレッドはユニークなIdを持っているので、グラフ実行後にIdを使用して、保存し た状態にアクセスでき、以下のことが可能となる ● human-in-the-loop ● memory ● time travel ● fault-tolerance 02|Checkpointer できること ※参考: https://langchain-ai.github.io/langgraph/concepts/persistence/?ref =blog.langchain.dev#persistence

Slide 9

Slide 9 text

© 2024 Loglass Inc. 9 フィルタリングしないケース 02|Checkpointerとは 例 memory (Filtering messages) ※参考: https://langchain-ai.github.io/langgraph/how-tos/memory/manage-c onversation-history/#filtering-messages

Slide 10

Slide 10 text

© 2024 Loglass Inc. 10 フィルタリングするケース 02|Checkpointerとは 例 memory (Filtering messages)

Slide 11

Slide 11 text

© 2024 Loglass Inc. 11 02|Checkpointerとは ライブラリー ● checkpoint-postgres https://github.com/langchain-ai/langgraph/tree/main/libs/checkpoint-postgres ● checkpoint-sqlite https://github.com/langchain-ai/langgraph/tree/main/libs/checkpoint-sqlite

Slide 12

Slide 12 text

© 2024 Loglass Inc. 12 03 DynamoDBを Checkpointerとして使ってみた

Slide 13

Slide 13 text

© 2024 Loglass Inc. 13 03|DynamoDBをCheckpointerとして使ってみた 先日のTweet

Slide 14

Slide 14 text

© 2024 Loglass Inc. 14 ● langgraphjs-checkpoint-dynamodb インストール https://www.npmjs.com/package/@rwai/langgraphjs-checkpoint-dynamodb ● DynamoDBにテーブル作成 ○ CheckpointsTable -> checkpointer用 ○ WritesTable -> Store用 03|DynamoDBをCheckpointerとして使ってみた 準備

Slide 15

Slide 15 text

© 2024 Loglass Inc. 15 03|DynamoDBをCheckpointerとして使ってみた 実際の動作 アウトプット ※参考: https://langchain-ai.github.io/langgraphjs/#example

Slide 16

Slide 16 text

© 2024 Loglass Inc. 16 03|DynamoDBをCheckpointerとして使ってみた 作成されたItems アウトプット

Slide 17

Slide 17 text

© 2024 Loglass Inc. 17 03|DynamoDBをCheckpointerとして使ってみた 再度同じ質問をしてみた アウトプット

Slide 18

Slide 18 text

© 2024 Loglass Inc. 18 04 まとめ

Slide 19

Slide 19 text

© 2024 Loglass Inc. 19 04|まとめ まとめ ● LangGraph初めて触ったので、いい勉強になりました!! ● 最近DynamoDB オンデマンドスループットの価格引き下げがあったので、Checkpointとして 使用するのはコスト的にも良さそうでは?? ○ https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-dyn amo-db-reduces-prices-on-demand-throughput-global-tables/

Slide 20

Slide 20 text

© 2024 Loglass Inc. 20