Commit 0487b6d5 authored by 何处是我家's avatar 何处是我家
Browse files

提交

parents
package com.ewaytek.deepseek.doadmin.dto.doubao;
import lombok.Data;
/**
* @author yangtq
* @date 2025/4/18
*/
@Data
public class Delta {
private String role;
private String content;
}
package com.ewaytek.deepseek.doadmin.dto.doubao;
import lombok.Data;
import java.util.List;
/**
* @author yangtq
* @date 2025/4/18
*/
@Data
public class DoubaoChatDTO {
private Boolean stream;
private Float temperature;
private Integer maxTokens;
private String model;
private Float top_p;
private List<DoubaoChatMsgDTO> messages;
private stream_options stream_options;
@Data
public class stream_options {
private Boolean include_usage = true;
}
}
package com.ewaytek.deepseek.doadmin.dto.doubao;
import lombok.Data;
/**
* @author yangtq
* @date 2025/4/18
*/
@Data
public class DoubaoChatMsgDTO {
private String role;
private String content;
}
package com.ewaytek.deepseek.doadmin.dto.doubao;
import lombok.Data;
import java.util.List;
/**
* @author yangtq
* @date 2025/4/18
*/
@Data
public class DoubaoChatResponseDTO {
private String id;
private String object;
private List<Choices> choices;
private String model;
private Long created;
private Usage usage;
}
package com.ewaytek.deepseek.doadmin.dto.doubao;
import lombok.Data;
/**
* @author yangtq
* @date 2025/4/18
*/
@Data
public class Usage {
private Integer completion_tokens;
private Integer prompt_tokens;
private Integer total_tokens;
}
package com.ewaytek.deepseek.doadmin.vo;
import lombok.Data;
/**
* @author yangtq
* @date 2025/4/1
*/
@Data
public class DifyAudiVO {
/**
* 回答内容
*/
private String context;
/**
* 音频名称
*/
private String name;
}
package com.ewaytek.deepseek.doadmin.vo;
import lombok.Data;
import java.util.List;
/**
* @author yangtq
* @date 2025/2/21
*/
@Data
public class MessageVO {
private String id;
private String created;
private String model;
private String object;
private List<Choices> choices;
@Data
public class Choices{
private String index;
private String finish_reason;
private Message message;
}
@Data
public class Message{
private String content;
private String role;
}
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* @author yangtq
* @date 2025/2/26
*/
@Data
public class BlockingVO {
private String id;
//任务 ID,用于请求跟踪和下方的停止响应接口
@JsonProperty("task_id")
private String taskId;
private String event;
//LLM 返回文本块内容
private String answer;
@JsonProperty("message_id")
private String messageId;
@JsonProperty("conversation_id")
private String conversationId;
private String mode;
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import lombok.Data;
import java.util.List;
/**
* @author yangtq
* @date 2025/2/25
*/
@Data
public class ConversationsVO {
private Long limit;
private String hasMore;
private List<ConversationInfoVO> data;
@Data
public class ConversationInfoVO {
private String id;
private String name;
private String status;
}
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import com.ewaytek.deepseek.doadmin.dto.dify.DifyResponseDTO;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import kotlin.Metadata;
import lombok.Data;
/**
* @author yangtq
* @date 2025/2/25
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class DifyBlockingVO extends DifyResponseDTO {
/**App 模式,固定为 chat*/
private String mode="chat";
/**完整回复内容*/
/** LLM 返回文本全部内容*/
private String answer;
@JsonProperty("task_id")
private String taskId;
/**元数据*/
private MetadataVO metadata;
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* dify聊天请求体
* @author yangtq
* @date 2025/2/25
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class DifyChatVO {
/**
* 输入提问内容
*/
private String query;
/**
* (选填)允许传入 App 定义的各变量值
*/
private Map<String,String> inputs;
/**
* 回复模式:streaming流式模式,blocking阻塞模式
*/
@JsonProperty("response_mode")
private String responseMode;
/**
* (选填)会话id,需要基于之前的聊天记录继续对话,必须传之前消息的 conversation_id
* */
@JsonProperty("conversation_id")
private String conversationId;
/**
* 用户标识,用于定义终端用户的身份,方便检索、统计。 由开发者定义规则,需保证用户标识在应用内唯一。
* */
private String user="";
/**
* (选填)自动生成标题,默认 false。 可通过调用会话重命名接口并设置 auto_generate 为 true 实现异步生成标题
* */
@JsonProperty("autoGenerate_name")
private boolean autoGenerateName=false;
private List<UploadFile> files;
@Data
public class UploadFile{
/**
* 支持类型:图片 image(目前仅支持图片格式)
* */
private String type="image";
/**
* remote_url: 图片地址
* local_file: 上传文件
* */
@JsonProperty("transfer_method")
private String transferMethod;
/**
*
* */
private String url;
/**
* 上传文件 ID。(仅当传递方式为 local_file 时)
* */
@JsonProperty("upload_file_id")
private String uploadFileId;
}
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import com.ewaytek.deepseek.doadmin.dto.dify.DifyResponseDTO;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import kotlin.Metadata;
import lombok.Data;
import java.util.List;
/**
* 流式消息时返回对象
* @author yangtq
* @date 2025/2/25
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class DifyStreamVO extends DifyResponseDTO {
//每一轮Agent迭代都会有一个唯一的id
private String id;
//任务 ID,用于请求跟踪和下方的停止响应接口
@JsonProperty("task_id")
private String taskId;
//LLM 返回文本块内容
private String answer;
//agent_thought在消息中的位置,如第一轮迭代position为1
private int position;
//agent的思考内容
private String thought;
//工具调用的返回结果
private String observation;
//使用的工具列表,以 ; 分割多个工具
private String tool;
//工具的输入,JSON格式的字符串(object)。如:{"dalle3": {"prompt": "a cute cat"}}
@JsonProperty("tool_input")
private String toolInput;
//当前 agent_thought 关联的文件ID
@JsonProperty("message_files")
private List<String> messageFiles;
//event: message_file时,文件类型,目前仅为image
private String type;
// (string) 文件归属,user或assistant,该接口返回仅为 assistant
@JsonProperty("belongs_to")
private String belongsTo;
//文件访问地址
private String url;
private MetadataVO metadata;
//HTTP 状态码
private int status;
//错误码
private String code;
//错误消息
private String message;
@JsonProperty("from_variable_selector")
private String fromVariableSelector;
private String files;
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* @author yangtq
* @date 2025/2/25
*/
@Data
public class MetadataVO {
@JsonProperty("usage")
private Usage usage;
@JsonProperty("retriever_resources")
private List<RetrieverResources> retrieverResources;
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import com.ewaytek.deepseek.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author yangtq
* @date 2025/2/25
*/
@Data
public class RetrieverResources {
//": 1
@JsonProperty("position")
@Excel(name = "消息中的位置")
private int position;
//": "101b4c97-fc2e-463c-90b1-5261a4cdcafb",
@JsonProperty("dataset_id")
private String datasetId;
//": "iPhone",
@JsonProperty("dataset_name")
@Excel(name = "知识库")
private String datasetName;
//": "8dd1ad74-0b5f-4175-b735-7d98bbbb4e00",
@JsonProperty("document_id")
private String documentId;
//": "iPhone List",
@Excel(name = "引用名称")
@JsonProperty("document_name")
private String documentName;
@JsonProperty("data_source_type")
private String dataSourceType;
//": "ed599c7f-2766-4294-9d1d-e5235a61270a",
@JsonProperty("segment_id")
private String segmentId;
//": 0.98457545,
@JsonProperty("score")
@Excel(name = "得分")
private String score;
//": "\"Model\",\"Release Date\",\"Display Size\",\"Resolution\",\"Processor\",\"RAM\",\"Storage\",\"Camera\",\"Battery\",\"Operating System\"\n\"iPhone 13 Pro Max\",\"September 24, 2021\",\"6.7 inch\",\"1284 x 2778\",\"Hexa-core (2x3.23 GHz Avalanche + 4x1.82 GHz Blizzard)\",\"6 GB\",\"128, 256, 512 GB, 1TB\",\"12 MP\",\"4352 mAh\",\"iOS 15\""
@JsonProperty("content")
@Excel(name = "内容")
private String content;
@JsonProperty("retriever_from")
private String retrieverFrom;
}
package com.ewaytek.deepseek.doadmin.vo.dify;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author yangtq
* @date 2025/2/25
*/
@Data
public class Usage
{
@JsonProperty("prompt_tokens")
private int promptTokens;
@JsonProperty("prompt_unit_price")
private double promptNnitPrice;
@JsonProperty("prompt_price_unit")
private double promptPriceUnit;
@JsonProperty("prompt_price")
private double promptPrice;
@JsonProperty("completion_tokens")
private int completionTokens;
@JsonProperty("completion_unit_price")
private double completionUnitPrice;//": "0.002",
@JsonProperty("completion_price_unit")
private double completionPriceUnit;//": "0.001",
@JsonProperty("completion_price")
private double completionPrice;//": "0.0002560",
@JsonProperty("total_tokens")
private int totalTokens;//": 1161,
@JsonProperty("total_price")
private double totalPrice;//": "0.0012890",
@JsonProperty("currency")
private String currency= "USD";
@JsonProperty("latency")
private double latency;
}
package com.ewaytek.deepseek.doadmin.vo.dify.workflows;
import com.ewaytek.deepseek.common.annotation.Excel;
import lombok.Data;
import java.util.List;
/**
* @author yangtq
* @date 2025/3/6
*/
@Data
public class WorkflowsExecVO {
@Excel(name = "问题")
private String question;
@Excel(name = "标准答案(知识库)")
private String standard;
/**
* 相似问题回复
*/
@Excel(name = "大模型组织答案")
private String answer;
@Excel(name = "工作流标问输入问题")
private String question1;
@Excel(name = "工作流标问答案")
private List<Workflows> workflowsList;
@Excel(name = "运行时间")
private String time;
@Data
public static class Workflows {
@Excel(name = "可信度", cellType = Excel.ColumnType.NUMERIC)
private String reliability;
@Excel(name = "回归标准答案")
private String answer;
}
}
package com.ewaytek.deepseek.service;
import com.ewaytek.deepseek.common.bean.base.ApiResponse;
import com.ewaytek.deepseek.doadmin.dto.MessageDTO;
import com.ewaytek.deepseek.doadmin.vo.MessageVO;
import com.ewaytek.deepseek.doadmin.vo.dify.DifyChatVO;
import com.fasterxml.jackson.core.JsonProcessingException;
import reactor.core.publisher.Flux;
import java.util.List;
import java.util.Map;
public interface AiChatService {
Flux<String> chat(List<Map<String, String>> question);
ApiResponse<MessageVO> msgChat(List<MessageDTO> messages);
}
package com.ewaytek.deepseek.service.dify;
import com.ewaytek.deepseek.doadmin.vo.dify.DifyChatVO;
import com.ewaytek.deepseek.doadmin.vo.dify.DifyStreamVO;
import io.reactivex.Single;
import retrofit2.http.Body;
import retrofit2.http.POST;
/**
* @author yangtq
* @date 2025/2/25
*/
public interface DifyApi {
/**
* 发送对话消息
*
* @param difyChatVO chat completion
* @return 返回答案
*/
@POST("chat-messages")
Single<DifyStreamVO> chatMessages(@Body DifyChatVO difyChatVO);
}
package com.ewaytek.deepseek.service.dify;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.InputStream;
import java.io.OutputStream;
/**
* @author yangtq
* @date 2025/3/28
*/
public interface DifyAudioChatService {
void systemChatAudio(InputStream inputStream, String text, OutputStream emitter) throws Exception;
void systemChatAudioFlie(InputStream inputStream, String context, ResponseBodyEmitter emitter) throws Exception;
}
package com.ewaytek.deepseek.service.dify;
import com.ewaytek.deepseek.common.bean.base.ApiResponse;
import com.ewaytek.deepseek.doadmin.dto.dify.DIfyImportVerifyDTO;
import com.ewaytek.deepseek.doadmin.dto.dify.DifyChatBlockIngDTO;
import com.ewaytek.deepseek.doadmin.dto.dify.DifyChatDTO;
import com.ewaytek.deepseek.doadmin.vo.dify.ConversationsVO;
import com.ewaytek.deepseek.doadmin.vo.dify.DifyChatVO;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import reactor.core.publisher.Flux;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.ExecutionException;
/**
* @author yangtq
* @date 2025/2/25
*/
public interface DifyChatService {
/**
* AI陪聊
* @param difyChatVO
* @return
*/
ResponseBodyEmitter sseChatPrompt(DifyChatVO difyChatVO);
ApiResponse<List<ConversationsVO.ConversationInfoVO>> conversations(Integer limit, Boolean pinned);
void importVerify2(HttpServletRequest request, HttpServletResponse response, MultipartFile file) throws IOException, InterruptedException;
DIfyImportVerifyDTO processBatch(DIfyImportVerifyDTO dto) throws JsonProcessingException;
ApiResponse importVerify(MultipartFile file) throws IOException, InterruptedException, ExecutionException;
ApiResponse importVerify3(MultipartFile file) throws IOException, InterruptedException, ExecutionException;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment