使用生成式人工智能构建无服务器 Web 应用程序

教程

模块四:部署后端 API

在本模块中,您将使用 AWS Amplify 配置自定义数据查询,以将 Amazon Bedrock 作为数据来源。

概述

在本模块中,您将配置一个自定义查询,该查询将引用您在先前模型中定义的数据来源和解析器,从而根据成分清单生成配方。此查询将使用自定义类型构造来自 Amazon Bedrock 的响应。 

您将学到的内容

  • 定义一个接受字符串数组的 GraphQL Query
  • 定义用于构造查询响应的自定义类型

 

实施

 完成时间

5 分钟

  • 1.在本地计算机上,导航到 ai-recipe-generator/amplify/data/resource.ts 文件,然后使用以下代码对其进行更新。然后,保存文件。

    • 以下代码定义了 askBedrock 查询,该查询采用一个名为 ingredents 的字符串数组并返回 BedrockResponse。 .handler(a.handler.custom({ entry: "./bedrock.js", dataSource: "bedrockDS" })) 行使用 bedrockDS 作为其数据来源,为这个在 bedrock.js 中定义的查询设置自定义处理程序。

     

    import { type ClientSchema, a, defineData } from "@aws-amplify/backend";
    
    const schema = a.schema({
      BedrockResponse: a.customType({
        body: a.string(),
        error: a.string(),
      }),
    
      askBedrock: a
        .query()
        .arguments({ ingredients: a.string().array() })
        .returns(a.ref("BedrockResponse"))
        .authorization((allow) => [allow.authenticated()])
        .handler(
          a.handler.custom({ entry: "./bedrock.js", dataSource: "bedrockDS" })
        ),
    });
    
    export type Schema = ClientSchema<typeof schema>;
    
    export const data = defineData({
      schema,
      authorizationModes: {
        defaultAuthorizationMode: "apiKey",
        apiKeyAuthorizationMode: {
          expiresInDays: 30,
        },
      },
    });

    2.打开一个新的终端窗口,导航到您的应用程序项目文件夹 (ai-recipe-generator),然后运行以下命令将云资源部署到隔离的开发空间中,以便快速迭代。

    npx ampx sandbox

    3.完全部署云沙盒后,您的终端将显示一条确认消息,amplify_outputs.json 文件会生成,并添加到您的项目中。 

结论

您已经配置了 GraphQL API 来定义自定义查询,以连接到 Amazon Bedrock 并根据成分清单生成配方。 

请就我们的表现提供反馈。