上传备份

master
王兵 5 days ago
parent 5814569607
commit 1a07e3e4ee

@ -1,112 +1,110 @@
package xyz.wbsite.achat;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import xyz.wbsite.achat.core.base.Message;
import xyz.wbsite.achat.core.base.Result;
import xyz.wbsite.achat.core.base.Session;
import xyz.wbsite.achat.core.message.UserMessage;
import xyz.wbsite.achat.core.prompt.MessagePrompt;
import xyz.wbsite.achat.core.service.SessionService;
import javax.annotation.Resource;
import java.util.List;
import java.util.UUID;
/**
* AI.
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
@RestController
public class ChatController {
@Resource
private SessionService sessionService;
/**
*
*/
@GetMapping("/chat")
public String chat() {
return "AChat is running!";
}
/**
*
*
* @return SSE
*/
@PostMapping(value = "/chat/send", produces = "text/event-stream;charset=UTF-8")
public SseEmitter send(@RequestBody MessagePrompt message) {
return sessionService.sendMessage(message);
}
/**
*
*
* @return
*/
@PostMapping("/chat/session")
public Result<Session> createSession() {
String sid = UUID.randomUUID().toString();
return sessionService.createSession(sid);
}
/**
*
*
* @return
*/
@ResponseBody
@GetMapping("/chat/session/list")
public Result<List<Session>> listSession() {
String sid = UUID.randomUUID().toString();
return sessionService.listSessions(sid);
}
/**
*
*
* @param sid ID
* @return
*/
@ResponseBody
@DeleteMapping("/chat/session/{sid}")
public Result deleteSession(@PathVariable("sid") String sid) {
return sessionService.deleteSession(sid);
}
/**
*
*
* @param sid ID
* @return
*/
@ResponseBody
@GetMapping("/chat/session/{sid}/history")
public Result<List<Message>> getSessionHistory(@PathVariable("sid") String sid) {
return sessionService.listMessage(sid);
}
/**
* AI
*
* @param sid ID
* @return
*/
@ResponseBody
@PostMapping("/chat/session/{sid}/stop")
public Result<Void> stopSession(@PathVariable("sid") String sid) {
return sessionService.stopSession(sid);
}
}
//package xyz.wbsite.achat;
//
//import org.springframework.web.bind.annotation.DeleteMapping;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
//import xyz.wbsite.achat.core.message.Message;
//import xyz.wbsite.achat.core.Result;
//import xyz.wbsite.achat.core.Session;
//import xyz.wbsite.achat.core.prompt.MessagePrompt;
//import xyz.wbsite.achat.core.service.SessionService;
//
//import javax.annotation.Resource;
//import java.util.List;
//import java.util.UUID;
//
///**
// * AI会话接口.
// *
// * @author wangbing
// * @version 0.0.1
// * @since 1.8
// */
//@RestController
//public class ChatController {
//
// @Resource
// private SessionService sessionService;
//
// /**
// * 门户
// */
// @GetMapping("/")
// public String chat() {
// return "AChat is running!";
// }
//
// /**
// * 发送消息(流式响应)
// *
// * @return SSE发射器用于流式响应
// */
// @PostMapping(value = "/chat/send", produces = "text/event-stream;charset=UTF-8")
// public SseEmitter send(@RequestBody MessagePrompt message) {
// return sessionService.sendMessage(message);
// }
//
// /**
// * 创建会话
// *
// * @return 创建会话响应
// */
// @PostMapping("/chat/session")
// public Result<Session> createSession() {
// String sid = UUID.randomUUID().toString();
// return sessionService.createSession(sid);
// }
//
// /**
// * 获取会话列表
// *
// * @return 会话列表响应
// */
// @ResponseBody
// @GetMapping("/chat/session/list")
// public Result<List<Session>> listSession() {
// String sid = UUID.randomUUID().toString();
// return sessionService.listSessions(sid);
// }
//
// /**
// * 删除会话
// *
// * @param sid 会话ID
// * @return 删除会话响应
// */
// @ResponseBody
// @DeleteMapping("/chat/session/{sid}")
// public Result<Void> deleteSession(@PathVariable("sid") String sid) {
// return sessionService.deleteSession(sid);
// }
//
// /**
// * 获取会话历史消息
// *
// * @param sid 会话ID
// * @return 历史消息响应
// */
// @ResponseBody
// @GetMapping("/chat/session/{sid}/history")
// public Result<List<Message>> getSessionHistory(@PathVariable("sid") String sid) {
// return sessionService.listMessage(sid);
// }
//
// /**
// * 停止AI回答
// *
// * @param sid 会话ID
// * @return 停止回答响应
// */
// @ResponseBody
// @PostMapping("/chat/session/{sid}/stop")
// public Result<Void> stopSession(@PathVariable("sid") String sid) {
// return sessionService.stopSession(sid);
// }
//}

