
5
入れ子になったデータモデル
データモデルは、入れ子になる(ネストする)ことができます。そして、入れ子になった
データモデルを使って出力のフォーマットを指定することもできます。ここでは、先ほど作成
した天体を表すデータモデルを使用し、太陽系の情報を取得する例を示します。まず、惑星系
のデータモデルを新たに定義し、このデータモデルの定義に天体のデータモデルを使います。
惑星系には複数の天体が含まれるため、天体のデータモデルをリストとして持つようにしま
す。このプログラムをリスト5.2.7 に示します。
リスト5.2.7
from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field
from typing import List
class CelestialBody(BaseModel):
name: str = Field(description="天体の名前(漢字表記)")
radius: float = Field(description="天体の半径(km)")
mass: float = Field(description="天体の質量(kg)")
type: str = Field(description="天体の種類(惑星、恒星、小惑星など)")
class ...