{"version":3,"file":"gradient_ai.cjs","names":["LLM","Gradient"],"sources":["../../src/llms/gradient_ai.ts"],"sourcesContent":["import { Gradient } from \"@gradientai/nodejs-sdk\";\nimport {\n  type BaseLLMCallOptions,\n  type BaseLLMParams,\n  LLM,\n} from \"@langchain/core/language_models/llms\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\n\n/**\n * The GradientLLMParams interface defines the input parameters for\n * the GradientLLM class.\n */\nexport interface GradientLLMParams extends BaseLLMParams {\n  /**\n   * Gradient AI Access Token.\n   * Provide Access Token if you do not wish to automatically pull from env.\n   */\n  gradientAccessKey?: string;\n  /**\n   * Gradient Workspace Id.\n   * Provide workspace id if you do not wish to automatically pull from env.\n   */\n  workspaceId?: string;\n  /**\n   * Parameters accepted by the Gradient npm package.\n   */\n  inferenceParameters?: Record<string, unknown>;\n  /**\n   * Gradient AI Model Slug.\n   */\n  modelSlug?: string;\n  /**\n   * Gradient Adapter ID for custom fine tuned models.\n   */\n  adapterId?: string;\n}\n\n/**\n * The GradientLLM class is used to interact with Gradient AI inference Endpoint models.\n * This requires your Gradient AI Access Token which is autoloaded if not specified.\n */\nexport class GradientLLM extends LLM<BaseLLMCallOptions> {\n  static lc_name() {\n    return \"GradientLLM\";\n  }\n\n  get lc_secrets(): { [key: string]: string } | undefined {\n    return {\n      gradientAccessKey: \"GRADIENT_ACCESS_TOKEN\",\n      workspaceId: \"GRADIENT_WORKSPACE_ID\",\n    };\n  }\n\n  modelSlug = \"llama2-7b-chat\";\n\n  adapterId?: string;\n\n  gradientAccessKey?: string;\n\n  workspaceId?: string;\n\n  inferenceParameters?: Record<string, unknown>;\n\n  lc_serializable = true;\n\n  // Gradient AI does not export the BaseModel type. Once it does, we can use it here.\n  // oxlint-disable-next-line typescript/no-explicit-any\n  model: any;\n\n  constructor(fields: GradientLLMParams) {\n    super(fields);\n\n    this.modelSlug = fields?.modelSlug ?? this.modelSlug;\n    this.adapterId = fields?.adapterId;\n    this.gradientAccessKey =\n      fields?.gradientAccessKey ??\n      getEnvironmentVariable(\"GRADIENT_ACCESS_TOKEN\");\n    this.workspaceId =\n      fields?.workspaceId ?? getEnvironmentVariable(\"GRADIENT_WORKSPACE_ID\");\n\n    this.inferenceParameters = fields.inferenceParameters;\n\n    if (!this.gradientAccessKey) {\n      throw new Error(\"Missing Gradient AI Access Token\");\n    }\n\n    if (!this.workspaceId) {\n      throw new Error(\"Missing Gradient AI Workspace ID\");\n    }\n  }\n\n  _llmType() {\n    return \"gradient_ai\";\n  }\n\n  /**\n   * Calls the Gradient AI endpoint and retrieves the result.\n   * @param {string} prompt The input prompt.\n   * @returns {Promise<string>} A promise that resolves to the generated string.\n   */\n  /** @ignore */\n  async _call(\n    prompt: string,\n    _options: this[\"ParsedCallOptions\"]\n  ): Promise<string> {\n    await this.setModel();\n\n    // GradientLLM does not export the CompleteResponse type. Once it does, we can use it here.\n    interface CompleteResponse {\n      finishReason: string;\n      generatedOutput: string;\n    }\n\n    const response = (await this.caller.call(async () =>\n      this.model.complete({\n        query: prompt,\n        ...this.inferenceParameters,\n      })\n    )) as CompleteResponse;\n\n    return response.generatedOutput;\n  }\n\n  async setModel() {\n    if (this.model) return;\n\n    const gradient = new Gradient({\n      accessToken: this.gradientAccessKey,\n      workspaceId: this.workspaceId,\n    });\n\n    if (this.adapterId) {\n      this.model = await gradient.getModelAdapter({\n        modelAdapterId: this.adapterId,\n      });\n    } else {\n      this.model = await gradient.getBaseModel({\n        baseModelSlug: this.modelSlug,\n      });\n    }\n  }\n}\n"],"mappings":";;;;;;;;;;;AAyCA,IAAa,cAAb,cAAiCA,qCAAAA,IAAwB;CACvD,OAAO,UAAU;AACf,SAAO;;CAGT,IAAI,aAAoD;AACtD,SAAO;GACL,mBAAmB;GACnB,aAAa;GACd;;CAGH,YAAY;CAEZ;CAEA;CAEA;CAEA;CAEA,kBAAkB;CAIlB;CAEA,YAAY,QAA2B;AACrC,QAAM,OAAO;AAEb,OAAK,YAAY,QAAQ,aAAa,KAAK;AAC3C,OAAK,YAAY,QAAQ;AACzB,OAAK,oBACH,QAAQ,sBAAA,GAAA,0BAAA,wBACe,wBAAwB;AACjD,OAAK,cACH,QAAQ,gBAAA,GAAA,0BAAA,wBAAsC,wBAAwB;AAExE,OAAK,sBAAsB,OAAO;AAElC,MAAI,CAAC,KAAK,kBACR,OAAM,IAAI,MAAM,mCAAmC;AAGrD,MAAI,CAAC,KAAK,YACR,OAAM,IAAI,MAAM,mCAAmC;;CAIvD,WAAW;AACT,SAAO;;;;;;;;CAST,MAAM,MACJ,QACA,UACiB;AACjB,QAAM,KAAK,UAAU;AAerB,UAPkB,MAAM,KAAK,OAAO,KAAK,YACvC,KAAK,MAAM,SAAS;GAClB,OAAO;GACP,GAAG,KAAK;GACT,CAAC,CACH,EAEe;;CAGlB,MAAM,WAAW;AACf,MAAI,KAAK,MAAO;EAEhB,MAAM,WAAW,IAAIC,uBAAAA,SAAS;GAC5B,aAAa,KAAK;GAClB,aAAa,KAAK;GACnB,CAAC;AAEF,MAAI,KAAK,UACP,MAAK,QAAQ,MAAM,SAAS,gBAAgB,EAC1C,gBAAgB,KAAK,WACtB,CAAC;MAEF,MAAK,QAAQ,MAAM,SAAS,aAAa,EACvC,eAAe,KAAK,WACrB,CAAC"}