@ -0,0 +1,85 @@
package xyz.wbsite.achat;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import xyz.wbsite.achat.core.chat.ChatCompletionRequest;
import xyz.wbsite.achat.core.chat.CompletionRequest;
import xyz.wbsite.achat.core.chat.CompletionResponse;
import xyz.wbsite.achat.core.model.ModelListResponse;
import xyz.wbsite.achat.core.service.ChatService;
import javax.annotation.Resource;
/**
* AI.
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
@RestController
@RequestMapping("/v1")
public class OpenAiController {
// @Resource
// private SessionService sessionService;
@Resource
private ChatService chatService;
private static final ObjectMapper objectMapper = new ObjectMapper();
@RequestMapping()
public String info() {
return "OpenAI API is support";
}
/**
*
* GET /v1/models
*/
@GetMapping("/models")
public ModelListResponse models() {
// 实现获取模型列表的逻辑
// 这里返回一个示例响应,实际应用中应从服务层获取数据
ModelListResponse response = new ModelListResponse();
response.setObject("list");
// response.setData(/* 实际模型列表 */);
return response;
}
/**
*
* GET /v1/models/{model}
*/
@GetMapping("/models/{model}")
public Object getModel(@PathVariable String model) {
// 实现获取模型详情的逻辑
// 这里返回一个示例响应,实际应用中应从服务层获取数据
return null; // 替换为实际的模型对象
}
@RequestMapping("/completions")
public CompletionResponse completions(@RequestBody CompletionRequest request) {
return chatService.prompt(request);
}
/**
*
* POST /v1/chat/completions
*/
@PostMapping("/chat/completions")
public Object createChatCompletion(@RequestBody ChatCompletionRequest request) {
if (Boolean.TRUE.equals(request.getStream())) {
// 流式响应处理
return chatService.streamChat(request);
} else {
// 非流式响应处理
return chatService.chat(request);
}
}
}

@ -0,0 +1,75 @@
//package xyz.wbsite.achat.core;
//
///**
// * 服务器推送事件
// *
// * @author wangbing
// * @version 0.0.1
// * @since 1.8
// */
//public class Event {
//
// private String id;
//
// private String object;
//
// private String model;
//
// private Long created;
//
// private String sid;
//
// private String uid;
//
// public Event() {
// this.created = System.currentTimeMillis();
// }
//
// public String getId() {
// return id;
// }
//
// public void setId(String id) {
// this.id = id;
// }
//
// public String getObject() {
// return object;
// }
//
// public void setObject(String object) {
// this.object = object;
// }
//
// public String getModel() {
// return model;
// }
//
// public void setModel(String model) {
// this.model = model;
// }
//
// public Long getCreated() {
// return created;
// }
//
// public void setCreated(Long created) {
// this.created = created;
// }
//
// public String getSid() {
// return sid;
// }
//
// public void setSid(String sid) {
// this.sid = sid;
// }
//
// public String getUid() {
// return uid;
// }
//
// public void setUid(String uid) {
// this.uid = uid;
// }
//}

@ -1,59 +0,0 @@
package xyz.wbsite.achat.core.base;
import java.util.Date;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
public class Event {
private String sid;
private Date time;
private String text;
private String type;
public Event(String sid) {
this.sid = sid;
this.time = new Date();
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}

@ -1,52 +0,0 @@
package xyz.wbsite.achat.core.base;
import xyz.wbsite.achat.enums.Role;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
public class Message {
/**
*
*/
private Role role;
/**
* ID
*/
private String sid;
/**
*
*/
private String content;
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}

@ -1,15 +1,13 @@
package xyz.wbsite.achat.core.message;
import xyz.wbsite.achat.core.base.Message;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
public class AiMessage extends Message {
}
//package xyz.wbsite.achat.core.message;
//
//
///**
// * 用户消息
// *
// * @author wangbing
// * @version 0.0.1
// * @since 1.8
// */
//public class AiMessage extends Message {
//
//}

@ -0,0 +1,78 @@
package xyz.wbsite.achat.core.message;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
public class Message {
private Role role;
private String content;
private String name;
public Message() {
}
private Message(Builder builder) {
this.role = builder.role;
this.content = builder.content;
this.name = builder.name;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 静态builder方法返回Builder实例
public static Builder builder() {
return new Builder();
}
public static class Builder {
private Role role;
private String content;
private String name;
public Builder role(Role role) {
this.role = role;
return this;
}
public Builder content(String content) {
this.content = content;
return this;
}
public Builder name(String name) {
this.name = name;
return this;
}
// 构建Message对象
public Message build() {
return new Message(this);
}
}
}

@ -1,4 +1,4 @@
package xyz.wbsite.achat.enums;
package xyz.wbsite.achat.core.message;
import com.fasterxml.jackson.annotation.JsonValue;

@ -1,4 +1,4 @@
package xyz.wbsite.achat.enums;
package xyz.wbsite.achat.core.message;
/**
*

@ -1,42 +1,41 @@
package xyz.wbsite.achat.core.message;
import xyz.wbsite.achat.core.base.Attachment;
import xyz.wbsite.achat.core.base.Message;
import java.util.List;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
public class UserMessage extends Message {
/**
* ID
*/
private String uid;
/**
*
*/
private List<Attachment> attachments;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public List<Attachment> getAttachments() {
return attachments;
}
public void setAttachments(List<Attachment> attachments) {
this.attachments = attachments;
}
}
//package xyz.wbsite.achat.core.message;
//
//import xyz.wbsite.achat.core.Attachment;
//
//import java.util.List;
//
///**
// * 用户消息
// *
// * @author wangbing
// * @version 0.0.1
// * @since 1.8
// */
//public class UserMessage extends Message {
//
// /**
// * 用户ID
// */
// private String uid;
//
// /**
// * 附件
// */
// private List<Attachment> attachments;
//
// public String getUid() {
// return uid;
// }
//
// public void setUid(String uid) {
// this.uid = uid;
// }
//
// public List<Attachment> getAttachments() {
// return attachments;
// }
//
// public void setAttachments(List<Attachment> attachments) {
// this.attachments = attachments;
// }
//}

@ -1,106 +1,105 @@
package xyz.wbsite.achat.core.prompt;
import xyz.wbsite.achat.core.base.Message;
import xyz.wbsite.achat.core.base.Prompt;
import xyz.wbsite.achat.core.message.UserMessage;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MessagePrompt extends Prompt {
/**
*
*/
private String model;
/**
*
*/
private List<Message> messages;
/**
*
*/
private Boolean stream;
/**
* token
*/
private Integer maxTokens;
/**
*
*/
private Double temperature;
/**
*
*/
private Map<String, Object> extraParams;
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public List<Message> getMessages() {
return messages;
}
public void setMessages(List<Message> messages) {
this.messages = messages;
}
public Boolean getStream() {
return stream;
}
public void setStream(Boolean stream) {
this.stream = stream;
}
public Integer getMaxTokens() {
return maxTokens;
}
public void setMaxTokens(Integer maxTokens) {
this.maxTokens = maxTokens;
}
public Double getTemperature() {
return temperature;
}
public void setTemperature(Double temperature) {
this.temperature = temperature;
}
public Map<String, Object> getExtraParams() {
return extraParams;
}
public void setExtraParams(Map<String, Object> extraParams) {
this.extraParams = extraParams;
}
public UserMessage getLastUserMessage() {
List<Message> messageList = messages.stream().filter(message -> message instanceof UserMessage).collect(Collectors.toList());
UserMessage userMessage = (UserMessage)messageList.get(messageList.size() - 1);
return userMessage;
}
public String getUid() {
return getLastUserMessage().getUid();
}
public String getSid(){
return getLastUserMessage().getSid();
}
}
//package xyz.wbsite.achat.core.prompt;
//
//import xyz.wbsite.achat.core.message.Message;
//import xyz.wbsite.achat.core.Prompt;
//import xyz.wbsite.achat.core.message.UserMessage;
//
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//public class MessagePrompt extends Prompt {
//
// /**
// * 模型
// */
// private String model;
//
// /**
// * 消息列表
// */
// private List<Message> messages;
//
// /**
// * 是否流式返回
// */
// private Boolean stream;
//
// /**
// * 最大token数
// */
// private Integer maxTokens;
//
// /**
// * 温度参
// */
// private Double temperature;
//
// /**
// * 额外参数
// */
// private Map<String, Object> extraParams;
//
// public String getModel() {
// return model;
// }
//
// public void setModel(String model) {
// this.model = model;
// }
//
// public List<Message> getMessages() {
// return messages;
// }
//
// public void setMessages(List<Message> messages) {
// this.messages = messages;
// }
//
// public Boolean getStream() {
// return stream;
// }
//
// public void setStream(Boolean stream) {
// this.stream = stream;
// }
//
// public Integer getMaxTokens() {
// return maxTokens;
// }
//
// public void setMaxTokens(Integer maxTokens) {
// this.maxTokens = maxTokens;
// }
//
// public Double getTemperature() {
// return temperature;
// }
//
// public void setTemperature(Double temperature) {
// this.temperature = temperature;
// }
//
// public Map<String, Object> getExtraParams() {
// return extraParams;
// }
//
// public void setExtraParams(Map<String, Object> extraParams) {
// this.extraParams = extraParams;
// }
//
// public UserMessage getLastUserMessage() {
// List<Message> messageList = messages.stream().filter(message -> message instanceof UserMessage).collect(Collectors.toList());
// UserMessage userMessage = (UserMessage)messageList.get(messageList.size() - 1);
// return userMessage;
// }
//
// public String getUid() {
// return getLastUserMessage().getUid();
// }
//
// public String getSid(){
// return getLastUserMessage().getSid();
// }
//
//}

@ -1,85 +1,84 @@
package xyz.wbsite.achat.core.service;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import xyz.wbsite.achat.core.base.Message;
import xyz.wbsite.achat.core.base.Result;
import xyz.wbsite.achat.core.base.Session;
import xyz.wbsite.achat.core.message.UserMessage;
import xyz.wbsite.achat.core.prompt.MessagePrompt;
import java.util.List;
/**
*
*
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
public interface SessionService {
/**
*
*
* @param uid
* @return
*/
Result<Session> createSession(String uid);
/**
*
*
* @param sid ID
* @return
*/
Result<Void> deleteSession(String sid);
/**
*
*
* @param uid
* @return
*/
Result<List<Session>> listSessions(String uid);
/**
*
*
* @param sid ID
* @return
*/
Result<Session> getSession(String sid);
/**
*
*
* @param sid ID
* @return
*/
Result<Void> stopSession(String sid);
/**
*
*
* @param message
* @return SSE
*/
SseEmitter sendMessage(MessagePrompt message);
/**
*
*
* @param sid ID
* @return
*/
Result<List<Message>> listMessage(String sid);
/**
*
*
* @param sid ID
* @return
*/
Result<Void> deleteMessage(String sid);
}
//package xyz.wbsite.achat.core.service;
//
//import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
//import xyz.wbsite.achat.core.message.Message;
//import xyz.wbsite.achat.core.Result;
//import xyz.wbsite.achat.core.Session;
//import xyz.wbsite.achat.core.prompt.MessagePrompt;
//
//import java.util.List;
//
///**
// * 会话管理服务接口
// * 提供会话的创建、删除、查询、消息收发等功能
// *
// * @author wangbing
// * @version 0.0.1
// * @since 1.8
// */
//public interface SessionService {
//
// /**
// * 创建新会话
// *
// * @param uid 用户编号
// * @return 创建的会话对象
// */
// Result<Session> createSession(String uid);
//
// /**
// * 删除会话
// *
// * @param sid 会话ID
// * @return 删除是否成功
// */
// Result<Void> deleteSession(String sid);
//
// /**
// * 查询会话列表
// *
// * @param uid 用户编号
// * @return 会话列表
// */
// Result<List<Session>> listSessions(String uid);
//
// /**
// * 获取会话详情
// *
// * @param sid 会话ID
// * @return 会话对象
// */
// Result<Session> getSession(String sid);
//
// /**
// * 停止会话
// *
// * @param sid 会话ID
// * @return 会话对象
// */
// Result<Void> stopSession(String sid);
//
// /**
// * 发送消息并获取流式响应
// *
// * @param message 消息对象
// * @return SSE发射器用于流式响应
// */
// SseEmitter sendMessage(MessagePrompt message);
//
// /**
// * 获取会话历史消息
// *
// * @param sid 会话ID
// * @return 消息列表
// */
// Result<List<Message>> listMessage(String sid);
//
// /**
// * 获取会话历史消息
// *
// * @param sid 会话ID
// * @return 消息列表
// */
// Result<Void> deleteMessage(String sid);
//}

