API链
APIChain使LLMs能够与API进行交互以检索相关信息。通过提供与所提供的API文档相关的问题构建链条。
如果您的API需要身份验证或其他头信息,您可以在配置对象中传递一个headers
属性给链条。
import { OpenAI } from "langchain/llms/openai";
import { APIChain } from "langchain/chains";
const OPEN_METEO_DOCS = `BASE URL: https://api.open-meteo.com/
API文档
API端点 /v1/forecast 接受地理坐标和天气变量列表,并返回一周内每小时的JSON天气预报。时间始终从今天的0:00开始,包含168小时。下面列出了所有URL参数:
参数名 格式 是否必需 默认值 描述
latitude, longitude 浮点数 是 位置的地理坐标(WGS84坐标)
hourly 字符串数组 否 应返回的天气变量列表。数值可以用逗号分隔,或者可以在URL中多次使用 &hourly= 参数。
daily 字符串数组 否 应返回的每日天气变量聚合列表。数值可以用逗号分隔,或者可以在URL中多次使用 &daily= 参数。如果指定每日天气变量,则需要指定参数 timezone。
current_weather 布尔值 否 false 将当前天气条件包含在JSON输出中。
temperature_unit 字符串 否 celsius 如果设置为fahrenheit,则将所有温度值转换为华氏度。
windspeed_unit 字符串 否 kmh 其他风速单位:ms、mph和kn
precipitation_unit 字符串 否 mm 其他降水量单位:inch
timeformat 字符串 否 iso8601 如果选择了unixtime格式,则所有时间值将以UNIX时代时间(以秒为单位)返回。请注意,所有时间戳都是GMT+0!对于具有UNIX时间戳的每日值,请再次应用utc_offset_seconds以获得正确的日期。
timezone 字符串 否 GMT 如果设置了timezone,所有时间戳都将以本地时间返回,并且数据将从当地时间的00:00开始返回。支持来自时区数据库的任何时区名称。如果将时区设置为自动,坐标将自动解析为当地时区。
past_days 整数(0-2) 否 0 如果设置了past_days,则还会返回昨天或前天的数据。
start_date, end_date 字符串(yyyy-mm-dd) 否 用于获取天气数据的时间间隔。日期必须指定为ISO8601日期(例如2022-06-30)。
models 字符串数组 否 auto 手动选择一个或多个天气模型。默认情况下,将组合最适合的天气模型。
变量 有效时间 单位 描述
temperature_2m 即时 °C(°F) 地面上2米处的气温
snowfall 前一个小时累计 cm(inch) 前一个小时内的雪量,以厘米计。对于相当于毫米的降水量,请除以7。例如,7厘米的雪= 10毫米的降水量水当量
rain 前一个小时累计 mm(inch) 前一个小时内的大规模天气系统的降雨量,以毫米计
showers 前一个小时累计 mm(inch) 前一个小时内的对流性降水阵雨,以毫米计
weathercode 即时 WMO代码 天气状况的数字代码。遵循WMO天气解释代码。有关详细信息,请参见下表。
snow_depth 即时 米 地面上的积雪深度
freezinglevel_height 即时 米 0°C水平相对于海平面的高度
visibility 即时 米 以米为单位的视距。受低云、湿度和气溶胶的影响。最大可见度约为24公里。`;
export async function run() {
const model = new OpenAI({ modelName: "text-davinci-003" });
const chain = APIChain.fromLLMAndAPIDocs(model, OPEN_METEO_DOCS, {
headers: {
// 这些头信息将用于链条发出的API请求。
},
});
const res = await chain.call({
question:
"在德国慕尼黑现在的天气如何,以华氏度为单位?",
});
console.log({ res });
}