AWS SageMaker 过程

这些过程利用了 Amazon SageMaker API

以下是所有可用 AWS SageMaker 过程的列表

名称 (name) description(描述)

apoc.ml.sagemaker.custom(body, $config)

用于创建可自定义的 SageMaker API 调用

apoc.ml.sagemaker.embedding(texts, $config)

用于创建生成嵌入 (embedding) 的 API 调用

apoc.ml.sagemaker.chat(messages, $config)

用于创建聊天补全 (Chat Completion) API 调用

apoc.ml.sagemaker.completion(prompt, $config)

用于创建文本补全 (Text Completion) API 调用

所有过程均利用了 apoc.ml.sagemaker.custom 过程,并支持相同的配置参数。但与 custom 不同的是,它们具有一些不同的默认参数和端点名称。

此外,返回的数据与被调用的 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"

HTTP 方法

headers

Map<String, Object>

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

HTTP 标头

endpointName

字符串

见下文

SageMaker 端点名称

endpoint 配置优先于 model。对于所有过程,默认的 endpoint"https://runtime.sagemaker.<regionConfigValue>.amazonaws.com/endpoints/<endpointNameConfigValue>/invocations"。因此,使用默认的 region 配置(即 "us-east-1"),默认端点为 "https://runtime.sagemaker.us-east-1.amazonaws.com/endpoints/<endpointNameConfigValue>/invocations"

如果我们使用 ml.sagemaker.custom 过程,则必须配置 <endpointNameConfigValue> 部分或 endpoint URL。而 sagemaker.chatsagemaker.completionsagemaker.embedding 过程分别具有默认值 "Endpoint-Distilbart-xsum-1-1-1"、"Endpoint-GPT-2-1" 和 "Endpoint-Jina-Embeddings-v2-Base-en-1"。

由于 SageMaker 允许您选择要使用的端点,因此该参数很可能始终需要设置。

身份验证设置

要向 SageMaker 服务进行身份验证,我们可以在 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 参数放入 Authorization 标头,例如 {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.sagemaker.chat 过程接收助手和用户之间聊天交流的映射列表(带有可选的系统上下文),并将返回流程中的下一条消息。可以将附加配置传递给 API,默认端点名称为 Endpoint-Distilbart-xsum-1-1-1

apoc.ml.sagemaker.chat
CALL apoc.ml.sagemaker.chat([{role: "admin", content: "Test answer"}],
    {endpointName: 'Endpoint-Distilbart-xsum-1-1-1', region: 'us-east-1'}
)
表 2. 结果

{ "summary_text": " The ABritainThe,A" }

文本补全 API (Text Completion API)

apoc.ml.sagemaker.completion 过程可以继续/补全给定的文本。可以将附加配置传递给 API,默认端点名称为 Endpoint-GPT-2-1

apoc.ml.sagemaker.completion
CALL apoc.ml.sagemaker.completion('Test answer API',
    {endpointName: 'Endpoint-GPT-2-1-0', headers: {`Content-Type`: "application/x-text"}, region: "eu-central-1"}
)
表 3. 结果

{ "generated_text": "Test answer API

此问题的前一个答案是

<summary> - 这实际上是对此问题的回答,并描述了它所使用的“语言”。请先用您的语言进行测试," }

Embedding API

apoc.ml.sagemaker.embedding 过程可以接收文本字符串列表,并将为每个字符串返回一行,其中嵌入数据作为 768 元素的向量。可以将附加配置传递给 API,默认端点名称为 Endpoint-Jina-Embeddings-v2-Base-en-1

生成嵌入调用
CALL apoc.ml.sagemaker.embedding(['Some Text'], {region: 'eu-central-1'})
表 4. 生成嵌入响应
index 文本 (text) embedding

0

"一些文本"

[-0.0065358975, -7.9563365E-4, …​. -0.010693862, -0.005087272]

自定义 AWS API 调用

通过 apoc.ml.sagemaker.custom,我们可以通过选择 HTTP 方法、端点、区域和附加标头来创建可自定义的 SageMaker API 请求。这在以下情况下很有用:调用端点(如果响应与以前的过程不兼容),以及使用任何其他 SageMaker API。

例如,我们可以执行 POST 请求来调用 ListEndpoints API,我们可以执行:

CALL apoc.ml.sagemaker.custom({SortBy: "Name"},
{
    endpoint: "https://api.sagemaker.us-east-1.amazonaws.com/",
    headers: {`X-Amz-Target`: "SageMaker.ListEndpoints", `Content-Type`: "application/x-amz-json-1.1"},
    method: "POST"
})
© . This site is unofficial and not affiliated with Neo4j, Inc.