@ -1,122 +1,121 @@
package xyz.wbsite.achat.core.service.impl;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import xyz.wbsite.achat.core.message.MessageSseEmitter;
import xyz.wbsite.achat.core.base.Message;
import xyz.wbsite.achat.core.base.Result;
import xyz.wbsite.achat.core.base.Session;
import xyz.wbsite.achat.core.message.UserMessage;
import xyz.wbsite.achat.core.prompt.MessagePrompt;
import xyz.wbsite.achat.core.service.SessionService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
*
*
*
* @author wangbing
* @version 0.0.1
* @since 1.8
*/
@Service
public class SessionServiceMemoryImpl implements SessionService {
private final Map<String, Session> sessionStore = new HashMap<>();
private final List<Message> messageStore = new ArrayList<>();
/**
*
*/
@Override
public Result<Session> createSession(String uid) {
Session session = new Session();
session.setId(String.valueOf(UUID.randomUUID().toString()));
session.setUid(uid);
session.setTitle("新对话");
sessionStore.put(session.getId(), session);
return Result.success(session);
}
/**
*
*/
@Override
public Result<Void> deleteSession(String sid) {
sessionStore.remove(sid);
return Result.success();
}
/**
*
*/
@Override
public Result<List<Session>> listSessions(String uid) {
List<Session> collect = sessionStore.values()
.stream()
.filter(item -> item.getUid().equals(uid))
.collect(Collectors.toList());
return Result.success(collect);
}
/**
*
*/
@Override
public Result<Session> getSession(String sid) {
Session session = sessionStore.get(sid);
if (session == null) {
return Result.error("会话不存在");
}
return Result.success(session);
}
/**
*
*/
@Override
public SseEmitter sendMessage(MessagePrompt message) {
// 创建VChatSseEmitter来处理流式响应
return new MessageSseEmitter(message, (emitter, message1) -> {
// 这边模拟LLM复述一遍用户问题
String text = message1.getContent();
for (char c : text.toCharArray()) {
if (emitter.isComplete()) {
return;
}
emitter.onPartialResponse(String.valueOf(c));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
emitter.onCompleteResponse(null);
});
}
@Override
public Result<Void> stopSession(String sid) {
// todo
return Result.success();
}
@Override
public Result<List<Message>> listMessage(String sid) {
List<Message> messages = messageStore.stream().filter(item -> item.getSid().equals(sid)).collect(Collectors.toList());
return Result.success(messages);
}
@Override
public Result<Void> deleteMessage(String sid) {
messageStore.forEach(item -> messageStore.remove(item));
return null;
}
}
//package xyz.wbsite.achat.core.service.impl;
//
//import org.springframework.stereotype.Service;
//import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
//import xyz.wbsite.achat.core.message.MessageSseEmitter;
//import xyz.wbsite.achat.core.message.Message;
//import xyz.wbsite.achat.core.Result;
//import xyz.wbsite.achat.core.Session;
//import xyz.wbsite.achat.core.prompt.MessagePrompt;
//import xyz.wbsite.achat.core.service.SessionService;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.UUID;
//import java.util.stream.Collectors;
//
///**
// * 会话管理服务实现类
// * 实现会话的创建、删除、查询、消息收发等功能
// *
// * @author wangbing
// * @version 0.0.1
// * @since 1.8
// */
//@Service
//public class SessionServiceMemoryImpl implements SessionService {
//
// private final Map<String, Session> sessionStore = new HashMap<>();
//
// private final List<Message> messageStore = new ArrayList<>();
//
// /**
// * 创建新会话
// */
// @Override
// public Result<Session> createSession(String uid) {
// Session session = new Session();
// session.setId(String.valueOf(UUID.randomUUID().toString()));
// session.setUid(uid);
// session.setTitle("新对话");
// sessionStore.put(session.getId(), session);
// return Result.success(session);
// }
//
// /**
// * 删除会话
// */
// @Override
// public Result<Void> deleteSession(String sid) {
// sessionStore.remove(sid);
// return Result.success();
// }
//
// /**
// * 查询会话列表
// */
// @Override
// public Result<List<Session>> listSessions(String uid) {
// List<Session> collect = sessionStore.values()
// .stream()
// .filter(item -> item.getUid().equals(uid))
// .collect(Collectors.toList());
// return Result.success(collect);
// }
//
// /**
// * 获取会话详情
// */
// @Override
// public Result<Session> getSession(String sid) {
// Session session = sessionStore.get(sid);
// if (session == null) {
// return Result.error("会话不存在");
// }
// return Result.success(session);
// }
//
// /**
// * 发送消息并获取流式响应
// */
// @Override
// public SseEmitter sendMessage(MessagePrompt message) {
// // 创建VChatSseEmitter来处理流式响应
// return new MessageSseEmitter(message, (emitter, message1) -> {
// // 这边模拟LLM复述一遍用户问题
// String text = message1.getContent();
// for (char c : text.toCharArray()) {
// if (emitter.isComplete()) {
// return;
// }
// emitter.onPartialResponse(String.valueOf(c));
// try {
// Thread.sleep(100);
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
// }
// emitter.onCompleteResponse(null);
// });
// }
//
// @Override
// public Result<Void> stopSession(String sid) {
// // todo
// return Result.success();
// }
//
// @Override
// public Result<List<Message>> listMessage(String sid) {
// List<Message> messages = messageStore.stream().filter(item -> item.getSid().equals(sid)).collect(Collectors.toList());
// return Result.success(messages);
// }
//
// @Override
// public Result<Void> deleteMessage(String sid) {
// messageStore.forEach(item -> messageStore.remove(item));
// return null;
// }
//}
Loading…
Cancel
Save

Powered by TurnKey Linux.