@langchain/community
Version:
Third-party integrations for LangChain.js
1 lines • 4.58 kB
Source Map (JSON)
{"version":3,"file":"aws_lambda.cjs","names":["DynamicTool"],"sources":["../../src/tools/aws_lambda.ts"],"sourcesContent":["import { DynamicTool, DynamicToolInput } from \"@langchain/core/tools\";\n\n/**\n * Interface for the configuration of the AWS Lambda function.\n */\ninterface LambdaConfig {\n functionName: string;\n region?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n}\n\n/**\n * Interface for the arguments to the LambdaClient constructor.\n */\ninterface LambdaClientConstructorArgs {\n region?: string;\n credentials?: {\n accessKeyId: string;\n secretAccessKey: string;\n };\n}\n\n/**\n * Class for invoking AWS Lambda functions within the LangChain framework.\n * Extends the DynamicTool class.\n */\nclass AWSLambda extends DynamicTool {\n get lc_namespace(): string[] {\n return [...super.lc_namespace, \"aws_lambda\"];\n }\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n accessKeyId: \"AWS_ACCESS_KEY_ID\",\n secretAccessKey: \"AWS_SECRET_ACCESS_KEY\",\n };\n }\n\n private lambdaConfig: LambdaConfig;\n\n constructor({\n name,\n description,\n ...rest\n }: LambdaConfig & Omit<DynamicToolInput, \"func\">) {\n super({\n name,\n description,\n func: async (input: string) => this._func(input),\n });\n\n this.lambdaConfig = rest;\n }\n\n /** @ignore */\n async _func(input: string): Promise<string> {\n const { Client, Invoker } = await LambdaImports();\n\n const clientConstructorArgs: LambdaClientConstructorArgs = {};\n\n if (this.lambdaConfig.region) {\n clientConstructorArgs.region = this.lambdaConfig.region;\n }\n\n if (this.lambdaConfig.accessKeyId && this.lambdaConfig.secretAccessKey) {\n clientConstructorArgs.credentials = {\n accessKeyId: this.lambdaConfig.accessKeyId,\n secretAccessKey: this.lambdaConfig.secretAccessKey,\n };\n }\n\n const lambdaClient = new Client(clientConstructorArgs);\n\n return new Promise((resolve) => {\n const payloadUint8Array = new TextEncoder().encode(JSON.stringify(input));\n\n const command = new Invoker({\n FunctionName: this.lambdaConfig.functionName,\n InvocationType: \"RequestResponse\",\n Payload: payloadUint8Array,\n });\n\n lambdaClient\n .send(command)\n .then((response) => {\n const responseData = JSON.parse(\n new TextDecoder().decode(response.Payload)\n );\n\n resolve(responseData.body ? responseData.body : \"request completed.\");\n })\n .catch((error: Error) => {\n console.error(\"Error invoking Lambda function:\", error);\n resolve(\"failed to complete request\");\n });\n });\n }\n}\n\n/**\n * Helper function that imports the necessary AWS SDK modules for invoking\n * the Lambda function. Returns an object that includes the LambdaClient\n * and InvokeCommand classes from the AWS SDK.\n */\nasync function LambdaImports() {\n try {\n const { LambdaClient, InvokeCommand } =\n await import(\"@aws-sdk/client-lambda\");\n\n return {\n Client: LambdaClient as typeof LambdaClient,\n Invoker: InvokeCommand as typeof InvokeCommand,\n };\n } catch (e) {\n console.error(e);\n throw new Error(\n \"Failed to load @aws-sdk/client-lambda'. Please install it eg. `pnpm install @aws-sdk/client-lambda`.\"\n );\n }\n}\n\nexport { AWSLambda };\n"],"mappings":";;;;;;;;;AA2BA,IAAM,YAAN,cAAwBA,sBAAAA,YAAY;CAClC,IAAI,eAAyB;AAC3B,SAAO,CAAC,GAAG,MAAM,cAAc,aAAa;;CAG9C,IAAI,aAAoD;AACtD,SAAO;GACL,aAAa;GACb,iBAAiB;GAClB;;CAGH;CAEA,YAAY,EACV,MACA,aACA,GAAG,QAC6C;AAChD,QAAM;GACJ;GACA;GACA,MAAM,OAAO,UAAkB,KAAK,MAAM,MAAM;GACjD,CAAC;AAEF,OAAK,eAAe;;;CAItB,MAAM,MAAM,OAAgC;EAC1C,MAAM,EAAE,QAAQ,YAAY,MAAM,eAAe;EAEjD,MAAM,wBAAqD,EAAE;AAE7D,MAAI,KAAK,aAAa,OACpB,uBAAsB,SAAS,KAAK,aAAa;AAGnD,MAAI,KAAK,aAAa,eAAe,KAAK,aAAa,gBACrD,uBAAsB,cAAc;GAClC,aAAa,KAAK,aAAa;GAC/B,iBAAiB,KAAK,aAAa;GACpC;EAGH,MAAM,eAAe,IAAI,OAAO,sBAAsB;AAEtD,SAAO,IAAI,SAAS,YAAY;GAC9B,MAAM,oBAAoB,IAAI,aAAa,CAAC,OAAO,KAAK,UAAU,MAAM,CAAC;GAEzE,MAAM,UAAU,IAAI,QAAQ;IAC1B,cAAc,KAAK,aAAa;IAChC,gBAAgB;IAChB,SAAS;IACV,CAAC;AAEF,gBACG,KAAK,QAAQ,CACb,MAAM,aAAa;IAClB,MAAM,eAAe,KAAK,MACxB,IAAI,aAAa,CAAC,OAAO,SAAS,QAAQ,CAC3C;AAED,YAAQ,aAAa,OAAO,aAAa,OAAO,qBAAqB;KACrE,CACD,OAAO,UAAiB;AACvB,YAAQ,MAAM,mCAAmC,MAAM;AACvD,YAAQ,6BAA6B;KACrC;IACJ;;;;;;;;AASN,eAAe,gBAAgB;AAC7B,KAAI;EACF,MAAM,EAAE,cAAc,kBACpB,MAAM,OAAO;AAEf,SAAO;GACL,QAAQ;GACR,SAAS;GACV;UACM,GAAG;AACV,UAAQ,MAAM,EAAE;AAChB,QAAM,IAAI,MACR,uGACD"}