1.智谱清言大模型
1.1 注册账号
智谱清言

1.2 查看秘钥
查看ApiKey

2. 编程对接-Java
2.1 maven - pom.xml
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <dependency> <groupId>cn.bigmodel.openapi</groupId> <artifactId>oapi-java-sdk</artifactId> <version>release-V4-2.0.2</version> </dependency>
|
2.2 test方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.zhipu.oapi.ClientV4; import com.zhipu.oapi.service.v4.model.*; import io.reactivex.Flowable; import org.junit.Test;
import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean;
class ApiTest { private static final String requestIdTemplate = "mycompany-%d";
private static final ObjectMapper mapper = defaultObjectMapper();
public static ObjectMapper defaultObjectMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); mapper.addMixIn(ChatFunction.class, ChatFunctionMixIn.class); mapper.addMixIn(ChatCompletionRequest.class, ChatCompletionRequestMixIn.class); mapper.addMixIn(ChatFunctionCall.class, ChatFunctionCallMixIn.class); return mapper; } public static Flowable<ChatMessageAccumulator> mapStreamToAccumulator(Flowable<ModelData> flowable) { return flowable.map(chunk -> { return new ChatMessageAccumulator(chunk.getChoices().get(0).getDelta(), null, chunk.getChoices().get(0), chunk.getUsage(), chunk.getCreated(), chunk.getId()); }); }
@Test public void test_client() { ClientV4 client = new ClientV4.Builder("你的key").build(); List<ChatMessage> messages = new ArrayList<>(); ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "写一个python冒泡排序"); messages.add(chatMessage); String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder() .model(Model.GLM_4_FLASH.code) .stream(Boolean.TRUE) .messages(messages) .requestId(requestId) .build(); ModelApiResponse sseModelApiResp = client.invokeModelApi(chatCompletionRequest); if (sseModelApiResp.isSuccess()) { AtomicBoolean isFirst = new AtomicBoolean(true); ChatMessageAccumulator chatMessageAccumulator = mapStreamToAccumulator(sseModelApiResp.getFlowable()) .doOnNext(accumulator -> { if (accumulator.getDelta() != null && accumulator.getDelta().getContent() != null) { System.out.print(accumulator.getChoice().getDelta().getContent()); } }) .doOnComplete(System.out::println) .lastElement() .blockingGet(); } } }
|
如果对这个大模型的api传参不清楚,Java对接混元大模型API
- 结果
