I have a file called bedrock.mjs
in AWS Lambda with the below code:
import {
BedrockRuntimeClient,
InvokeModelCommand,
} from "@aws-sdk/client-bedrock-runtime"
export const callBedrock = async (prompt, max_tokens, temperature) => {
const client = new BedrockRuntimeClient()
const input = {
modelId: "cohere.command-text-v14",
contentType: "application/json",
accept: "application/json",
body: JSON.stringify({
prompt,
max_tokens,
temperature
})
}
const command = new InvokeModelCommand(input)
const response = await client.send(command)
return response
}
When I call callBedrock("Respond with a nice greeting", 100, 0.2)
, the body
from the response is:
{\"0\":123,\"1\":34,\"2\":103,\"3\":101,\"4\":110,\"5\":101,\"6\":114,\"7\":97,\"8\":116,\"9\":105,\"10\":111,\"11\":110,\"12\":115,\"13\":34,\"14\":58,\"15\":91,\"16\":123,\"17\":34,\"18\":105,\"19\":100,\"20\":34,\"21\":58,\"22\":34,\"23\":98,\"24\":98,\"25\":101,\"26\":54,\"27\":56,\"28\":49,\"29\":54,\"30\":101,\"31\":45,\"32\":48,\"33\":99,\"34\":49,\"35\":50,\"36\":45,\"37\":52,\"38\":50,\"39\":53,\"40\":99,\"41\":45,\"42\":56,\"43\":56,\"44\":101,\"45\":52,\"46\":45,\"47\":98,\"48\":102,\"49\":49,\"50\":51,\"51\":49,\"52\":101,\"53\":98,\"54\":56,\"55\":49,\"56\":49,\"57\":100,\"58\":50,\"59\":34,\"60\":44,\"61\":34,\"62\":116,\"63\":101,\"64\":120,\"65\":116,\"66\":34,\"67\":58,\"68\":34,\"69\":32,\"70\":72,\"71\":101,\"72\":108,\"73\":108,\"74\":111,\"75\":33,\"76\":32,\"77\":72,\"78\":111,\"79\":119,\"80\":32,\"81\":99,\"82\":97,\"83\":110,\"84\":32,\"85\":73,\"86\":32,\"87\":104,\"88\":101,\"89\":108,\"90\":112,\"91\":32,\"92\":121,\"93\":111,\"94\":117,\"95\":32,\"96\":116,\"97\":111,\"98\":100,\"99\":97,\"100\":121,\"101\":63,\"102\":34,\"103\":125,\"104\":93,\"105\":44,\"106\":34,\"107\":105,\"108\":100,\"109\":34,\"110\":58,\"111\":34,\"112\":99,\"113\":97,\"114\":100,\"115\":99,\"116\":57,\"117\":50,\"118\":102,\"119\":51,\"120\":45,\"121\":53,\"122\":50,\"123\":102,\"124\":97,\"125\":45,\"126\":52,\"127\":56,\"128\":101,\"129\":56,\"130\":45,\"131\":98,\"132\":100,\"133\":57,\"134\":54,\"135\":45,\"136\":48,\"137\":57,\"138\":57,\"139\":57,\"140\":102,\"141\":98,\"142\":55,\"143\":56,\"144\":53,\"145\":97,\"146\":101,\"147\":101,\"148\":34,\"149\":44,\"150\":34,\"151\":112,\"152\":114,\"153\":111,\"154\":109,\"155\":112,\"156\":116,\"157\":34,\"158\":58,\"159\":34,\"160\":82,\"161\":101,\"162\":115,\"163\":112,\"164\":111,\"165\":110,\"166\":100,\"167\":32,\"168\":119,\"169\":105,\"170\":116,\"171\":104,\"172\":32,\"173\":97,\"174\":32,\"175\":110,\"176\":105,\"177\":99,\"178\":101,\"179\":32,\"180\":103,\"181\":114,\"182\":101,\"183\":101,\"184\":116,\"185\":105,\"186\":110,\"187\":103,\"188\":34,\"189\":125}
How is this supposed to be interpreted or used?
The body
is a Uint8Array
, which you can convert to text using the TextDecoder
:
const response = await client.send(command)
let decoder = new TextDecoder();
let text = decoder.decode(response.body);
console.log(text);
For your input, this returns:
{
"generations": [
{
"id": "f7652e8a-b50b-4251-82c4-cf346a997075",
"text": " Hello! How can I help you today?"
}
],
"id": "6d267bf5-35fa-4d08-9083-70595f6fdbab",
"prompt": "Respond with a nice greeting"
}
This should be based on the mime type (accept
) but any other mime type other than application/json
for this model throws the error:
ValidationException: The provided Accept Type is invalid or not supported for this model