@aigne/bedrock 包提供了 AIGNE 框架与 Amazon Web Services (AWS) Bedrock 之间直接而强大的集成。这使得开发者能够在他们的 AIGNE 应用程序中利用 AWS Bedrock 提供的各种基础模型,既能受益于 AWS 可扩展且安全的基础设施,又能保持一致的接口。
本指南系统地概述了 BedrockChatModel 的安装、配置和使用。有关其他模型的详细信息,请参阅主要的模型概述。
安装
首先,使用您偏好的包管理器安装必要的包。@aigne/core 包是必需的对等依赖项。
Terminal
# 使用 npm
npm install @aigne/bedrock @aigne/core
# 使用 yarn
yarn add @aigne/bedrock @aigne/core
# 使用 pnpm
pnpm add @aigne/bedrock @aigne/core配置
正确的配置涉及设置 AWS 凭证并使用所需参数实例化 BedrockChatModel。
AWS 凭证
AWS SDK 需要凭证来验证请求。您可以通过以下两种方式之一提供它们:
- 环境变量(推荐):在您的开发或部署环境中设置以下环境变量。SDK 将自动检测并使用它们。
AWS_ACCESS_KEY_ID:您的 AWS access key ID。AWS_SECRET_ACCESS_KEY:您的 AWS secret access key。AWS_REGION:您的 Bedrock 服务启用的 AWS 区域(例如us-east-1)。
- 直接实例化:将凭证直接传递给
BedrockChatModel构造函数。此方法适用于特定的使用场景,但通常不如使用环境变量安全。
BedrockChatModel 选项
BedrockChatModel 是与 AWS Bedrock 交互的主要类。其构造函数接受一个选项对象来配置其行为。
- accessKeyId
string— 您的 AWS access key ID。如果未提供,SDK 将尝试从 AWS_ACCESS_KEY_ID 环境变量中读取。 - secretAccessKey
string— 您的 AWS secret access key。如果未提供,SDK 将尝试从 AWS_SECRET_ACCESS_KEY 环境变量中读取。 - region
string— Bedrock 服务所在的 AWS 区域。如果未提供,SDK 将尝试从 AWS_REGION 环境变量中读取。 - model
string(default:us.amazon.nova-lite-v1:0) — 要使用的基础模型的 ID(例如 anthropic.claude-3-sonnet-20240229-v1、meta.llama3-8b-instruct-v1)。 - modelOptions
object— 用于控制模型推理行为的附加选项。- temperature
number— 控制生成内容的随机性。值越高,响应越具创造性。 - topP
number— 控制核采样。模型仅考虑概率总和为 P 的最高概率的词元。
- temperature
- clientOptions
object— 直接传递给底层 AWS SDK 的 BedrockRuntimeClient 的高级配置选项。
用法示例
以下示例演示了如何使用 BedrockChatModel 进行标准调用和流式调用。
基本用法
此示例展示了如何实例化模型并调用它以获得单个完整的响应。
Basic Invocation
import { BedrockChatModel } from "@aigne/bedrock";
// 使用凭证和模型 ID 实例化模型
const model = new BedrockChatModel({
accessKeyId: "YOUR_ACCESS_KEY_ID", // 或使用环境变量
secretAccessKey: "YOUR_SECRET_ACCESS_KEY", // 或使用环境变量
region: "us-east-1", // 指定您的 AWS 区域
model: "anthropic.claude-3-haiku-20240307-v1:0",
modelOptions: {
temperature: 0.7,
},
});
// 定义输入消息
const result = await model.invoke({
messages: [{ role: "user", content: "Hello, what is AWS Bedrock?" }],
});
console.log(result.text);输出将是一个包含模型响应的字符串。result 对象还包含使用情况的指标。
流式响应
对于需要实时反馈的应用程序,您可以在生成响应时以流的形式接收它。这对于聊天机器人和其他交互式体验非常有用。
Streaming Invocation
import { BedrockChatModel } from "@aigne/bedrock";
import { isAgentResponseDelta } from "@aigne/core";
const model = new BedrockChatModel({
accessKeyId: "YOUR_ACCESS_KEY_ID",
secretAccessKey: "YOUR_SECRET_ACCESS_KEY",
region: "us-east-1",
model: "anthropic.claude-3-haiku-20240307-v1:0",
modelOptions: {
temperature: 0.7,
},
});
const stream = await model.invoke(
{
messages: [{ role: "user", content: "Hello, what is AWS Bedrock?" }],
},
{ streaming: true },
);
let fullText = "";
for await (const chunk of stream) {
// 使用类型守卫检查 chunk 是否为增量
if (isAgentResponseDelta(chunk)) {
const text = chunk.delta.text?.text;
if (text) {
fullText += text;
process.stdout.write(text); // 在响应的每个部分到达时打印它
}
}
}
console.log("\n--- Full Response ---");
console.log(fullText);此代码处理一个 AgentResponseChunk 对象流。每个块包含响应的增量部分,这些部分累积起来形成完整的文本。
支持的模型
AWS Bedrock 提供了对来自 Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的各种基础模型的访问。您可以使用其唯一的 modelId 来指定所需的模型。
一些常用的模型系列包括:
- Anthropic Claude:
anthropic.claude-3-sonnet-20240229-v1:0,anthropic.claude-3-haiku-20240307-v1:0 - Meta Llama:
meta.llama3-8b-instruct-v1:0 - Amazon Titan:
amazon.titan-text-express-v1
有关可用模型及其相应 ID 的完整和最新列表,请参阅 AWS Bedrock 官方文档。
总结
@aigne/bedrock 包提供了一种将 AWS Bedrock 强大的基础模型集成到您的 AIGNE 应用程序中的简化方法。通过遵循本指南中概述的配置步骤和使用模式,您可以高效地构建和部署由 AI 驱动的功能。
有关更高级的主题,例如工具使用和结构化输出,请参阅 AI Agent 文档。