AWS Bedrock 过程
这些过程利用了 Amazon Bedrock API。
以下是所有可用的 AWS Bedrock 过程列表
| 名称 (name) | description(描述) |
|---|---|
apoc.ml.bedrock.custom(body, $config) |
用于创建可自定义的 Bedrock API 调用 |
apoc.ml.bedrock.list($config) |
用于获取基础模型或自定义模型列表 |
apoc.ml.bedrock.embedding(texts, $config) |
用于创建生成嵌入(Embedding)的 API 调用 |
apoc.ml.bedrock.chat(messages, $config) |
用于创建聊天补全(Chat Completion)API 调用 |
apoc.ml.bedrock.completion(prompt, $config) |
用于创建文本补全(Text Completion)API 调用 |
apoc.ml.bedrock.image(body, $config) |
用于创建获取图像的 API 调用 |
所有过程都利用了 apoc.ml.bedrock.custom 过程,并支持相同的配置参数,但与 custom 过程不同的是,它们具有不同的默认参数和模型 ID。
此外,返回的数据与所调用的 API 一致,而不是返回一个通用的 Object 作为结果。
配置
| 名称 (name) | type | 默认 | description(描述) |
|---|---|---|---|
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 聊天补全 API 兼容的请求体,使用 |
endpoint 配置的优先级高于 model 配置。对于除 bedrock.list 之外的所有过程,默认 endpoint 为 "https://bedrock-runtime.<regionConfigValue>.amazonaws.com/model/<modelConfigValue>/invoke"。因此,使用默认的 region 配置(即 "us-east-1")时,默认端点为 "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 设置了 Key ID 和 Secret Access Key。
用法示例
聊天补全 API (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 (Text Completion 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"
})
| 值 |
|---|
|