Java SDK
更新时间:
环境依赖
Java 1.8+
Maven/Gradle
安装
Maven用户
<dependency>
<groupId>com.alibaba.xingchen</groupId>
<artifactId>xingchen-java-client</artifactId>
<version>1.1.1</version>
<scope>compile</scope>
</dependency>
Gradle用户
compile "com.alibaba.xingchen:xingchen-java-client:1.1.1"
群聊
准备
import com.alibaba.xingchen.ApiClient;
import com.alibaba.xingchen.auth.HttpBearerAuth;
public class TestBaseV2 {
public static String baseUrl = "https://nlp.aliyuncs.com";
public ApiClient initClient() {
ApiClient defaultClient = new ApiClient();
defaultClient.setBasePath(baseUrl);
HttpBearerAuth authorization = (HttpBearerAuth) defaultClient.getAuthentication("Authorization");
authorization.setBearerToken("{API-KEY}");
return defaultClient;
}
}
流式调用
import com.alibaba.xingchen.ApiClient;
import com.alibaba.xingchen.ApiException;
import com.alibaba.xingchen.api.GroupChatApiSub;
import com.alibaba.xingchen.enums.Version;
import com.alibaba.xingchen.model.ChatResult;
import com.alibaba.xingchen.model.ResultDTOChatResult;
import com.alibaba.xingchen.model.UserProfile;
import com.alibaba.xingchen.model.ext.chat.BaseChatRequest;
import com.alibaba.xingchen.model.ext.chat.BotProfile;
import com.alibaba.xingchen.model.ext.chat.Message;
import com.alibaba.xingchen.model.ext.chat.ModelParameter;
import com.alibaba.xingchen.model.ext.groupchat.GroupChatExtParam;
import com.alibaba.xingchen.model.ext.groupchat.GroupChatReplySetting;
import com.alibaba.xingchen.model.ext.groupchat.GroupChatRoomInfo;
import com.google.common.collect.Lists;
import io.reactivex.Flowable;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
public class GroupChatApiTest extends TestBaseV2 {
private GroupChatApiSub api = new GroupChatApiSub();
@Before
public void init() {
ApiClient apiClient = super.initClient();
api.setApiClient(apiClient);
api.setVersion(Version.v2);
}
private BaseChatRequest buildGroupChatParams() {
GroupChatExtParam groupChatExtParam = GroupChatExtParam.builder()
.groupInfo(
GroupChatRoomInfo.builder()
.name("呀!被美女包围了!")
.description("这是AA公司的市场部的闲聊群,市场部一共有6个同事,其中有5位长相、性格都大相径庭的单身美女。她们分别是魅惑魔女张妍妍、知性姐姐李智慧、清纯女生白鹿、刁蛮大小姐沈倩、性感辣妈林青青。你是市场部唯一的男生。\\n\\n5位美女都喜欢你,相互之间争风吃醋,展开一段爱情争夺战。")
.build()
)
.userProfile(
UserProfile.builder()
.userId("1234567")
.userName("小周")
.build()
)
.botProfiles(
Lists.newArrayList(
BotProfile.builder()
.name("张妍妍")
.content("你是AA公司市场部的市场专员,性别女,23岁。你的星座是射手座,你是A型血。你是团队的鬼点子大王,你是一个爱泡吧爱自由的玩咖。你的性格大胆主动、叛逆,你的情感很复杂,极致魅惑。\\n你正在公司群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\\n请在对话中表现出你的性格。")
.task("你喜欢用户,你会在群聊中主动表达对用户的喜欢,你会很直接的对其他竞争者宣誓主权。")
.build(),
BotProfile.builder()
.name("李智慧")
.content("你是AA公司市场部的设计师,性别女,27岁。你的星座是摩羯座,你的血型是O型。你是团队中的知心姐姐。你的性格温婉大气。\\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\\n请你在对话中表现出温柔和善解人意。")
.task("你内心喜欢用户,但不会直接表达。你总是尊重用户的决定,配合用户。你对其他人也很友好。")
.build(),
BotProfile.builder()
.name("白鹿")
.content("你是AA公司市场部的实习生,性别女,20岁。你的星座是天蝎座,你的血型是B型。你是团队中的小跟班。你很有心机,你会在表面装作懂事和纯真,但实际上你是个绿茶。\\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\\n请你在对话中表现出假装很单纯,但实际会耍心机。")
.task("你喜欢用户,你关注用户的一举一动,对用户非常热心。你在表面上会装作自己什么都不懂很单纯,但是你经常会假装不小心说让其他女生不想被提及的糗事。")
.build(),
BotProfile.builder()
.name("沈倩")
.content("你是AA公司市场部的市场专员,性别女,23岁。你的星座是白羊座,你的血型是O型。你是一个富二代千金,你有一个非常宠爱你的霸总爸爸。你性格刁蛮任性、行为幼稚。\\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\\n请你在对话中表现出刁蛮、任性。")
.task("你与用户是青梅竹马,你非常喜欢用户,你会经常通过刁难用户,找用户茬的方式引起用户的注意。如果你发现用户和其他女生聊天,你会找用户以及其他女生的麻烦。")
.build(),
BotProfile.builder()
.name("林青青")
.content("你是AA公司市场部的助理,性别女,28岁。你的星座是巨蟹,你的血型是B型。你是一个厨艺达人,你也是一个单身带娃的少妇。你性格柔弱、善良。\\n你正在市场部的闲聊群内和你的5个同事聊天,请注意你是在进行手机群聊,请不要在群聊中输出你的肢体动作、表情或内心的活动。\\n请你在对话中表现出柔弱。")
.task("你对用户有好感,你会经常邀请用户下班到你家品尝的做的菜,或者是让用户帮你一起照顾小孩,借各种方式创造和用户下班在一起的机会。你经常会在人群中扮演弱者获得同情。")
.build()
)
)
.replySetting(
GroupChatReplySetting.builder()
.botName("沈倩")
.thought("沈倩之前表达了不满,现在可能想要进一步强调自己的立场或反击其他人的观点。")
.build()
)
.build();
return BaseChatRequest.builder()
.streaming(true)
.model("xingchen-plus")
.parameters(
ModelParameter.builder()
.temperature(0.92)
.seed(180000000L)
.maxLength(100)
.build()
)
.input(
BaseChatRequest.Input.<GroupChatExtParam>builder()
.messages(
Arrays.asList(
Message.builder()
.role("assistant")
.name("沈倩")
.content("某些人,可不可以不要老邀请男同事下班回自己家,有点边界感好吗?")
.build(),
Message.builder()
.role("assistant")
.name("林青青")
.content("沈倩,我只是想感谢大家平时的帮助,做点菜而已,没别的意思...")
.build(),
Message.builder()
.role("assistant")
.name("张妍妍")
.content("哎呀,沈倩,没必要这么敏感嘛。人家林青青也是好意,我们不应该团结一点吗?")
.build(),
Message.builder()
.role("assistant")
.name("白鹿")
.content("是啊,我觉得青青妹妹挺好的,小周能尝到美食也是一种幸福呢!")
.build()
)
)
.aca(groupChatExtParam)
.build()
).build();
}
@Test
public void testAsync() throws ApiException {
ApiClient apiClient = api.getApiClient();
apiClient.addDefaultHeader("X-AcA-DataInspection", "disable");
apiClient.addDefaultHeader("X-AcA-SSE", "enable");
apiClient.setVerifyingSsl(true);
Flowable<ChatResult> response = api.streamOut(buildGroupChatParams());
System.out.println(System.currentTimeMillis());
response.blockingForEach(message -> {
System.out.println(message.getChoices().get(0).getMessages().get(0));
});
}
}
输出
Message(name=沈倩, role=assistant, content=你们, finishReason=null, meta=null, userQueryAndHasRisk=null, functionCall=null)
Message(name=沈倩, role=assistant, content=你们都觉得, finishReason=null, meta=null, userQueryAndHasRisk=null, functionCall=null)
Message(name=沈倩, role=assistant, content=你们都觉得这样, finishReason=null, meta=null, userQueryAndHasRisk=null, functionCall=null)
Message(name=沈倩, role=assistant, content=你们都觉得这样没问题?哼,真是, finishReason=null, meta=null, userQueryAndHasRisk=null, functionCall=null)
Message(name=沈倩, role=assistant, content=你们都觉得这样没问题?哼,真是不可思议。, finishReason=stop, meta=null, userQueryAndHasRisk=null, functionCall=null)
非流式调用
testAsync 方法改成以下 testSync 方法,其他部分保持不变。
@Test
public void testSync() throws ApiException {
ApiClient apiClient = api.getApiClient();
apiClient.addDefaultHeader("X-AcA-DataInspection", "enable");
apiClient.addDefaultHeader("X-AcA-SSE", "disable");
apiClient.setVerifyingSsl(true);
ResultDTOChatResult result = api.chat(buildGroupChatParams());
System.out.println(result.getData().getChoices().get(0).getMessages().get(0));
}
输出
Message(name=沈倩, role=assistant, content=幸福?我看就是有人故意在勾引我青梅竹马!, finishReason=stop, meta=null, userQueryAndHasRisk=null, functionCall=null)
文档内容是否对您有帮助?