Java部署客户端
SKIL部署客户端是用于处理SKIL客户端请求的Java API。与原始JSON请求相比,它直观且易于使用。它提供了构建请求对象的构建器模式。响应有自己的类对象。
添加到项目
客户端在Skymind的Nexus仓库上作为依赖可用。目前,存储库受密码保护,你需要联系我们以获取访问权限。
连接到存储库后,将以下内容添加到pom.xml中:
<dependency>
<groupId>io.skymind</groupId>
<artifactId>skil-daemon-client</artifactId>
<version>LATEST</version>
</dependency>
以下导入将使你所需的大多数实用程序进入作用域:
import io.skymind.auth.rest.LoginResponse;
import io.skymind.deployment.client.SKILDeploymentClient;
import io.skymind.deployment.model.ModelEntity;
import io.skymind.deployment.rest.CreateDeploymentRequest;
import io.skymind.deployment.rest.DeploymentResponse;
import io.skymind.deployment.rest.ImportModelRequest;
import io.skymind.deployment.rest.UpdateModelStateRequest;
import io.skymind.skil.client.errors.ClientException;
import java.text.MessageFormat;
import java.util.List;
配置
为了将Java客户端连接到SKIL,需要将一个路径字符串传递给SKILDeploymentClient
类的构造器,指定运行的SKIL服务器的主机和端口为:
String host = "localhost";
String port = "9008";
String path = MessageFormat.format("http://{0}:{1}", host, port);
SKILDeploymentClient skilDeploymentClient = new SKILDeploymentClient(path);
并非所有请求都需要授权,但要返回预测,需要在请求头中传递授权令牌。
授权令牌是一个JWT令牌,它以加密的形式存储你作为用户的凭据,并让服务器知道你是一个被授权执行请求操作的实体。
使用以下代码登录并从SKIL服务器接收授权令牌:
String userId = "admin";
String password = "admin";
/* Getting authorized in the deployment client */
// The following code will authenticate you as a user in the SKIL Server
LoginResponse loginResponse = skilDeploymentClient.login(userId, password);
你将收到一个带有授权令牌的LoginResponse对象。要读取授权令牌,请执行以下操作:
// To get the token...
print(MessageFormat.format("Authorization Token: {0}", loginResponse.getToken()));
基本用法
以下是管理部署的常用方法:
方法 | 返回类型 | 描述 |
getDeployments() | List<DeploymentResponse> | 列出所有部署 |
getDeployment(deploymentId) | DeploymentResponse | 按ID检索部署 |
addDeployment(new CreateDeploymentRequest(name)) | DeploymentResponse | 创建新部署 |
getModels(deploymentId) | List<ModelEntity> | 列出部署中的模型 |
addModel(deploymentId, ImportModelRequest.builder()) | ModelEntity | 将模型添加到部署 |
deleteModel(deploymentId, modelId) | String | 删除部署中的模型 |
setModelState(deploymentId, modelId, UpdateModelStateRequest.builder()) | ModelEntity | 更新模型的状态 |
更新模型的状态
你还可以使用addModel
、deleteModel
或setModelState
方法进行KNN和数据转换。只需在ImportModelRequest
中指定JSON子类型:
- *转换:
ModelEntity.ModelType.TRANSFORM.name()
- *KNNs:
ModelEntity.ModelType.KNN.name()