mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2025-01-31 17:40:05 +08:00
Merge remote-tracking branch 'origin/master-jdk21-ai' into master-jdk21-ai
This commit is contained in:
commit
660a29d4e3
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user