AWS Step Functions 工具包
AWS Step Functions 是一种可视化工作流程服务,可帮助开发人员使用 AWS 服务构建分布式应用程序、自动化流程、编排微服务以及创建数据和机器学习 (ML) 管道。
通过将 AWSSfn
工具包含在提供给代理的工具列表中,您可以授予代理调用 AWS 云中运行的异步工作流的能力。
当代理使用 AWSSfn
工具时,它将提供一个类型为 string
的参数,该参数将依次传递到此工具支持的受支持操作之一。受支持的操作包括:StartExecution
、DescribeExecution
和 SendTaskSuccess
。
设置
您需要安装 Node AWS Step Functions SDK
- npm
- Yarn
- pnpm
npm install @aws-sdk/client-sfn
yarn add @aws-sdk/client-sfn
pnpm add @aws-sdk/client-sfn
用法
提示
- npm
- Yarn
- pnpm
npm install @langchain/openai @langchain/community
yarn add @langchain/openai @langchain/community
pnpm add @langchain/openai @langchain/community
关于凭据的说明:
- 如果您尚未通过 AWS CLI 运行
aws configure
,则必须将region
、accessKeyId
和secretAccessKey
提供给 AWSSfn 构造函数。 - 与这些凭据相对应的 IAM 角色必须具有调用 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 ([email protected]) 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 参考
- OpenAI 来自
@langchain/openai
- AWSSfnToolkit 来自
@langchain/community/agents/toolkits/aws_sfn
- createAWSSfnAgent 来自
@langchain/community/agents/toolkits/aws_sfn