什么是GLM:
GLM 全名 General Language Model ,是一款基于自回归填空的预训练语言模型。ChatGLM 系列模型,支持相对复杂的自然语言指令,并且能够解决困难的推理类问题。该模型配备了易于使用的 API 接口,允许开发者轻松将其融入各类应用,广泛应用于智能客服、虚拟主播、聊天机器人等诸多领域。
SDK 安装说明
安装 Java SDK
Java SDK 地址: https://github.com/zhipuai/zhipuai-sdk-java-v4
如下方式,将SDK的依赖项加入到Maven项目:
<dependency>
<groupId>cn.bigmodel.openapi</groupId>
<artifactId>oapi-java-sdk</artifactId>
<version>release-V4-2.0.2</version>
</dependency>
Java SDK 创建 Client
使用 Java SDK 您替换自己的 ApiSecretKey 即可,示例如下:
ClientV4 client = new ClientV4.Builder("{Your ApiSecretKey}").build();
传输层默认使用 okhttpclient,如果需要修改为其他 http client,可以如下指定(注意 apache不支持sse调用):
ClientV4 client = new ClientV4.Builder("{Your ApiSecretKey}")
.httpTransport(new ApacheHttpClientTransport())
.build();
SDK 代码示例
同步调用
调用后即可一次性获得最终结果,Java 代码如下:
/**
* 同步调用
*/
private static void testInvoke() {
List<ChatMessage> messages = new ArrayList<>();
ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan");
messages.add(chatMessage);
String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
.model(Constants.ModelChatGLM4)
.stream(Boolean.FALSE)
.invokeMethod(Constants.invokeMethod)
.messages(messages)
.requestId(requestId)
.build();
ModelApiResponse invokeModelApiResp = client.invokeModelApi(chatCompletionRequest);
try {
System.out.println("model output:" + mapper.writeValueAsString(invokeModelApiResp));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
异步调用
调用后会立即返回一个任务 ID,然后用任务ID查询调用结果(根据模型和参数的不同,通常需要等待10-30秒才能得到最终结果)
/**
* 异步调用
*/
private static String testAsyncInvoke() {
List<ChatMessage> messages = new ArrayList<>();
ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan");
messages.add(chatMessage);
String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
.model(Constants.ModelChatGLM4)
.stream(Boolean.FALSE)
.invokeMethod(Constants.invokeMethodAsync)
.messages(messages)
.requestId(requestId)
.build();
ModelApiResponse invokeModelApiResp = client.invok