mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-30 10:05:59 +08:00 
			
		
		
		
	Merge remote-tracking branch 'origin/master-jdk21-ai' into master-jdk21-ai
This commit is contained in:
		| @ -3,9 +3,9 @@ package cn.iocoder.yudao.module.ai.enums.model; | |||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
|  |  | ||||||
| // TODO done @fansili:1)类注释要加下;2)author 和 time 用 javadoc,@author 和 @since;3)@AllArgsConstructor 使用这个注解,去掉构造方法;4)value 改成 model 字段,然后注释都写下哈;5)message 改成 name,然后注释都写下哈 |  | ||||||
| // TODO @fan: AiModelEnum 是不是可以缩写成这个哈;所有的模型,都写在这里枚举; |  | ||||||
| /** | /** | ||||||
|  |  * ai 模型 | ||||||
|  |  * | ||||||
|  * @author: fansili |  * @author: fansili | ||||||
|  * @time: 2024/3/4 12:36 |  * @time: 2024/3/4 12:36 | ||||||
|  */ |  */ | ||||||
|  | |||||||
| @ -119,8 +119,8 @@ public class YiYanChatClient implements ChatClient, StreamingChatClient { | |||||||
|         // 复制 YiYanOptions 属性,到 request 中(这里 options 属性和 request 基本保持一致) |         // 复制 YiYanOptions 属性,到 request 中(这里 options 属性和 request 基本保持一致) | ||||||
|         YiYanChatOptions useOptions = getYiYanOptions(prompt); |         YiYanChatOptions useOptions = getYiYanOptions(prompt); | ||||||
|         BeanUtil.copyProperties(useOptions, request); |         BeanUtil.copyProperties(useOptions, request); | ||||||
|         request.setTop_p(useOptions.getTopP()) |         request.setTopP(useOptions.getTopP()) | ||||||
|                 .setMax_output_tokens(useOptions.getMaxOutputTokens()) |                 .setMaxOutputTokens(useOptions.getMaxOutputTokens()) | ||||||
|                 .setTemperature(useOptions.getTemperature()) |                 .setTemperature(useOptions.getTemperature()) | ||||||
|                 .setSystem(systemPrompt) |                 .setSystem(systemPrompt) | ||||||
|                 .setStream(stream); |                 .setStream(stream); | ||||||
|  | |||||||
| @ -6,9 +6,6 @@ import org.springframework.ai.chat.prompt.ChatOptions; | |||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| // TODO @fan:增加一个 model |  | ||||||
| // TODO @fan:字段命名,penalty_score 类似的,建议改成驼峰原则 |  | ||||||
| // TODO @fan:字段的注释,可以都删除掉,让用户 https://cloud.baidu.com/doc/WENXINWORKSHOP/s/clntwmv7t 即可 |  | ||||||
| /** | /** | ||||||
|  * 文心一言的 {@link ChatOptions} 实现类 |  * 文心一言的 {@link ChatOptions} 实现类 | ||||||
|  * |  * | ||||||
| @ -20,91 +17,58 @@ import java.util.List; | |||||||
| public class YiYanChatOptions implements ChatOptions { | public class YiYanChatOptions implements ChatOptions { | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 一个可触发函数的描述列表,说明: |      * functions 函数 | ||||||
|      * (1)支持的function数量无限制 |  | ||||||
|      * (2)长度限制,最后一个message的content长度(即此轮对话的问题)、functions和system字段总内容不能超过20480 个字符,且不能超过5120 tokens |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private List<YiYanChatCompletionRequest.Function> functions; |     private List<YiYanChatCompletionRequest.Function> functions; | ||||||
|     /** |     /** | ||||||
|      * 说明: |      * temperature | ||||||
|      * (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 |  | ||||||
|      * (2)默认0.8,范围 (0, 1.0],不能为0 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Float temperature; |     private Float temperature; | ||||||
|     /** |     /** | ||||||
|      * 说明: |      * topP | ||||||
|      * (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 |  | ||||||
|      * (2)默认0.8,取值范围 [0, 1.0] |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Float topP; |     private Float topP; | ||||||
|     /** |     /** | ||||||
|      * 通过对已生成的token增加惩罚,减少重复生成的现象。说明: |      * 通过对已生成的token增加惩罚,减少重复生成的现象 | ||||||
|      * (1)值越大表示惩罚越大 |  | ||||||
|      * (2)默认1.0,取值范围:[1.0, 2.0] |  | ||||||
|      * |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Float penalty_score; |     private Float penaltyScore; | ||||||
|     /** |     /** | ||||||
|      * 是否以流式接口的形式返回数据,默认false |      * stream 模式请求 | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Boolean stream; |     private Boolean stream; | ||||||
|     /** |     /** | ||||||
|      * 模型人设,主要用于人设设定,例如,你是xxx公司制作的AI助手,说明: |      * system 提示 | ||||||
|      * (1)长度限制,最后一个message的content长度(即此轮对话的问题)、functions和system字段总内容不能超过20480 个字符,且不能超过5120 tokens |  | ||||||
|      * (2)如果同时使用system和functions,可能暂无法保证使用效果,持续进行优化 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private String system; |     private String system; | ||||||
|     /** |     /** | ||||||
|      * 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: |      * 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成 | ||||||
|      * (1)每个元素长度不超过20字符 |  | ||||||
|      * (2)最多4个元素 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private List<String> stop; |     private List<String> stop; | ||||||
|     /** |     /** | ||||||
|      * 是否强制关闭实时搜索功能,默认false,表示不关闭 |      * 是否强制关闭实时搜索功能 | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Boolean disable_search; |     private Boolean disableSearch; | ||||||
|     /** |     /** | ||||||
|      * 是否开启上角标返回,说明: |      * 是否开启上角标返回 | ||||||
|      * (1)开启后,有概率触发搜索溯源信息search_info,search_info内容见响应参数介绍 |  | ||||||
|      * (2)默认false,不开启 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Boolean enable_citation; |     private Boolean enableCitation; | ||||||
|     /** |     /** | ||||||
|      * 指定模型最大输出token数,范围[2, 2048] |      * 输出最大 token | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Integer maxOutputTokens; |     private Integer maxOutputTokens; | ||||||
|     /** |     /** | ||||||
|      * 指定响应内容的格式,说明: |      * 响应格式 text、json_object | ||||||
|      * (1)可选值: |  | ||||||
|      * · json_object:以json格式返回,可能出现不满足效果情况 |  | ||||||
|      * · text:以文本格式返回 |  | ||||||
|      * (2)如果不填写参数response_format值,默认为text |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private String response_format; |     private String responseFormat; | ||||||
|     /** |     /** | ||||||
|      * 表示最终用户的唯一标识符 |      * 用户id | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private String user_id; |     private String userId; | ||||||
|     /** |     /** | ||||||
|      * 在函数调用场景下,提示大模型选择指定的函数(非强制),说明:指定的函数名必须在functions中存在 |      * 在函数调用场景下,提示大模型选择指定的函数(非强制),说明:指定的函数名必须在functions中存在 | ||||||
|      * 必填:否 |      * tip: ERNIE-4.0-8K 模型没有这个字段 | ||||||
|      * |  | ||||||
|      * ERNIE-4.0-8K 模型没有这个字段 |  | ||||||
|      */ |      */ | ||||||
|     private String tool_choice; |     private String toolChoice; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Float getTemperature() { |     public Float getTemperature() { | ||||||
| @ -118,8 +82,6 @@ public class YiYanChatOptions implements ChatOptions { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 百度么有 topK |      * 百度么有 topK | ||||||
|      * |  | ||||||
|      * @return null |  | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Integer getTopK() { |     public Integer getTopK() { | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| package cn.iocoder.yudao.framework.ai.core.model.yiyan.api; | package cn.iocoder.yudao.framework.ai.core.model.yiyan.api; | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.ai.core.model.yiyan.exception.YiYanApiException; | import cn.iocoder.yudao.framework.ai.core.model.yiyan.exception.YiYanApiException; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | ||||||
| import org.springframework.http.HttpStatusCode; | import org.springframework.http.HttpStatusCode; | ||||||
| import org.springframework.http.ResponseEntity; | import org.springframework.http.ResponseEntity; | ||||||
| import org.springframework.web.reactive.function.client.WebClient; | import org.springframework.web.reactive.function.client.WebClient; | ||||||
| @ -85,7 +86,7 @@ public class YiYanApi { | |||||||
|                         -> uriBuilder.path(useChatModel.getUri()) |                         -> uriBuilder.path(useChatModel.getUri()) | ||||||
|                         .queryParam("access_token", token) |                         .queryParam("access_token", token) | ||||||
|                         .build()) |                         .build()) | ||||||
|                 .body(Mono.just(request), YiYanChatCompletionRequest.class) |                 .body(Mono.just(JsonUtils.toJsonString(request)), String.class) | ||||||
|                 .retrieve() |                 .retrieve() | ||||||
|                 .toEntity(YiYanChatCompletionResponse.class) |                 .toEntity(YiYanChatCompletionResponse.class) | ||||||
|                 .block(); |                 .block(); | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| package cn.iocoder.yudao.framework.ai.core.model.yiyan.api; | package cn.iocoder.yudao.framework.ai.core.model.yiyan.api; | ||||||
|  |  | ||||||
|  | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| // TODO @fan:字段驼峰;字段注释都可以删除,贴个链接就好; |  | ||||||
| /** | /** | ||||||
|  * 文心一言 Completion Request |  * 文心一言 Completion Request | ||||||
|  * |  * | ||||||
| @ -20,96 +20,70 @@ public class YiYanChatCompletionRequest { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 聊天上下文信息。 |      * 聊天上下文信息 | ||||||
|      * 必填:是 |  | ||||||
|      */ |      */ | ||||||
|     private List<Message> messages; |     private List<Message> messages; | ||||||
|     /** |     /** | ||||||
|      * 一个可触发函数的描述列表,说明: |      * functions 函数 | ||||||
|      * (1)支持的function数量无限制 |  | ||||||
|      * (2)长度限制,最后一个message的content长度(即此轮对话的问题)、functions和system字段总内容不能超过20480 个字符,且不能超过5120 tokens |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private List<Function> functions; |     private List<Function> functions; | ||||||
|     /** |     /** | ||||||
|      * 说明: |      * temperature | ||||||
|      * (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 |  | ||||||
|      * (2)默认0.8,范围 (0, 1.0],不能为0 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Float temperature; |     private Float temperature; | ||||||
|     /** |     /** | ||||||
|      * 说明: |      * topP | ||||||
|      * (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 |  | ||||||
|      * (2)默认0.8,取值范围 [0, 1.0] |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Float top_p; |     @JsonProperty("top_p") | ||||||
|  |     private Float topP; | ||||||
|     /** |     /** | ||||||
|      * 通过对已生成的token增加惩罚,减少重复生成的现象。说明: |      * 通过对已生成的token增加惩罚,减少重复生成的现象 | ||||||
|      * (1)值越大表示惩罚越大 |  | ||||||
|      * (2)默认1.0,取值范围:[1.0, 2.0] |  | ||||||
|      * |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Float penalty_score; |     @JsonProperty("penalty_score") | ||||||
|  |     private Float penaltyScore; | ||||||
|     /** |     /** | ||||||
|      * 是否以流式接口的形式返回数据,默认false |      * stream 模式 | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Boolean stream; |     private Boolean stream; | ||||||
|     /** |     /** | ||||||
|      * 模型人设,主要用于人设设定,例如,你是xxx公司制作的AI助手,说明: |      * system 预设角色 | ||||||
|      * (1)长度限制,最后一个message的content长度(即此轮对话的问题)、functions和system字段总内容不能超过20480 个字符,且不能超过5120 tokens |  | ||||||
|      * (2)如果同时使用system和functions,可能暂无法保证使用效果,持续进行优化 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private String system; |     private String system; | ||||||
|     /** |     /** | ||||||
|      * 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: |      * 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成 | ||||||
|      * (1)每个元素长度不超过20字符 |  | ||||||
|      * (2)最多4个元素 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private List<String> stop; |     private List<String> stop; | ||||||
|     /** |     /** | ||||||
|      * 是否强制关闭实时搜索功能,默认false,表示不关闭 |      * 是否强制关闭实时搜索功能 | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Boolean disable_search; |     @JsonProperty("disable_search") | ||||||
|  |     private Boolean disableSearch; | ||||||
|     /** |     /** | ||||||
|      * 是否开启上角标返回,说明: |      * 是否开启上角标返回 | ||||||
|      * (1)开启后,有概率触发搜索溯源信息search_info,search_info内容见响应参数介绍 |  | ||||||
|      * (2)默认false,不开启 |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Boolean enable_citation; |     @JsonProperty("enable_citation") | ||||||
|  |     private Boolean enableCitation; | ||||||
|     /** |     /** | ||||||
|      * 指定模型最大输出token数,范围[2, 2048] |      * 最大输出 token 数 | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private Integer max_output_tokens; |     @JsonProperty("max_output_tokens") | ||||||
|  |     private Integer maxOutputTokens; | ||||||
|     /** |     /** | ||||||
|      * 指定响应内容的格式,说明: |      * 返回格式 text、json_object | ||||||
|      * (1)可选值: |  | ||||||
|      * · json_object:以json格式返回,可能出现不满足效果情况 |  | ||||||
|      * · text:以文本格式返回 |  | ||||||
|      * (2)如果不填写参数response_format值,默认为text |  | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private String response_format; |     @JsonProperty("response_format") | ||||||
|  |     private String responseFormat; | ||||||
|     /** |     /** | ||||||
|      * 表示最终用户的唯一标识符 |      * 用户 id | ||||||
|      * 必填:否 |  | ||||||
|      */ |      */ | ||||||
|     private String user_id; |     @JsonProperty("user_id") | ||||||
|  |     private String userId; | ||||||
|     /** |     /** | ||||||
|      * 在函数调用场景下,提示大模型选择指定的函数(非强制),说明:指定的函数名必须在functions中存在 |      * 在函数调用场景下,提示大模型选择指定的函数(非强制),说明:指定的函数名必须在functions中存在 | ||||||
|      * 必填:否 |      * tip: ERNIE-4.0-8K 模型没有这个字段 | ||||||
|      * |  | ||||||
|      * ERNIE-4.0-8K 模型没有这个字段 |  | ||||||
|      */ |      */ | ||||||
|     private String tool_choice; |     @JsonProperty("tool_choice") | ||||||
|  |     private String toolChoice; | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Data |     @Data | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV