Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepSeek4j ❤ ❤ ❤

A Java client for the DeepSeek API.

English | 中文

Requirements

  • Java 17+

Quick Start

1. Add the Maven dependency

Maven Central Version

<dependency>
    <groupId>cn.lishiyuan</groupId>
    <artifactId>deepseek4j</artifactId>
    <version>1.0.4</version>
</dependency>

2. Use it

public static void main(String[] args) {
    Client client = new DefaultClient(accessKey);

    ChatRequestMessage systemMessage = new ChatRequestMessage();
    systemMessage.setRole(RoleEnums.SYSTEM.code);
    systemMessage.setContent("You are a helpful assistant");

    ChatRequestMessage userMessage = new ChatRequestMessage();
    userMessage.setRole(RoleEnums.USER.code);
    userMessage.setContent("Hello");

    List<ChatRequestMessage> messageList = List.of(systemMessage, userMessage);
    ChatRequest chatRequest = ChatRequest.create(messageList, ModelEnums.DEEPSEEK_V4_FLASH.code);
    ChatResponse chatResponse = client.post(chatRequest).block();
    System.out.println(chatResponse.getChoices().get(0).getMessage().getContent());
}

API

1. List models

public static void main(String[] args) {
    ListModelResponse listModelResponse = client.get(EmptyRequest.createListModelRequest()).block();
    String name = listModelResponse.getData().stream()
            .map(ListModelResponse.Model::getId)
            .collect(Collectors.joining(","));
    System.out.println(name);
}

2. Query balance

public static void main(String[] args) {
    BalanceInfoResponse balanceInfo = client.get(EmptyRequest.createBalanceRequest()).block();
    Assertions.assertNotNull(balanceInfo, "balanceInfo must not be null");
}

3. Chat

public static void main(String[] args) {
    Client client = new DefaultClient(accessKey);

    ChatRequestMessage systemMessage = new ChatRequestMessage();
    systemMessage.setRole(RoleEnums.SYSTEM.code);
    systemMessage.setContent("You are a helpful assistant");

    ChatRequestMessage userMessage = new ChatRequestMessage();
    userMessage.setRole(RoleEnums.USER.code);
    userMessage.setContent("Hello");

    List<ChatRequestMessage> messageList = List.of(systemMessage, userMessage);
    ChatRequest chatRequest = ChatRequest.create(messageList, ModelEnums.DEEPSEEK_V4_FLASH.code);
    ChatResponse chatResponse = client.post(chatRequest).block();
    System.out.println(chatResponse.getChoices().get(0).getMessage().getContent());
}

4. Stream chat

public static void main(String[] args) {
    ChatRequestMessage systemMessage = new ChatRequestMessage();
    systemMessage.setRole(RoleEnums.SYSTEM.code);
    systemMessage.setContent("You are a helpful assistant");

    ChatRequestMessage userMessage = new ChatRequestMessage();
    userMessage.setRole(RoleEnums.USER.code);
    userMessage.setContent("Hello");

    List<ChatRequestMessage> messageList = List.of(systemMessage, userMessage);
    StreamChatRequest chatRequest = StreamChatRequest.create(messageList, ModelEnums.DEEPSEEK_V4_FLASH.code);

    client.stream(chatRequest)
            .doOnNext(chatResponse -> {
                // handle each incremental chunk
            })
            .blockLast();
}

5. FIM (Fill in the Middle)

public static void main(String[] args) {
    FimRequest fimRequest = FimRequest.create("It's so windy and cold today", ModelEnums.DEEPSEEK_V4_FLASH.code);
    FimResponse fimResponse = client.post(fimRequest).block();
    Assertions.assertNotNull(fimResponse, "fimResponse must not be null");
}

6. Stream FIM

public static void main(String[] args) {
    StreamFimRequest fimRequest = StreamFimRequest.create("It's so windy and cold today", ModelEnums.DEEPSEEK_V4_FLASH.code);
    client.stream(fimRequest)
            .doOnNext(fimResponse -> {
                // handle each incremental chunk
            })
            .blockLast();
}

7. Responses (stateless — resend the full input for multi-turn)

public static void main(String[] args) {
    ResponseRequest request = ResponseRequest.create("Hello", ModelEnums.DEEPSEEK_V4_FLASH.code);
    ResponseResult result = client.post(request).block();
    // extract the text of the first message output item
    String text = result.getOutput().stream()
            .filter(o -> "message".equals(o.getType()))
            .flatMap(o -> o.getContent().stream())
            .map(ResponseResult.ContentBlock::getText)
            .collect(Collectors.joining());
    System.out.println(text);
}

8. Stream responses (named SSE events, no data: [DONE])

public static void main(String[] args) {
    ResponseStreamRequest request = ResponseStreamRequest.create("Hello", ModelEnums.DEEPSEEK_V4_FLASH.code);
    client.streamResponse(request)
            .doOnNext(event -> {
                // handle deltas by event type
                if ("response.output_text.delta".equals(event.getType())) {
                    System.out.print(event.getDelta());
                }
            })
            .blockLast();
}

License

This project is licensed under the Apache License, Version 2.0.

About

Deepseek4j是一个deepseek的api客户端 ❤ ❤ ❤

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages