Skip to content

Commit 8d5e0c0

Browse files
committed
update 0.1.0
Adjust the API interface parameters of the SDK. Supports history context.
1 parent eaf6cdc commit 8d5e0c0

File tree

10 files changed

+286
-115
lines changed

10 files changed

+286
-115
lines changed

README.md

+69-36
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ The development of this JAVA-based AI SDK is primarily aimed at addressing the l
66

77
The project mainly involves encapsulating the REST API provided by model manufacturers, making it convenient for JAVA developers to use. It also introduces only a minimal number of dependency packages to avoid conflicts.
88

9+
The SDK currently supports historical context. Simply pass in the corresponding historical data when calling the interface. For specific examples, please refer to the multi-turn dialogue in the example below.
10+
911
## Importing
1012

1113
### Maven
@@ -46,73 +48,104 @@ public GeminiClient(String modelName, GeminiAccount geminiAccount)
4648
Chat
4749

4850
```java
49-
@Test
50-
public void chatTest() throws IOException {
51+
@Test
52+
public void chatTest() throws IOException {
5153

52-
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
54+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
5355

54-
GeminiGenerationConfig generationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
56+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
5557

56-
GeminiClient client = new GeminiClient(account);
57-
GeminiTextResponse chatResponse1 = client.chat("Do you know something about Yao Ming", generationConfig);
58-
System.out.println(chatResponse1);
59-
}
58+
GeminiClient client = new GeminiClient(account);
59+
GeminiTextResponse chatResponse = client.chat("who are you", geminiGenerationConfig);
60+
System.out.println(chatResponse);
61+
}
6062

6163
```
6264

6365
Multi-turn Chat
6466

6567
```java
66-
@Test
67-
public void chatTest() throws IOException {
68+
@Test
69+
public void multiTurnChatTest() throws IOException {
6870

69-
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
71+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
7072

71-
GeminiGenerationConfig generationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
73+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
7274

73-
GeminiClient client = new GeminiClient(account);
74-
GeminiTextResponse chatResponse1 = client.chat("Do you know something about Yao Ming", generationConfig);
75-
System.out.println(chatResponse1);
75+
GeminiClient client = new GeminiClient(account);
76+
GeminiTextResponse chatResponse1 = client.chat("Do you know something about Yao Ming", geminiGenerationConfig);
77+
System.out.println(chatResponse1);
7678

77-
GeminiTextResponse chatResponse2 = client.chat("who is his wife");
78-
System.out.println(chatResponse2);
79+
// round one history data
80+
List<ChatHistory> history1 = chatResponse1.getHistory();
7981

80-
GeminiTextResponse chatResponse3 = client.chat("who is his daughter", generationConfig);
81-
System.out.println(chatResponse3);
82-
}
82+
GeminiTextResponse chatResponse2 = client.chat("who is his wife", geminiGenerationConfig, history1);
83+
System.out.println(chatResponse2);
84+
85+
// round two history data
86+
List<ChatHistory> history2 = chatResponse2.getHistory();
87+
88+
GeminiTextResponse chatResponse3 = client.chat("who is his daughter", geminiGenerationConfig, history2);
89+
System.out.println(chatResponse3);
90+
}
8391
```
8492

8593
Multimodal (with context)
8694

8795
```java
8896
@Test
89-
public void chatMultiModalTest() throws IOException {
97+
public void chatMultiModalTest() throws IOException {
9098

91-
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
99+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
92100

93-
GeminiGenerationConfig generationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
101+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
94102

95-
GeminiClient client = new GeminiClient(GeminiModelEnum.GEMINI_PRO.getName(), account);
103+
GeminiClient client = new GeminiClient(GeminiModelEnum.GEMINI_PRO.getName(), account);
96104

97-
// local image
98-
// Path img = Paths.get("/path/abc.jpg");
99-
// String base64Image = Base64.getEncoder().encodeToString(Files.readAllBytes(img));
105+
// image url
106+
String imageUrl = "https://pic.qqtn.com/uploadfiles/2009-6/2009614181816.jpg";
107+
// convert the image to base64
108+
String base64 = Base64Util.imageUrlToBase64(imageUrl);
100109

101-
// image url
102-
String imageUrl = "https://storage.googleapis.com/generativeai-downloads/images/scones.jpg";
110+
MultiPartInlineData inlineData = MultiPartInlineData.builder().mimeType("image/jpeg").data(base64).build();
103111

104-
String base64 = Base64Util.imageUrlToBase64(imageUrl);
112+
String message = "What is this picture";
105113

106-
MultiPartInlineData inlineData = MultiPartInlineData.builder().mimeType("image/jpeg").data(base64).build();
114+
GeminiTextResponse chatResponse1 = client.chat(message, inlineData, geminiGenerationConfig, null);
115+
System.out.println(chatResponse1);
107116

108-
String message = "What is this picture";
117+
// history data
118+
List<ChatHistory> history = chatResponse1.getHistory();
109119

110-
GeminiTextResponse chatResponse1 = client.chat(message, inlineData, generationConfig);
111-
System.out.println(chatResponse1);
120+
GeminiTextResponse chatResponse2 = client.chat("How many dog are there", geminiGenerationConfig, history);
121+
System.out.println(chatResponse2);
122+
}
123+
```
112124

