目次
LangChainを利用している際、Documentオブジェクトが返ってくることがあります。
これらのオブジェクトを外部とやり取りする際には、jsonライクな形式で扱いたくなった時の方法を備忘録として残します。
dict()メソッドの利用
Documentオブジェクトを辞書形式に変換するのに、Documentオブジェクトに存在するdict()
メソッドが利用できます。このメソッドは、langchain
のDocumentオブジェクトを辞書形式で表現するために設計されています。オプションで、辞書に含めるまたは除外するフィールドを指定することが可能です。
公式ドキュメントでは、以下のようなパラメータが提供されています。
include
: 辞書に含めるフィールドを指定します。exclude
: 辞書から除外するフィールドを指定します。by_alias
: フィールド名をエイリアス名で表示するかどうか。skip_defaults
: デフォルト値と同じ値のフィールドを除外するかどうか。exclude_unset
: 未設定のフィールドを除外するかどうか。exclude_defaults
: デフォルト値を除外するかどうか。exclude_none
:None
の値を除外するかどうか。
これらのパラメータを使うことで、非常に柔軟にDocumentオブジェクトの辞書化を行うことができます。
コード例
以下に、include
およびexclude
パラメータを使用した実際のコード例を示します。
from typing import Dict
from pydantic import BaseModel
class Document(BaseModel):
page_content: str
directory_name: str
document = Document(page_content='This is a sample document', directory_name='company')
# 特定のフィールドを含める
included_dict = document.dict(include={'page_content'})
print(included_dict)
# 出力: {'page_content': 'This is a sample document'}
# 特定のフィールドを除外する
excluded_dict = document.dict(exclude={'directory_name'})
print(excluded_dict)
# 出力: {'page_content': 'This is a sample document'}
この例では、include
パラメータを使ってpage_content
フィールドのみを含む辞書を生成しています。一方で、exclude
パラメータを使ってdirectory_name
フィールドを除外した辞書を生成しています。
他のパラメータ(by_alias
、skip_defaults
、exclude_unset
、exclude_defaults
、exclude_none
)も、それぞれのニーズに合わせて活用することが可能です。具体的な使用シナリオに応じて、これらのパラメータを適切に設定してください。