一架梯子,一头程序猿,仰望星空!
LangChain教程(JS版本) > 内容正文

如何让LLM调用API


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 });
}


关联主题