113-
GeminiTextResponse chatResponse2 = client.chat("How many flowers are there", generationConfig);
114-
System.out.println(chatResponse2);
125+
Stream Chat
126+
127+
```java
128+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
129+
130+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
131+
132+
GeminiClient client = new GeminiClient(account);
133+
134+
// image url
135+
String imageUrl = "https://pic.qqtn.com/uploadfiles/2009-6/2009614181816.jpg";
136+
// convert the image to base64
137+
String base64 = Base64Util.imageUrlToBase64(imageUrl);
138+
139+
MultiPartInlineData inlineData = MultiPartInlineData.builder().mimeType("image/jpeg").data(base64).build();
140+
141+
client.stream("What is this picture", inlineData, geminiGenerationConfig, null, new GeminiStreamResponseListener() {
142+
143+
@Override
144+
public void accept(Content content) {
145+
System.out.println("accept3:" + content);
115146
}
147+
148+
});
116149
```
117150

118151
In the current full conversation methods, the function of automatically implementing historical records has been realized. The caller can obtain the `history` through the returned `GeminiTextResponse` object.

README_CN.md

+69-37
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
项目主要是对模型厂商的 REST API 进行封装,方便 JAVA 开发者调用,并仅引入了少量的依赖包,避免依赖包冲突。
88

9+
目前 SDK 支持历史上下文,调用接口时传入对应的历史数据即可,具体可查看下面例子中的多轮对话。
10+
911
## 导入
1012

1113
### Maven
@@ -46,73 +48,103 @@ public GeminiClient(String modelName, GeminiAccount geminiAccount)
4648
普通对话
4749

4850
```java
49-
@Test
50-
public void chatTest() throws IOException {
51-
52-
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
51+
@Test
52+
public void chatTest() throws IOException {
5353

54-
GeminiGenerationConfig generationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
54+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
5555

56-
GeminiClient client = new GeminiClient(account);
57-
GeminiTextResponse chatResponse1 = client.chat("Do you know something about Yao Ming", generationConfig);
58-
System.out.println(chatResponse1);
59-
}
56+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
6057

58+
GeminiClient client = new GeminiClient(account);
59+
GeminiTextResponse chatResponse = client.chat("who are you", geminiGenerationConfig);
60+
System.out.println(chatResponse);
61+
}
6162
```
6263

6364
多轮对话
6465

6566
```java
66-
@Test
67-
public void chatTest() throws IOException {
67+
@Test
68+
public void multiTurnChatTest() throws IOException {
6869

69-
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
70+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
7071

71-
GeminiGenerationConfig generationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
72+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
7273

73-
GeminiClient client = new GeminiClient(account);
74-
GeminiTextResponse chatResponse1 = client.chat("Do you know something about Yao Ming", geminiGenerationConfig);
75-
System.out.println(chatResponse1);
74+
GeminiClient client = new GeminiClient(account);
75+
GeminiTextResponse chatResponse1 = client.chat("Do you know something about Yao Ming", geminiGenerationConfig);
76+
System.out.println(chatResponse1);
7677

77-
GeminiTextResponse chatResponse2 = client.chat("who is his wife");
78-
System.out.println(chatResponse2);
78+
// round one history data
79+
List<ChatHistory> history1 = chatResponse1.getHistory();
7980

80-
GeminiTextResponse chatResponse3 = client.chat("who is his daughter", generationConfig);
81-
System.out.println(chatResponse3);
82-
}
81+
GeminiTextResponse chatResponse2 = client.chat("who is his wife", geminiGenerationConfig, history1);
82+
System.out.println(chatResponse2);
83+
84+
// round two history data
85+
List<ChatHistory> history2 = chatResponse2.getHistory();
86+
87+
GeminiTextResponse chatResponse3 = client.chat("who is his daughter", geminiGenerationConfig, history2);
88+
System.out.println(chatResponse3);
89+
}
8390
```
8491

