UNPKG

bedrock-node

Version:

A full-featured Node wrapper for Amazon Bedrock with function calling

37 lines (36 loc) 1.32 kB
import { BedrockRuntimeClient, InvokeModelCommand } from "@aws-sdk/client-bedrock-runtime"; import { XMLParser } from "fast-xml-parser"; const parser = new XMLParser(); let bedrock; export class BedrockClient { constructor({ region = 'us-east-1', accessKeyId = process.env.AWS_ACCESS_KEY_ID, secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY, sessionToken = process.env.AWS_SESSION_TOKEN } = {}) { bedrock = new BedrockRuntimeClient({ region, credentials: { accessKeyId, secretAccessKey, sessionToken } }); } async getChatCompletion({ messages, max_tokens_to_sample = 1000 }) { const response = JSON.parse(Buffer.from((await bedrock.send(new InvokeModelCommand({ contentType: 'application/json', modelId: 'anthropic.claude-v2', body: Buffer.from(JSON.stringify({ prompt: messages.map(({ type, message }) => `${type}: ${message.replaceAll('\n', '')}`).join('\n\n'), max_tokens_to_sample, })), })))?.body).toString())?.completion; const object = parser.parse(response); return { response, object }; } }