# zhipuai-sdk-java
**Repository Path**: mstitop/zhipuai-sdk-java
## Basic Information
- **Project Name**: zhipuai-sdk-java
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-02-20
- **Last Updated**: 2024-02-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 智谱大模型开放接口SDK
智谱[开放平台](http://open.bigmodel.cn/howuse/platformintroduced)大模型接口Java SDK(Big Model API SDK in
Java),让开发者更便捷的调用智谱开放API
## 简介
- **java sdk仍在开发测试阶段,有bug请留言联系**
- 对所有接口进行了类型封装,无需查阅API文档即可完成接入
- 初始化client并调用成员函数,无需关注http调用过程的各种细节,所见即所得
- 默认缓存token
- 支持主流http client实现,已支持apache httpclient、okhttpclient
- 添加同步调用、去除自定义okhttp sse listener实现(meta解析优化)
- 修复同步调用500问题
- 支持returnType参数配置
- 支持ref参数配置
- 流式返回内容打印
- 支持maxToken参数配置
- 修复apiSecretKey分割bug
## 安装
- 运行环境:JDK1.8+
- maven坐标
```
cn.bigmodel.openapi
oapi-java-sdk
1.0.6
```
## 使用
- 调用流程:
1. 使用APISecretKey创建Client
2. 调用Client对应的成员方法
- com.zhipu.oapi.demo有完整的demo示例,请替换自己的ApiKey和ApiSecret进行测试
### 创建Client
```
//ClientV3 client = new ClientV3.Builder("{Your ApiKey}", "Your ApiSecret")
// .httpTransport(new ApacheHttpClientTransport())// 传输层默认使用okhttpclient,如果需要修改位其他http client(如apache),可以在这里指定。注意apache不支持sse调用
// .build();
ClientV3 client = new ClientV3.Builder("{Your ApiSecretKey}")
.httpTransport(new ApacheHttpClientTransport())// 传输层默认使用okhttpclient,如果需要修改位其他http client(如apache),可以在这里指定。注意apache不支持sse调用
.build();
```
### sse调用
```
// 建议直接查看demo包代码,这里更新可能不及时
ModelApiRequest modelApiRequest = new ModelApiRequest();
modelApiRequest.setModelId(Constants.ModelChatGLM6B);
modelApiRequest.setInvokeMethod(Constants.invokeMethodSse);
// 可自定义sse listener
StandardEventSourceListener listener = new StandardEventSourceListener();
listener.setIncremental(false);
modelApiRequest.setSseListener(listener);
modelApiRequest.setIncremental(false);
// 构建prompt
ModelApiRequest.Prompt prompt = new ModelApiRequest.Prompt(ModelConstants.roleUser, "tell me something about C Ronaldo in English");
List prompts = new ArrayList<>();
prompts.add(prompt);
modelApiRequest.setPrompt(prompts);
String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
modelApiRequest.setRequestId(requestId);
ModelApiResponse sseModelApiResp = client.invokeModelApi(sseModelApiRequest);
System.out.println(String.format("call model api finished, method: %s", sseModelApiRequest.getInvokeMethod()));
System.out.println(String.format("invoke api code: %d", sseModelApiResp.getCode()));
System.out.println("model output:");
System.out.println(sseModelApiResp.getData().getChoices().get(0).getContent());
System.out.println("usage:");
String usage = new Gson().toJson(sseModelApiResp.getData().getUsage(), Usage.class);
System.out.println(usage);
System.out.println("task_id: " + sseModelApiResp.getData().getTaskId());
```