8592
多模态(可带上下文)
8693

8794
```java
8895
@Test
89-
public void chatMultiModalTest() throws IOException {
96+
public void chatMultiModalTest() throws IOException {
97+
98+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
9099

91-
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
100+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
92101

93-
GeminiGenerationConfig generationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
102+
GeminiClient client = new GeminiClient(GeminiModelEnum.GEMINI_PRO.getName(), account);
94103

95-
GeminiClient client = new GeminiClient(GeminiModelEnum.GEMINI_PRO.getName(), account);
104+
// image url
105+
String imageUrl = "https://pic.qqtn.com/uploadfiles/2009-6/2009614181816.jpg";
106+
// Convert the image to base64
107+
String base64 = Base64Util.imageUrlToBase64(imageUrl);
96108

97-
// local image
98-
// Path img = Paths.get("/path/abc.jpg");
99-
// String base64Image = Base64.getEncoder().encodeToString(Files.readAllBytes(img));
109+
MultiPartInlineData inlineData = MultiPartInlineData.builder().mimeType("image/jpeg").data(base64).build();
100110

101-
// image url
102-
String imageUrl = "https://storage.googleapis.com/generativeai-downloads/images/scones.jpg";
111+
String message = "What is this picture";
103112

104-
String base64 = Base64Util.imageUrlToBase64(imageUrl);
113+
GeminiTextResponse chatResponse1 = client.chat(message, inlineData, geminiGenerationConfig, null);
114+
System.out.println(chatResponse1);
105115

106-
MultiPartInlineData inlineData = MultiPartInlineData.builder().mimeType("image/jpeg").data(base64).build();
116+
// history data
117+
List<ChatHistory> history = chatResponse1.getHistory();
107118

108-
String message = "What is this picture";
119+
GeminiTextResponse chatResponse2 = client.chat("How many dog are there", geminiGenerationConfig, history);
120+
System.out.println(chatResponse2);
121+
}
122+
```
123+
124+
流式对话
125+
126+
```java
127+
GeminiAccount account = GeminiAccount.builder().apiKey(apiKey).baseUrl(baseUrl).build();
109128

110-
GeminiTextResponse chatResponse1 = client.chat(message, inlineData, generationConfig);
111-
System.out.println(chatResponse1);
129+
GeminiGenerationConfig geminiGenerationConfig = GeminiGenerationConfig.builder().temperature(0.3).build();
112130

113-
GeminiTextResponse chatResponse2 = client.chat("How many flowers are there", geminiGenerationConfig);
114-
System.out.println(chatResponse2);
131+
GeminiClient client = new GeminiClient(account);
132+
133+
// image url
134+
String imageUrl = "https://pic.qqtn.com/uploadfiles/2009-6/2009614181816.jpg";
135+
// Convert the image to base64
136+
String base64 = Base64Util.imageUrlToBase64(imageUrl);
137+
138+
MultiPartInlineData inlineData = MultiPartInlineData.builder().mimeType("image/jpeg").data(base64).build();
139+
140+
client.stream("What is this picture", inlineData, geminiGenerationConfig, null, new GeminiStreamResponseListener() {
141+
142+
@Override
143+
public void accept(Content content) {
144+
System.out.println("accept3:" + content);
115145
}
146+
147+
});
116148
```
117149

118150
目前的全部对话中,已自动实现了历史记录的功能,调用者可通过返回的 `GeminiTextResponse` 对象中获取 `history`

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.liurb.ai.sdk</groupId>
88
<artifactId>java-ai-sdk</artifactId>
9-
<version>0.0.3</version>
9+
<version>0.1.0</version>
1010

1111
<name>java-ai-sdk</name>
1212
<description>

0 commit comments

Comments
 (0)