Skip to main content

AWS Step Functions 工具包

¥AWS Step Functions Toolkit

AWS Step Functions 是一项可视化工作流服务,可帮助开发者使用 AWS 服务构建分布式应用、自动化流程、编排微服务以及创建数据和机器学习 (ML) 管道。

¥AWS Step Functions are a visual workflow service that helps developers use AWS services to build distributed applications, automate processes, orchestrate microservices, and create data and machine learning (ML) pipelines.

通过在提供给代理的工具列表中包含 AWSSfn 工具,你可以授予代理调用在 AWS 云中运行的异步工作流的能力。

¥By including a AWSSfn tool in the list of tools provided to an Agent, you can grant your Agent the ability to invoke async workflows running in your AWS Cloud.

当代理使用 AWSSfn 工具时,它将提供一个 string 类型的参数,该参数随后将被传递给此工具支持的某个操作。支持的操作如下:StartExecutionDescribeExecutionSendTaskSuccess

¥When an Agent uses the AWSSfn tool, it will provide an argument of type string which will in turn be passed into one of the supported actions this tool supports. The supported actions are: StartExecution, DescribeExecution, and SendTaskSuccess.

设置

¥Setup

你需要安装 Node AWS Step Functions SDK:

¥You'll need to install the Node AWS Step Functions SDK:

npm install @aws-sdk/client-sfn

用法

¥Usage

npm install @langchain/openai @langchain/community @langchain/core

关于凭证的说明:

¥Note about credentials:

  • 如果你尚未通过 AWS CLI 运行 aws configure,则必须将 regionaccessKeyIdsecretAccessKey 提供给 AWSSfn 构造函数。

    ¥If you have not run aws configure via the AWS CLI, the region, accessKeyId, and secretAccessKey must be provided to the AWSSfn constructor.

  • 与这些凭证对应的 IAM 角色必须具有调用 Step Function 的权限。

    ¥The IAM role corresponding to those credentials must have permission to invoke the Step Function.

import { OpenAI } from "@langchain/openai";
import {
AWSSfnToolkit,
createAWSSfnAgent,
} from "@langchain/community/agents/toolkits/aws_sfn";

const _EXAMPLE_STATE_MACHINE_ASL = `
{
"Comment": "A simple example of the Amazon States Language to define a state machine for new client onboarding.",
"StartAt": "OnboardNewClient",
"States": {
"OnboardNewClient": {
"Type": "Pass",
"Result": "Client onboarded!",
"End": true
}
}
}`;

/**
* This example uses a deployed AWS Step Function state machine with the above Amazon State Language (ASL) definition.
* You can test by provisioning a state machine using the above ASL within your AWS environment, or you can use a tool like LocalStack
* to mock AWS services locally. See https://localstack.cloud/ for more information.
*/
export const run = async () => {
const model = new OpenAI({ temperature: 0 });
const toolkit = new AWSSfnToolkit({
name: "onboard-new-client-workflow",
description:
"Onboard new client workflow. Can also be used to get status of any excuting workflow or state machine.",
stateMachineArn:
"arn:aws:states:us-east-1:1234567890:stateMachine:my-state-machine", // Update with your state machine ARN accordingly
region: "<your Sfn's region>",
accessKeyId: "<your access key id>",
secretAccessKey: "<your secret access key>",
});
const executor = createAWSSfnAgent(model, toolkit);

const input = `Onboard john doe (john@example.com) as a new client.`;

console.log(`Executing with input "${input}"...`);

const result = await executor.invoke({ input });

console.log(`Got output ${result.output}`);

console.log(
`Got intermediate steps ${JSON.stringify(
result.intermediateSteps,
null,
2
)}`
);
};

API Reference: