AWS Bedrock procedure
这些过程利用 Amazon Bedrock API。
以下是所有可用 Aws Bedrock 过程的列表
名称 | 描述 |
---|---|
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) |
用于创建聊天完成 API 调用 |
apoc.ml.bedrock.completion(prompt, $config) |
用于创建文本完成 API 调用 |
apoc.ml.bedrock.image(body, $config) |
用于创建获取图像的 API 调用 |
所有过程都利用了 apoc.ml.bedrock.custom
过程,并支持相同的配置参数,但与 custom
不同的是,它们有一些不同的默认参数和模型 ID。
此外,返回数据与调用的 API 一致,而不是返回一个泛型 Object
作为结果
配置
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
keyId |
String |
null |
AWS key ID。我们也可以通过 |
secretKey |
String |
null |
AWS secret access key。我们也可以通过 |
region |
String |
us-east-1 |
AWS 区域 |
endpoint |
String |
见下文 |
AWS 端点。 |
method |
String |
|
HTTP 方法 |
headers |
Map<String, Object> |
|
HTTP Header |
model |
String |
见下文 |
(此配置与 |
path |
String |
"foundation-models" |
(仅适用于 |
openAICompatible |
String |
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",默认端点是 "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
参数设置 Authorization header,例如:{header: {Authorization: 'AWS4-HMAC-SHA256 <CredentialAndSignature..>', …other entries…} }
。
请注意,默认的 Content-Type: application/json
和 Accept: */*
头条目总是传递给 http 请求,除非通过 config header
覆盖。
在以下示例中,我们假设通过 apoc.conf
设置了 Key id 和 Secret Access Key。
使用示例
聊天完成 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!"} |
我们可以使用 config openAICompatible: true
来使用与 apoc.ml.openai.chat 过程兼容的 message
请求正文。使用此 config 时,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
,我们可以创建一个可自定义的 Bedrock API 请求,选择 HTTP 方法、端点、区域和附加头部。这对于调用模型(如果响应与先前的过程不兼容)和使用任何其他 Bedrock API 都很有用。
例如,我们可以通过执行以下查询调用 GetModelInvocationLoggingConfiguration API(请注意,body
参数为 null,因为此 API 没有请求正文)。
CALL apoc.ml.bedrock.custom(null,{
endpoint: "https://bedrock.us-east-1.amazonaws.com/logging/modelinvocations",
method: "GET"
})
值 |
---|
|