@aigne/bedrock 套件提供了 AIGNE 框架與 Amazon Web Services (AWS) Bedrock 之間直接且穩固的整合。這讓開發人員能夠在其 AIGNE 應用程式中,利用 AWS Bedrock 提供的各種基礎模型,既能享受 AWS 可擴展且安全的基礎設施,又能維持一致的介面。
本指南對 BedrockChatModel 的安裝、設定和使用方式提供了系統性的概覽。有關其他模型的詳細資訊,請參閱主要的 模型概覽。
安裝
首先,使用您偏好的套件管理器安裝必要的套件。@aigne/core 套件是必要的對等依賴項 (peer dependency)。
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— 控制核心取樣。模型僅會考慮機率總和為 top 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 是否為 delta
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 物件的串流。每個區塊 (chunk) 包含回應的增量部分 (delta),這些部分會被累積起來形成完整的文本。
支援的模型
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 文件。