Skip to content

Commit 9bbb77e

Browse files
committed
[Google] [Gemini] 添加连续对话示例
1 parent 13ad821 commit 9bbb77e

File tree

5 files changed

+90
-2
lines changed

5 files changed

+90
-2
lines changed

src/main/java/org/devlive/sdk/openai/interceptor/GooglePaLMInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import org.apache.commons.lang3.StringUtils;
88
import org.devlive.sdk.common.exception.ParamException;
99
import org.devlive.sdk.common.interceptor.DefaultInterceptor;
10+
import org.devlive.sdk.common.utils.HttpUrlUtils;
1011
import org.devlive.sdk.openai.model.CompletionModel;
1112
import org.devlive.sdk.openai.utils.EnumsUtils;
12-
import org.devlive.sdk.common.utils.HttpUrlUtils;
1313

1414
import java.util.List;
1515

src/main/java/org/devlive/sdk/platform/google/GoogleClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.devlive.sdk.platform.google.interceptor.GoogleInterceptor;
1818
import org.devlive.sdk.platform.google.model.GenerativeModel;
1919
import org.devlive.sdk.platform.google.model.VersionModel;
20+
import org.devlive.sdk.platform.google.response.ChatResponse;
2021
import retrofit2.Retrofit;
2122
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
2223
import retrofit2.converter.jackson.JacksonConverterFactory;
@@ -85,7 +86,7 @@ private GoogleClient(GoogleClientBuilder builder)
8586
.create(GoogleApi.class);
8687
}
8788

88-
public Object createChatCompletions(ChatEntity configure)
89+
public ChatResponse createChatCompletions(ChatEntity configure)
8990
{
9091
String url = ProviderUtils.getUrl(provider, UrlModel.FETCH_CHAT_COMPLETIONS);
9192
return this.api.fetchChatCompletions(url, configure)

src/main/java/org/devlive/sdk/platform/google/entity/ObjectEntity.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import lombok.Data;
88
import lombok.NoArgsConstructor;
99
import lombok.ToString;
10+
import org.apache.commons.lang3.ObjectUtils;
1011
import org.devlive.sdk.common.exception.ParamException;
12+
import org.devlive.sdk.platform.google.model.RoleModel;
1113

1214
import java.util.List;
1315

@@ -19,16 +21,30 @@
1921
@JsonIgnoreProperties(ignoreUnknown = true)
2022
public class ObjectEntity
2123
{
24+
@JsonProperty(value = "role")
25+
private String role;
26+
2227
@JsonProperty(value = "parts")
2328
private List<PartEntity> parts;
2429

2530
private ObjectEntity(ObjectEntityBuilder builder)
2631
{
32+
if (ObjectUtils.isEmpty(builder.role)) {
33+
builder.role(RoleModel.USER);
34+
}
35+
this.role = builder.role;
36+
2737
this.parts = builder.parts;
2838
}
2939

3040
public static class ObjectEntityBuilder
3141
{
42+
public ObjectEntityBuilder role(RoleModel model)
43+
{
44+
this.role = model.getValue();
45+
return this;
46+
}
47+
3248
public ObjectEntityBuilder parts(List<PartEntity> parts)
3349
{
3450
if (parts == null || parts.isEmpty()) {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.devlive.sdk.platform.google.model;
2+
3+
import lombok.Getter;
4+
5+
public enum RoleModel
6+
{
7+
USER("user"),
8+
MODEL("model");
9+
10+
@Getter
11+
private final String value;
12+
13+
RoleModel(String value)
14+
{
15+
this.value = value;
16+
}
17+
}

src/test/java/org/devlive/sdk/platform/google/GoogleClientTest.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package org.devlive.sdk.platform.google;
22

33
import com.google.common.collect.Lists;
4+
import lombok.extern.slf4j.Slf4j;
45
import org.devlive.sdk.ResourceUtils;
56
import org.devlive.sdk.platform.google.entity.ChatEntity;
67
import org.devlive.sdk.platform.google.entity.ObjectEntity;
78
import org.devlive.sdk.platform.google.entity.PartEntity;
9+
import org.devlive.sdk.platform.google.model.RoleModel;
10+
import org.devlive.sdk.platform.google.response.ChatResponse;
811
import org.junit.Assert;
912
import org.junit.Before;
1013
import org.junit.Test;
1114

15+
import java.util.List;
16+
17+
@Slf4j
1218
public class GoogleClientTest
1319
{
1420
private GoogleClient client;
@@ -44,4 +50,52 @@ public void testCreateChat()
4450

4551
Assert.assertNotNull(client.createChatCompletions(chat));
4652
}
53+
54+
@Test
55+
public void testContinuousChat()
56+
{
57+
List<ObjectEntity> contents = Lists.newArrayList();
58+
PartEntity part = PartEntity.builder()
59+
.text("你好,我叫小明")
60+
.build();
61+
ObjectEntity object = ObjectEntity.builder()
62+
.parts(Lists.newArrayList(part))
63+
.build();
64+
contents.add(object);
65+
ChatEntity chat = ChatEntity.builder()
66+
.contents(contents)
67+
.build();
68+
ChatResponse response = client.createChatCompletions(chat);
69+
print(response, contents);
70+
71+
ObjectEntity newObject = ObjectEntity.builder()
72+
.parts(Lists.newArrayList(PartEntity.builder()
73+
.text("我刚刚说了什么")
74+
.build()))
75+
.build();
76+
contents.add(newObject);
77+
ChatEntity newChat = ChatEntity.builder()
78+
.contents(contents)
79+
.build();
80+
ChatResponse newResponse = client.createChatCompletions(newChat);
81+
print(response, contents);
82+
Assert.assertNotNull(newResponse.getCandidates());
83+
}
84+
85+
private void print(ChatResponse response, List<ObjectEntity> contents)
86+
{
87+
response.getCandidates()
88+
.forEach(item -> item.getContent()
89+
.getParts()
90+
.forEach(value -> {
91+
log.info(value.getText());
92+
93+
contents.add(ObjectEntity.builder()
94+
.role(RoleModel.MODEL)
95+
.parts(Lists.newArrayList(PartEntity.builder()
96+
.text(value.getText())
97+
.build()))
98+
.build());
99+
}));
100+
}
47101
}

0 commit comments

Comments
 (0)