Orange 开源项目 - 集成DeepSeek大模型
DeepSeek 是一家专注实现AGI的中国公司,如果你还想了解更多关于DeepSeek的信息,可以前往查询。
·
1 DeepSeek大模型
DeepSeek 是一家专注实现AGI的中国公司,如果你还想了解更多关于DeepSeek的信息,可以前往【官方网站】查询
2 集成DeepSeek大模型
2.1 获取API-KEY
获取DeepSeek API-KEY,请参考DeepSeek官网「获取DeepSeek API-KEY」
2.2 集成对话模型(Chat Model)
public class DeepSeekChatModelServiceImpl implements ChatModelService {
private final DeepSeekStorageProperties deepSeekStorageProperties;
@Override
public PlatformEnum getPlatform() {
return PlatformEnum.DEEP_SEEK;
}
@Override
public Flux<Result<ConversationReplyVO>> conversationStream(ConversationParam param) {
return conversationStream(param, List.of());
}
@Override
public Flux<Result<ConversationReplyVO>> conversationStream(ConversationParam param, List<ChatSessionRecordVO> contextMessageList) {
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.get("application/json");
ChatCompletionsParam reqBody = generateChatRequestBody(param, contextMessageList);
Request request = new Request.Builder()
.url(deepSeekStorageProperties.getChatUrl())
.addHeader(SecurityConstant.AUTHORIZATION, "Bearer " + deepSeekStorageProperties.getToken())
.post(RequestBody.create(JSONUtil.toJsonStr(reqBody), mediaType))
.build();
return Flux.create(emitter -> {
EventSourceListener listener = new EventSourceListener() {
@Override
public void onOpen(@NotNull EventSource eventSource, @NotNull Response response) {
System.out.println("SSE connection opened");
}
@Override
public void onClosed(@NotNull EventSource eventSource) {
emitter.complete();
System.out.println("SSE connection closed");
}
@Override
public void onEvent(@NotNull EventSource eventSource, String id, String type, @NotNull String data) {
if (log.isDebugEnabled()) {
log.debug("data:{}", data);
}
if (StrUtil.isBlank(data) || DeepSeekContent.DONE.equalsIgnoreCase(data)) {
emitter.complete();
return;
}
ChatCompletionsResponse response = JSONUtil.toBean(data, ChatCompletionsResponse.class);
StringBuilder content = new StringBuilder();
for (ChatCompletionsResponse.ChoiceItem choice : response.getChoices()) {
content.append(choice.getDelta().getContent());
}
emitter.next(ResultWrapper.ok(ConversationReplyVO.builder().content(content.toString()).build()));
}
@Override
public void onFailure(@NotNull EventSource eventSource, Throwable t, Response response) {
System.err.println("Error occurred: " + t);
}
};
EventSource.Factory factory = EventSources.createFactory(client);
factory.newEventSource(request, listener);
});
}
private ChatCompletionsParam generateChatRequestBody(ConversationParam param, List<ChatSessionRecordVO> contextMessageList) {
List<MessageItem> messages = new ArrayList<>();
if (CollUtil.isNotEmpty(contextMessageList)) {
for (ChatSessionRecordVO record : contextMessageList) {
if (MessageTypeEnum.USER.equals(record.getMessageType())) {
messages.add(MessageItem.builder().role(MessageType.USER.getValue()).content(record.getContent()).build());
continue;
}
if (MessageTypeEnum.ASSISTANT.equals(record.getMessageType())) {
messages.add(MessageItem.builder().role(MessageType.ASSISTANT.getValue()).content(record.getContent()).build());
}
}
}
messages.add(MessageItem.builder().role(MessageType.USER.getValue()).content(param.getPrompt()).build());
return ChatCompletionsParam.builder()
.model(param.getModelCode())
.messages(messages)
.stream(Boolean.TRUE)
.build();
}
}
2.3 在线体验
- 在线体验: http://tiny.hengzq.cn
3 项目体验
- Orange 官网: http://hengzq.cn
- 在线体验: http://tiny.hengzq.cn
- 项目文档: http://hengzq.cn/orange-monomer/
- 单体架构-后端源码下载【GitHub】: https://github.com/hengzq/orange-monomer
- 单体架构-后端源码下载【Gitee】: https://gitee.com/hengzq/orange-monomer
- 微服务版本-后端源码下载【GitHub】: https://github.com/hengzq/orange-cloud
- 微服务版本-后端源码下载【Gitee】: https://gitee.com/hengzq/orange-cloud
- 前端源码下载【GitHub】: https://github.com/hengzq/orange-cloud
- 前端源码下载【Gitee】: https://gitee.com/hengzq/orange-cloud
注:前端项目设计灵活,能够同时兼容后端的单体架构和微服务架构
4 相关文档
更多推荐
所有评论(0)