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 作为结果。

配置

表 1. 配置参数
名称 (name) type 默认 description(描述)

keyId

字符串

null

AWS 密钥 ID。我们也可以通过 apoc.conf 中的键 apoc.aws.key.id 对其进行评估。作为 keyId-secretKey 对的替代方案,我们可以通过 headers 配置直接传递 AWS V4 签名

secretKey

字符串

null

AWS 秘密访问密钥。我们也可以通过 apoc.conf 中的键 apoc.aws.secret.id 对其进行评估。作为 keyId-secretKey 对的替代方案,我们可以通过 headers 配置直接传递 AWS V4 签名

region

字符串

us-east-1

AWS 区域

endpoint

字符串

见下文

AWS 端点。

method

字符串

"POST" (或在 apoc.ml.bedrock.list 过程中使用 "GET")

HTTP 方法

headers

Map<String, Object>

{Content-Type: 'application/json', Accept: '*/*'}

HTTP 标头

model

字符串

见下文

(此配置在 bedrock.list 过程中被忽略。) Bedrock 模型

path

字符串

"foundation-models"

(仅在 bedrock.list 中有效) 端点路径。它将创建一个类型为 https://bedrock.<regionConfigValue>.amazonaws.com/<path>; 的端点,即默认使用 https://bedrock.us-east-1.amazonaws.com/foundation-models

openAICompatible

字符串

false

用于传递与 OpenAI 聊天补全 API 兼容的请求体,使用 apoc.ml.bedrock.chat,例如:{role:"system", content:"Only answer with a single word"} ,{role:"user", content:"What planet do humans live on?"}

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.chatbedrock.completionbedrock.embeddingbedrock.image 过程,其默认值分别为 "anthropic.claude-v2"、"ai21.j2-ultra-v1"、"anthropic.claude-v2" 和 "stability.stable-diffusion-xl-v0"。

身份验证设置

要验证 bedrock 服务,我们可以在 apoc.conf 文件中设置以下条目。

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/jsonAccept: */* 标头条目始终会传递给 HTTP 请求,除非通过 header 配置覆盖。

在以下示例中,我们假设已通过 apoc.conf 设置了 Key ID 和 Secret Access Key。

用法示例

聊天补全 API (Chat Completion API)

此过程 apoc.ml.bedrock.chat 接收一组助手和用户之间的聊天交换映射列表(可选系统上下文),并将返回流程中的下一条消息。

额外的配置会传递给 API,默认使用的模型是 anthropic.claude-v2

apoc.ml.bedrock.chat
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:"]
    }
])
表 2. 结果

{"stop_reason": "stop_sequence","completion": " Hello!"}

我们可以使用配置 openAICompatible: true 来使用与 apoc.ml.openai.chat 过程一致的 message 请求体。使用此配置时,prompt 请求将被放置在条目 {content: '<promts>'} 中,如果不存在,将默认加上 "\n\nHuman:"` 前缀和 \n\nAssistant: 后缀。

例如,代替

apoc.ml.bedrock.chat (openAICompatible: false 时)
CALL apoc.ml.bedrock.chat(
    [ {prompt: "\n\nHuman: Hello world\n\nAssistant:",max_tokens_to_sample: 200} ]
)

我们可以执行此查询(注意 role:"system" 条目是可选的,仅为与 OpenAI 请求体保持一致):

apoc.ml.bedrock.chat (openAICompatible: true 时)
CALL apoc.ml.bedrock.chat([
    {role:"system", content:"Hello world"}
])

文本补全 API (Text Completion API)

此过程 apoc.ml.bedrock.completion 可以继续/补全给定的文本。额外的配置会传递给 API,默认使用的模型是 ai21.j2-ultra-v1

apoc.ml.bedrock.completion
CALL apoc.ml.bedrock.completion('What color is the sky? Answer in one word: ')
表 3. 结果
{
  "id": 1234,
  "completions": [
    {
      "data": {
        "text": "\nBlue",
        "tokens": ["....."]
      },
      "finishReason": {
        "reason": "endoftext"
      }
    }
  ],
  "prompt": {}
}

图像 API

此过程 apoc.ml.bedrock.completion 可以获取 base64 图像。额外的配置会传递给 API,默认使用的模型是 stability.stable-diffusion-xl-v0

apoc.ml.bedrock.image
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"
})
表 4. 结果
base64Image

"iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAABjmVYSWZNTQAqAAAACAAGAQAABAAAAAEAAAIAAQEABAAA…​."

模型列表

CALL apoc.ml.bedrock.list()
表 5. 结果
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"
})
表 6. 结果

{ "loggingConfig": {"cloudWatchConfig": { … }}}

© . This site is unofficial and not affiliated with Neo4j, Inc.