AWS Bedrock 过程
这些过程利用了 Amazon Bedrock API.
以下是所有可用 Aws Bedrock 过程的列表
名称 | 描述 |
---|---|
apoc.ml.bedrock.custom(body, $config) |
创建可自定义的 Bedrock API 调用 |
apoc.ml.bedrock.list($config) |
获取基础模型或自定义模型列表 |
apoc.ml.bedrock.embedding(texts, $config) |
创建 API 调用以生成嵌入 |
apoc.ml.bedrock.chat(messages, $config) |
创建聊天完成 API 调用 |
apoc.ml.bedrock.completion(prompt, $config) |
创建文本完成 API 调用 |
apoc.ml.bedrock.image(body, $config) |
创建 API 调用以获取图像 |
所有过程都利用了 apoc.ml.bedrock.custom
过程,并支持相同的配置参数,但与 custom
过程不同,它们有一些不同的默认参数和模型 ID。
此外,返回的数据与调用的 API 一致,而不是作为结果返回泛型 Object
配置
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
keyId |
字符串 |
null |
AWS 密钥 ID。我们也可以通过 |
secretKey |
字符串 |
null |
AWS 秘密访问密钥。我们也可以通过 |
region |
字符串 |
us-east-1 |
AWS 区域 |
endpoint |
字符串 |
见下文 |
AWS 端点。 |
method |
字符串 |
|
HTTP 方法 |
headers |
Map<String, Object> |
|
HTTP 标头 |
model |
字符串 |
见下文 |
(此配置在 |
path |
字符串 |
"foundation-models" |
(仅在 |
openAICompatible |
字符串 |
false |
要传递与 OpenAI Chat Completions API 兼容的正文请求,使用 apoc.ml.bedrock.chat,例如: |
endpoint
配置优先于 model
配置。在所有过程中(bedrock.list
除外),默认的 endpoint
为 "https://bedrock-runtime.<regionConfigValue>.amazonaws.com/model/<modelConfigValue>/invoke"
。因此,使用默认的 region
配置,即 "us-east-1",默认的 endpoint
为 "https://bedrock-runtime.us-east-1.amazonaws.com/model/<modelConfigValue>/invoke"
。
如果我们使用 ml.bedrock.custom
过程,则必须配置 <modelConfigValue>
部分,而对于 bedrock.chat
、bedrock.completion
、bedrock.embedding
、bedrock.image
,其默认值为 "anthropic.claude-v2"、"ai21.j2-ultra-v1"、"anthropic.claude-v2" 和 "stability.stable-diffusion-xl-v0"。
身份验证设置
要对 bedrock 服务进行身份验证,我们可以在 apoc.conf
文件中设置以下条目。
apoc.aws.key.id=<AWS Key ID>
apoc.aws.secret.key=<AWS Secret Access Key>
或者,我们可以将它们设置为 $config
参数,即:{keyId: '<AWS Key ID>', secretKey:'<AWS Secret Access Key>'}
。
或者,我们也可以使用 header
参数放置授权标头,例如 {header: {Authorization: 'AWS4-HMAC-SHA256 <CredentialAndSignature..>', …其他条目…} }
。
请注意,默认的 Content-Type: application/json
和 Accept: */*
标头条目始终传递给 http 请求,除非通过配置 header
覆盖。
在以下示例中,我们假设通过 apoc.conf
设置密钥 ID 和秘密访问密钥。
使用示例
Chat Completion API
此过程 apoc.ml.bedrock.chat
接受助手和用户之间聊天交换的映射列表(带有可选的系统上下文),并将返回流中的下一条消息。
其他配置将传递到 API,使用的默认模型为 anthropic.claude-v2
。
CALL apoc.ml.bedrock.chat([
{
prompt: "\n\nHuman: Hello world\n\nAssistant:",
max_tokens_to_sample: 50,
top_k: 250,
top_p: 1,
stop_sequences: ["\\n\\nHuman:"]
}
])
值 |
---|
{"stop_reason": "stop_sequence","completion": " Hello!"} |
我们可以使用配置 openAICompatible: true
,使用与 apoc.ml.openai.chat 过程一致的 message
正文请求。使用此配置,prompt
请求将放置在 {content: '<promts>'}
条目中,如果不存在,将具有默认的 "\n\nHuman:"` 前缀和 \n\nAssistant:
后缀。
例如,而不是
CALL apoc.ml.bedrock.chat(
[ {prompt: "\n\nHuman: Hello world\n\nAssistant:",max_tokens_to_sample: 200} ]
)
我们可以执行此查询(注意,role:"system"
条目是可选的,它只是为了与 OpenAI 正文保持一致)
CALL apoc.ml.bedrock.chat([
{role:"system", content:"Hello world"}
])
文本完成 API
此过程 apoc.ml.bedrock.completion
可以继续/完成给定的文本。其他配置将传递到 API,使用的默认模型为 ai21.j2-ultra-v1
。
CALL apoc.ml.bedrock.completion('What color is the sky? Answer in one word: ')
值 |
---|
|
图像 API
此过程 apoc.ml.bedrock.completion
可以获取 base64 图像。其他配置将传递到 API,使用的默认模型为 stability.stable-diffusion-xl-v0
。
CALL apoc.ml.bedrock.image({
text_prompts: [{text: "picture of a bird", weight: 1.0}],
cfg_scale: 5,
seed: 123,
steps: 70,
style_preset: "photographic"
})
base64Image |
---|
"iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAABjmVYSWZNTQAqAAAACAAGAQAABAAAAAEAAAIAAQEABAAA…." |
模型列表
CALL apoc.ml.bedrock.list()
modelId | modelArn | modelName | providerName | responseStreamingSupported | customizationsSupported | inferenceTypesSupported | inputModalities | outputModalities |
---|---|---|---|---|---|---|---|---|
"amazon.titan-tg1-large" |
"arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-tg1-large" |
"Titan Text Large" |
"Amazon" |
true |
["FINE_TUNING"] |
["ON_DEMAND"] |
["TEXT"] |
["TEXT"] |
"amazon.titan-e1t-medium" |
"arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-e1t-medium" |
"Titan Text Embeddings" |
"Amazon" |
null |
[] |
["ON_DEMAND"] |
["TEXT"] |
["EMBEDDING"] |
… |
… |
… |
… |
null |
[] |
… |
… |
… |
自定义 AWS API 调用
通过 apoc.ml.bedrock.custom
,我们可以通过选择 HTTP 方法、端点、区域和附加标头来创建可自定义的 Bedrock API 请求。这对于 调用模型(如果响应与之前的过程不兼容)以及使用任何其他 Bedrock API 都很有用。
例如,我们可以通过执行以下查询来调用 GetModelInvocationLoggingConfiguration API(请注意,body
参数为空,因为 API 没有请求正文)。
CALL apoc.ml.bedrock.custom(null,{
endpoint: "https://bedrock.us-east-1.amazonaws.com/logging/modelinvocations",
method: "GET"
})
值 |
---|
|