Source code for langchain_community.document_loaders.weather
"""简单的读取器,从OpenWeatherMap API读取天气数据"""
from __future__ import annotations
from datetime import datetime
from typing import Iterator, Optional, Sequence
from langchain_core.documents import Document
from langchain_community.document_loaders.base import BaseLoader
from langchain_community.utilities.openweathermap import OpenWeatherMapAPIWrapper
[docs]class WeatherDataLoader(BaseLoader):
"""使用`Open Weather Map` API加载天气数据。
使用OpenWeatherMap的免费API读取任何位置的预报和当前天气。查看'https://openweathermap.org/appid'了解如何生成免费的OpenWeatherMap API。"""
[docs] def __init__(
self,
client: OpenWeatherMapAPIWrapper,
places: Sequence[str],
) -> None:
"""使用参数进行初始化。"""
super().__init__()
self.client = client
self.places = places
[docs] @classmethod
def from_params(
cls, places: Sequence[str], *, openweathermap_api_key: Optional[str] = None
) -> WeatherDataLoader:
client = OpenWeatherMapAPIWrapper(openweathermap_api_key=openweathermap_api_key) # type: ignore[call-arg]
return cls(client, places)
[docs] def lazy_load(
self,
) -> Iterator[Document]:
"""为给定的位置延迟加载天气数据。"""
for place in self.places:
metadata = {"queried_at": datetime.now()}
content = self.client.run(place)
yield Document(page_content=content, metadata=metadata)