Skip to content

Commit be89649

Browse files
author
BitsAdmin
committed
Merge branch 'feat/support_reasoning' into 'integration_2025-02-06_702322982146'
feat: [development task] ark-runtime-manual-Java (999431) See merge request iaasng/volcengine-java-sdk!374
2 parents 1f4629d + df3fad3 commit be89649

File tree

5 files changed

+157
-3
lines changed

5 files changed

+157
-3
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.volcengine.ark.runtime.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
@JsonIgnoreProperties(ignoreUnknown = true)
7+
public class CompletionTokensDetails {
8+
@JsonProperty("reasoning_tokens")
9+
private Integer reasoningTokens;
10+
11+
public Integer getReasoningTokens() {
12+
return reasoningTokens;
13+
}
14+
15+
public void setReasoningTokens(Integer reasoningTokens) {
16+
this.reasoningTokens = reasoningTokens;
17+
}
18+
19+
@Override
20+
public String toString() {
21+
return "CompletionTokensDetails{" +
22+
"reasoningTokens=" + reasoningTokens +
23+
'}';
24+
}
25+
}

volcengine-java-sdk-ark-runtime/src/main/java/com/volcengine/ark/runtime/model/Usage.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,21 @@ public class Usage {
2626
@JsonProperty("prompt_tokens_details")
2727
private PromptTokensDetails promptTokensDetails;
2828

29+
@JsonProperty("completion_tokens_details")
30+
private CompletionTokensDetails completionTokensDetails;
31+
2932
public Usage(long promptTokens, long completionTokens, long totalTokens) {
3033
this.promptTokens = promptTokens;
3134
this.completionTokens = completionTokens;
3235
this.totalTokens = totalTokens;
3336
}
3437

35-
public Usage(long promptTokens, long completionTokens, long totalTokens, PromptTokensDetails promptTokensDetails) {
38+
public Usage(long promptTokens, long completionTokens, long totalTokens, PromptTokensDetails promptTokensDetails, CompletionTokensDetails completionTokensDetails) {
3639
this.promptTokens = promptTokens;
3740
this.completionTokens = completionTokens;
3841
this.totalTokens = totalTokens;
3942
this.promptTokensDetails = promptTokensDetails;
43+
this.completionTokensDetails = completionTokensDetails;
4044
}
4145

4246
public Usage() {}
@@ -73,13 +77,21 @@ public void setPromptTokensDetails(PromptTokensDetails promptTokensDetails) {
7377
this.promptTokensDetails = promptTokensDetails;
7478
}
7579

80+
public CompletionTokensDetails getCompletionTokensDetails() {
81+
return completionTokensDetails;
82+
}
83+
public void setCompletionTokensDetails(CompletionTokensDetails completionTokensDetails) {
84+
this.completionTokensDetails = completionTokensDetails;
85+
}
86+
7687
@Override
7788
public String toString() {
7889
return "Usage{" +
7990
"promptTokens=" + promptTokens +
8091
", completionTokens=" + completionTokens +
8192
", totalTokens=" + totalTokens +
8293
", promptTokensDetails=" + promptTokensDetails +
94+
", completionTokensDetails=" + completionTokensDetails +
8395
'}';
8496
}
8597
}

volcengine-java-sdk-ark-runtime/src/main/java/com/volcengine/ark/runtime/model/completion/chat/ChatMessage.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.volcengine.ark.runtime.model.completion.chat;
22

3+
import com.fasterxml.jackson.annotation.JsonCreator;
34
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
45
import com.fasterxml.jackson.annotation.JsonProperty;
56
import com.volcengine.ark.runtime.utils.Converter;
@@ -13,6 +14,9 @@ public class ChatMessage {
1314

1415
Object content;
1516

17+
@JsonProperty("reasoning_content")
18+
String reasoningContent;
19+
1620
private String name;
1721
@JsonProperty("function_call")
1822
ChatFunctionCall functionCall;
@@ -47,6 +51,7 @@ public void setContent(Object content) {
4751
this.content = content;
4852
}
4953

54+
5055
public String getName() {
5156
return name;
5257
}
@@ -79,6 +84,14 @@ public void setToolCallId(String toolCallId) {
7984
this.toolCallId = toolCallId;
8085
}
8186

87+
public String getReasoningContent() {
88+
return reasoningContent;
89+
}
90+
91+
public void setReasoningContent(String reasoningContent) {
92+
this.reasoningContent = reasoningContent;
93+
}
94+
8295
public static Builder builder() {
8396
return new Builder();
8497
}
@@ -87,7 +100,8 @@ public static Builder builder() {
87100
public String toString() {
88101
return "ChatMessage{" +
89102
"role=" + role +
90-
", content='" + content + '\'' +
103+
", content=" + content +
104+
", reasoningContent='" + reasoningContent + '\'' +
91105
", name='" + name + '\'' +
92106
", functionCall=" + functionCall +
93107
", toolCalls=" + toolCalls +
@@ -101,6 +115,9 @@ public static class Builder {
101115

102116
private Object content;
103117

118+
@JsonProperty("reasoning_content")
119+
private String reasoningContent;
120+
104121
private String name;
105122
@JsonProperty("function_call")
106123
private ChatFunctionCall functionCall;
@@ -146,10 +163,16 @@ public ChatMessage.Builder toolCallId(String toolCallId) {
146163
return this;
147164
}
148165

166+
public ChatMessage.Builder reasoningContent(String reasoningContent) {
167+
this.reasoningContent = reasoningContent;
168+
return this;
169+
}
170+
149171
public ChatMessage build() {
150172
ChatMessage chatMessage = new ChatMessage();
151173
chatMessage.setRole(role);
152174
chatMessage.setContent(content);
175+
chatMessage.setReasoningContent(reasoningContent);
153176
chatMessage.setName(name);
154177
chatMessage.setFunctionCall(functionCall);
155178
chatMessage.setToolCalls(toolCalls);
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package com.volcengine.ark.runtime;
2+
3+
4+
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest;
5+
import com.volcengine.ark.runtime.model.completion.chat.ChatMessage;
6+
import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole;
7+
import com.volcengine.ark.runtime.service.ArkService;
8+
import okhttp3.ConnectionPool;
9+
import okhttp3.Dispatcher;
10+
import org.apache.commons.lang.StringUtils;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
import java.util.concurrent.TimeUnit;
15+
16+
/*
17+
# pom.xml
18+
<dependency>
19+
<groupId>com.volcengine</groupId>
20+
<artifactId>volcengine-java-sdk-ark-runtime</artifactId>
21+
<version>LATEST</version>
22+
</dependency>
23+
*/
24+
25+
public class ChatCompletionsReasoningExample {
26+
27+
/**
28+
* Authentication
29+
* 1.If you authorize your endpoint using an API key, you can set your api key to environment variable "ARK_API_KEY"
30+
* String apiKey = System.getenv("ARK_API_KEY");
31+
* ArkService service = new ArkService(apiKey);
32+
* Note: If you use an API key, this API key will not be refreshed.
33+
* To prevent the API from expiring and failing after some time, choose an API key with no expiration date.
34+
* <p>
35+
* 2.If you authorize your endpoint with Volcengine Identity and Access Management(IAM), set your api key to environment variable "VOLC_ACCESSKEY", "VOLC_SECRETKEY"
36+
* String ak = System.getenv("VOLC_ACCESSKEY");
37+
* String sk = System.getenv("VOLC_SECRETKEY");
38+
* ArkService service = new ArkService(ak, sk);
39+
* To get your ak&sk, please refer to this document(https://www.volcengine.com/docs/6291/65568)
40+
* For more information,please check this document(https://www.volcengine.com/docs/82379/1263279)
41+
*/
42+
43+
static String apiKey = System.getenv("ARK_API_KEY");
44+
static ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
45+
static Dispatcher dispatcher = new Dispatcher();
46+
static ArkService service = ArkService.builder().dispatcher(dispatcher).connectionPool(connectionPool).apiKey(apiKey).build();
47+
48+
public static void main(String[] args) {
49+
System.out.println("\n----- standard request -----");
50+
final List<ChatMessage> messages = new ArrayList<>();
51+
final ChatMessage userMessage = ChatMessage.builder().role(ChatMessageRole.USER).content("How many Rs are there in the word 'strawberry'?").build();
52+
messages.add(userMessage);
53+
54+
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
55+
.model("${YOUR_ENDPOINT_ID}")
56+
.messages(messages)
57+
.build();
58+
59+
service.createChatCompletion(chatCompletionRequest).getChoices().forEach(
60+
choice -> {
61+
System.out.println(choice.getMessage().getReasoningContent());
62+
System.out.println(choice.getMessage().getContent());
63+
}
64+
);
65+
66+
System.out.println("\n----- streaming request -----");
67+
final List<ChatMessage> streamMessages = new ArrayList<>();
68+
final ChatMessage streamUserMessage = ChatMessage.builder().role(ChatMessageRole.USER).content("How many Rs are there in the word 'strawberry'?").build();
69+
streamMessages.add(streamUserMessage);
70+
71+
ChatCompletionRequest streamChatCompletionRequest = ChatCompletionRequest.builder()
72+
.model("${YOUR_ENDPOINT_ID}")
73+
.messages(streamMessages)
74+
.build();
75+
76+
service.streamChatCompletion(streamChatCompletionRequest)
77+
.doOnError(Throwable::printStackTrace)
78+
.blockingForEach(
79+
delta -> {
80+
if (!delta.getChoices().isEmpty()) {
81+
if (StringUtils.isNotEmpty(delta.getChoices().get(0).getMessage().getReasoningContent())) {
82+
System.out.print(delta.getChoices().get(0).getMessage().getReasoningContent());
83+
} else {
84+
System.out.print(delta.getChoices().get(0).getMessage().getContent());
85+
}
86+
}
87+
}
88+
);
89+
90+
// shutdown service after all requests is finished
91+
service.shutdownExecutor();
92+
}
93+
94+
}

volcengine-java-sdk-ark-runtime/test/java/com/volcengine/ark/runtime/ChatCompletionsVisionExample.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public static void main(String[] args) {
5353
).build());
5454
multiParts.add(ChatCompletionContentPart.builder().type("image_url").imageUrl(
5555
new ChatCompletionContentPart.ChatCompletionContentPartImageURL(
56-
"https://ark-project.tos-cn-beijing.ivolces.com/images/view.jpeg"
56+
"https://ark-project.tos-cn-beijing.volces.com/images/view.jpeg"
5757
)
5858
).build());
5959
final ChatMessage userMessage = ChatMessage.builder().role(ChatMessageRole.USER)

0 commit comments

Comments
 (0)