我一直在使用Claudev2模型的AWS基岩工作。
我已经成功地通过Bedrock API制作了我的第一个提示符。问题是它没有读到以前的消息,这就像制作了一个新的示例。
这是我的工作代码,它是一个Nest.js类型脚本:
export const send = async (message: string) => {
return new Promise(async (resolve, reject) => {
try {
console.log("Sending...")
AWS.config.update({
accessKeyId: process.env.ACCESS_KEY,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
sessionToken: process.env.SESSION_TOKEN,
region: process.env.REGION,
});
const bedrock = new AWS.BedrockRuntime();
const params: any = {
"modelId": "anthropic.claude-v2",
"contentType": "application/json",
"accept": "application/json",
"body": JSON.stringify({
"prompt": `\n\nHuman:\n ${message}
\n\nAssistant:
`,
"max_tokens_to_sample": 2048,
"temperature": 0.5,
"top_k": 250,
"top_p": 1,
"stop_sequences": [
"\\n\\nHuman:"
],
"anthropic_version": "bedrock-2023-05-31"
})
}
const data = await bedrock.invokeModel(params).promise()
if (!data) {
console.error("Error invoking the model:", data);
resolve(data)
} else {
const response_body = JSON.parse(data.body.toString());
resolve(response_body)
}
} catch (error) {
console.log("Failed to send")
reject(error);
}
});
字符串
}
我最近发现可以在aws basestal中使用Streaming API,但是没有资源。下面是我的代码:
export const streaming = async () => {
return new Promise(async (resolve, reject) => {
try {
AWS.config.update({
accessKeyId: process.env.ACCESS_KEY,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
sessionToken: process.env.SESSION_TOKEN,
region: process.env.REGION,
});
const bedrock = new AWS.BedrockRuntime();
const params = {
modelId: "anthropic.claude-v2",
contentType: "application/json",
accept: "application/json",
body: JSON.stringify({
prompt: `
\n\nHuman:explain black holes to 8th graders
\n\nAssistant:
`,
max_tokens_to_sample: 300,
temperature: 0.1,
top_p: 0.9,
}),
responseStream: true // Set responseStream to true to receive a response stream
,
};
const responseStream = bedrock.invokeModelWithResponseStream(params);
// @ts-ignore
responseStream.on("data", (data: any) => {
// Process the response data as it streams
console.log("Received data:", data.toString());
});
responseStream.on("end", (): void => {
// Streaming response complete
console.log("Streaming complete.");
// @ts-ignore
resolve();
});
responseStream.on("error", (err) => {
console.error("Error while streaming response:", err);
reject(err);
});
} catch (error) {
reject(error);
}
});
};
型
使用bedrock.invokeModelWithResponseStream(params);
,我可以让它运行。它开始侦听。但是我不知道如何向正在运行的侦听器发送消息。
到目前为止,我一直在使用AWS SDK的JavaScript v2,我不能让它在Javascript v3中运行。
ChatGPT没有关于AWS Bedrock的数据。
参考文献:
https://docs.anthropic.com/claude/reference/streaming
https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html的一个。
1条答案
按热度按时间llycmphe1#
我也有同样的问题与Llama2模型有关。出于各种原因,我转向使用Claude2模型,并发现了如何在此过程中进行对话。基本上,与Claude2进行对话的方式是通过存储整个对话的状态,然后将越来越大的对话片段传递给模型。每次向模型发送文本时,它应该代表到那一点为止的整个对话。每个Human条目之前应该加上“\n\nHuman:“,每个Claude2条目之前应该加上“\n\nAssistant:“。