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 作为结果。
配置
| 名称 (name) | type | 默认 | description(描述) |
|---|---|---|---|
keyId |
字符串 |
null |
AWS 密钥 ID。我们也可以通过 |
secretKey |
字符串 |
null |
AWS 秘密访问密钥。我们也可以通过 |
region |
字符串 |
us-east-1 |
AWS 区域 |
endpoint |
字符串 |
见下文 |
AWS 端点。 |
method |
字符串 |
|
HTTP 方法 |
headers |
Map<String, Object> |
|
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.chat、sagemaker.completion 和 sagemaker.embedding 过程分别具有默认值 "Endpoint-Distilbart-xsum-1-1-1"、"Endpoint-GPT-2-1" 和 "Endpoint-Jina-Embeddings-v2-Base-en-1"。
| 由于 SageMaker 允许您选择要使用的端点,因此该参数很可能始终需要设置。 |
身份验证设置
要向 SageMaker 服务进行身份验证,我们可以在 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/json 和 Accept: */* 标头条目始终会传递给 http 请求,除非通过 header 配置覆盖。
在以下示例中,我们假设通过 apoc.conf 设置了 Key ID 和 Secret Access Key。
用法示例
聊天补全 API (Chat Completion API)
apoc.ml.sagemaker.chat 过程接收助手和用户之间聊天交流的映射列表(带有可选的系统上下文),并将返回流程中的下一条消息。可以将附加配置传递给 API,默认端点名称为 Endpoint-Distilbart-xsum-1-1-1。
CALL apoc.ml.sagemaker.chat([{role: "admin", content: "Test answer"}],
{endpointName: 'Endpoint-Distilbart-xsum-1-1-1', region: 'us-east-1'}
)
| 值 |
|---|
{ "summary_text": " The ABritainThe,A" } |
文本补全 API (Text Completion API)
apoc.ml.sagemaker.completion 过程可以继续/补全给定的文本。可以将附加配置传递给 API,默认端点名称为 Endpoint-GPT-2-1。
CALL apoc.ml.sagemaker.completion('Test answer API',
{endpointName: 'Endpoint-GPT-2-1-0', headers: {`Content-Type`: "application/x-text"}, region: "eu-central-1"}
)
| 值 |
|---|
{ "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'})
| 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"
})