Closed4

boto3関連メモ

kun432kun432

とあるLLMフレームワークの会話履歴モジュールのストレージに、S3/DynamoDBに対応するモジュールを追加しようとしているのだけど、

自分の必要な用途だけで動くものは簡単に作れるんだけども、これをPR出して取り込んでもらおうと思うと、いろんな人がいろんなユースケースで使うことになるので、モジュール側も柔軟なモジュール設計にする必要が出てくる。

そうなるといろいろ考慮しないといけないことが多くて、特にDynamoDBのスキーマ設計なんかはほんとにバリエーションも多くなりそうだし、どこまで対応するかとか考えると、ホントに難しい。

ふと思い出してAlexaのDynamoDB/S3 Persistence Adapterとかの実装も見てたのだけど、

https://wp-kyoto.net/which-adaptor-should-we-use-for-ask-sdk/

共通化によってDynamoDBの魅力が減っている

このようにAdaptor層があることでDBの選択肢が自由になるメリットがあります。しかし一方で、「どのデータソースでも保存できるようにする」ためにDBが持つ利便性を失うデメリットもありました。

そうなのよなー。ライブラリ設計ってほんと難しいな。。。。

ただ、考え出すときりがないし、ある程度ここまで、みたいなラインはどこかで引かざるを得ないのだけれども、まあいろいろ勉強になった。

そして、LangChainやLlamaIndexのコードはとても参考になった。やはり多くの人が使うフレームワークは非常にいろんなことを考えて作られているなと感じた。

https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/chat_message_histories/dynamodb.py

https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/document_loaders/s3_file.py

https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/document_loaders/s3_directory.py

https://python.langchain.com/docs/integrations/memory/aws_dynamodb

このスクラップは3ヶ月前にクローズされました