mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2025-02-23 04:30:34 +08:00
【优化】兼容阿里云千问开源模型,和付费模型
This commit is contained in:
parent
2ef64a0a50
commit
63c5f90596
@ -4,13 +4,14 @@ import cn.iocoder.yudao.framework.ai.chat.*;
|
|||||||
import cn.iocoder.yudao.framework.ai.chat.prompt.ChatOptions;
|
import cn.iocoder.yudao.framework.ai.chat.prompt.ChatOptions;
|
||||||
import cn.iocoder.yudao.framework.ai.chat.prompt.Prompt;
|
import cn.iocoder.yudao.framework.ai.chat.prompt.Prompt;
|
||||||
import cn.iocoder.yudao.framework.ai.chatqianwen.api.QianWenApi;
|
import cn.iocoder.yudao.framework.ai.chatqianwen.api.QianWenApi;
|
||||||
import cn.iocoder.yudao.framework.ai.chatqianwen.api.QianWenChatCompletionRequest;
|
|
||||||
import cn.iocoder.yudao.framework.ai.chatyiyan.exception.YiYanApiException;
|
import cn.iocoder.yudao.framework.ai.chatyiyan.exception.YiYanApiException;
|
||||||
import com.alibaba.dashscope.aigc.generation.GenerationResult;
|
import com.alibaba.dashscope.aigc.generation.GenerationResult;
|
||||||
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
|
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
|
||||||
import com.alibaba.dashscope.common.Message;
|
import com.alibaba.dashscope.common.Message;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import io.reactivex.Flowable;
|
import io.reactivex.Flowable;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.retry.RetryCallback;
|
import org.springframework.retry.RetryCallback;
|
||||||
import org.springframework.retry.RetryContext;
|
import org.springframework.retry.RetryContext;
|
||||||
@ -71,7 +72,7 @@ public class QianWenChatClient implements ChatClient, StreamingChatClient {
|
|||||||
return this.retryTemplate.execute(ctx -> {
|
return this.retryTemplate.execute(ctx -> {
|
||||||
// ctx 会有重试的信息
|
// ctx 会有重试的信息
|
||||||
// 创建 request 请求,stream模式需要供应商支持
|
// 创建 request 请求,stream模式需要供应商支持
|
||||||
QianWenChatCompletionRequest request = this.createRequest(prompt, false);
|
QwenParam request = this.createRequest(prompt, false);
|
||||||
// 调用 callWithFunctionSupport 发送请求
|
// 调用 callWithFunctionSupport 发送请求
|
||||||
ResponseEntity<GenerationResult> responseEntity = qianWenApi.chatCompletionEntity(request);
|
ResponseEntity<GenerationResult> responseEntity = qianWenApi.chatCompletionEntity(request);
|
||||||
// 获取结果封装 chatCompletion
|
// 获取结果封装 chatCompletion
|
||||||
@ -81,11 +82,41 @@ public class QianWenChatClient implements ChatClient, StreamingChatClient {
|
|||||||
// response.getRequestId(), response.getCode(), response.getMessage()))));
|
// response.getRequestId(), response.getCode(), response.getMessage()))));
|
||||||
// }
|
// }
|
||||||
// 转换为 Generation 返回
|
// 转换为 Generation 返回
|
||||||
return new ChatResponse(List.of(new Generation(response.getOutput().getText())));
|
return new ChatResponse(response.getOutput().getChoices().stream()
|
||||||
|
.map(choices -> new Generation(choices.getMessage().getContent()))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private QianWenChatCompletionRequest createRequest(Prompt prompt, boolean stream) {
|
private QwenParam createRequest(Prompt prompt, boolean stream) {
|
||||||
|
// 获取 ChatOptions
|
||||||
|
QianWenOptions chatOptions = getChatOptions(prompt);
|
||||||
|
//
|
||||||
|
List<Message> messageList = Lists.newArrayList();
|
||||||
|
prompt.getInstructions().stream().forEach(instruction -> {
|
||||||
|
Message message = new Message();
|
||||||
|
message.setRole(instruction.getMessageType().getValue());
|
||||||
|
message.setContent(instruction.getContent());
|
||||||
|
messageList.add(message);
|
||||||
|
});
|
||||||
|
return QwenParam.builder()
|
||||||
|
.model(qianWenApi.getQianWenChatModal().getValue())
|
||||||
|
.prompt(prompt.getContents())
|
||||||
|
.messages(messageList)
|
||||||
|
.maxTokens(chatOptions.getMaxTokens())
|
||||||
|
.resultFormat(QwenParam.ResultFormat.MESSAGE)
|
||||||
|
.topP(Double.valueOf(chatOptions.getTopP()))
|
||||||
|
.topK(chatOptions.getTopK())
|
||||||
|
.temperature(chatOptions.getTemperature())
|
||||||
|
// 控制流式输出模式,即后面的内容会包含已经输出的内容;设置为True,将开启增量输出模式,后面的输出不会包含已经输出的内容,您需要自行拼接整体输出
|
||||||
|
.incrementalOutput(true)
|
||||||
|
/* set the random seed, optional, default to 1234 if not set */
|
||||||
|
.seed(100)
|
||||||
|
.apiKey(qianWenApi.getApiKey())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private @NotNull QianWenOptions getChatOptions(Prompt prompt) {
|
||||||
// 两个都为null 则没有配置文件
|
// 两个都为null 则没有配置文件
|
||||||
if (qianWenOptions == null && prompt.getOptions() == null) {
|
if (qianWenOptions == null && prompt.getOptions() == null) {
|
||||||
throw new ChatException("ChatOptions 未配置参数!");
|
throw new ChatException("ChatOptions 未配置参数!");
|
||||||
@ -96,37 +127,27 @@ public class QianWenChatClient implements ChatClient, StreamingChatClient {
|
|||||||
options = (ChatOptions) prompt.getOptions();
|
options = (ChatOptions) prompt.getOptions();
|
||||||
}
|
}
|
||||||
// Prompt 里面是一个 ChatOptions,用户可以随意传入,这里做一下判断
|
// Prompt 里面是一个 ChatOptions,用户可以随意传入,这里做一下判断
|
||||||
if (!(options instanceof QianWenOptions qianWenOptions)) {
|
if (!(options instanceof QianWenOptions)) {
|
||||||
throw new ChatException("Prompt 传入的不是 QianWenOptions!");
|
throw new ChatException("Prompt 传入的不是 QianWenOptions!");
|
||||||
}
|
}
|
||||||
return (QianWenChatCompletionRequest) QianWenChatCompletionRequest.builder()
|
return (QianWenOptions) options;
|
||||||
.model(qianWenApi.getQianWenChatModal().getValue())
|
|
||||||
.apiKey(qianWenApi.getApiKey())
|
|
||||||
.messages(prompt.getInstructions().stream().map(m -> {
|
|
||||||
Message message = new Message();
|
|
||||||
message.setRole(m.getMessageType().getValue());
|
|
||||||
message.setContent(m.getContent());
|
|
||||||
return message;
|
|
||||||
}).collect(Collectors.toList()))
|
|
||||||
.resultFormat(QwenParam.ResultFormat.MESSAGE)
|
|
||||||
// 动态改变的三个参数
|
|
||||||
.topP(Double.valueOf(qianWenOptions.getTopP()))
|
|
||||||
.topK(qianWenOptions.getTopK())
|
|
||||||
.temperature(qianWenOptions.getTemperature())
|
|
||||||
.incrementalOutput(true)
|
|
||||||
.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Flux<ChatResponse> stream(Prompt prompt) {
|
public Flux<ChatResponse> stream(Prompt prompt) {
|
||||||
// ctx 会有重试的信息
|
// ctx 会有重试的信息
|
||||||
// 创建 request 请求,stream模式需要供应商支持
|
// 创建 request 请求,stream模式需要供应商支持
|
||||||
QianWenChatCompletionRequest request = this.createRequest(prompt, true);
|
QwenParam request = this.createRequest(prompt, true);
|
||||||
// 调用 callWithFunctionSupport 发送请求
|
// 调用 callWithFunctionSupport 发送请求
|
||||||
Flowable<GenerationResult> responseResult = this.qianWenApi.chatCompletionStream(request);
|
Flowable<GenerationResult> responseResult = this.qianWenApi.chatCompletionStream(request);
|
||||||
|
|
||||||
return Flux.create(fluxSink ->
|
return Flux.create(fluxSink ->
|
||||||
responseResult.subscribe(
|
responseResult.subscribe(
|
||||||
value -> fluxSink.next(new ChatResponse(List.of(new Generation(value.getOutput().getText())))),
|
value -> fluxSink.next(
|
||||||
|
new ChatResponse(value.getOutput().getChoices().stream()
|
||||||
|
.map(choices -> new Generation(choices.getMessage().getContent()))
|
||||||
|
.collect(Collectors.toList()))
|
||||||
|
),
|
||||||
error -> fluxSink.error(error),
|
error -> fluxSink.error(error),
|
||||||
() -> fluxSink.complete()
|
() -> fluxSink.complete()
|
||||||
)
|
)
|
||||||
|
@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
* time: 2024/3/15 19:57
|
* time: 2024/3/15 19:57
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Accessors
|
@Accessors(chain = true)
|
||||||
public class QianWenOptions implements ChatOptions {
|
public class QianWenOptions implements ChatOptions {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,6 +28,10 @@ public class QianWenOptions implements ChatOptions {
|
|||||||
* 默认值为0.8。注意,取值不要大于等于1
|
* 默认值为0.8。注意,取值不要大于等于1
|
||||||
*/
|
*/
|
||||||
private Float topP;
|
private Float topP;
|
||||||
|
/**
|
||||||
|
* 用于限制模型生成token的数量,max_tokens设置的是生成上限,并不表示一定会生成这么多的token数量。其中qwen1.5-14b-chat、qwen1.5-7b-chat、qwen-14b-chat和qwen-7b-chat最大值和默认值均为1500,qwen-1.8b-chat、qwen-1.8b-longcontext-chat和qwen-72b-chat最大值和默认值均为2000
|
||||||
|
*/
|
||||||
|
private Integer maxTokens = 1500;
|
||||||
|
|
||||||
//
|
//
|
||||||
// 适配 ChatOptions
|
// 适配 ChatOptions
|
||||||
|
@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.ai.chatqianwen.QianWenChatModal;
|
|||||||
import cn.iocoder.yudao.framework.ai.exception.AiException;
|
import cn.iocoder.yudao.framework.ai.exception.AiException;
|
||||||
import com.alibaba.dashscope.aigc.generation.Generation;
|
import com.alibaba.dashscope.aigc.generation.Generation;
|
||||||
import com.alibaba.dashscope.aigc.generation.GenerationResult;
|
import com.alibaba.dashscope.aigc.generation.GenerationResult;
|
||||||
|
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
|
||||||
import com.alibaba.dashscope.common.Message;
|
import com.alibaba.dashscope.common.Message;
|
||||||
import com.alibaba.dashscope.common.Role;
|
import com.alibaba.dashscope.common.Role;
|
||||||
import com.alibaba.dashscope.exception.InputRequiredException;
|
import com.alibaba.dashscope.exception.InputRequiredException;
|
||||||
@ -34,9 +35,7 @@ public class QianWenApi {
|
|||||||
this.qianWenChatModal = qianWenChatModal;
|
this.qianWenChatModal = qianWenChatModal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseEntity<GenerationResult> chatCompletionEntity(QianWenChatCompletionRequest request) {
|
public ResponseEntity<GenerationResult> chatCompletionEntity(QwenParam request) {
|
||||||
Message userMsg = Message.builder().role(Role.USER.getValue()).content("用萝卜、土豆、茄子做饭,给我个菜谱").build();
|
|
||||||
|
|
||||||
GenerationResult call;
|
GenerationResult call;
|
||||||
try {
|
try {
|
||||||
call = gen.call(request);
|
call = gen.call(request);
|
||||||
@ -49,7 +48,7 @@ public class QianWenApi {
|
|||||||
return new ResponseEntity<>(call, HttpStatusCode.valueOf(200));
|
return new ResponseEntity<>(call, HttpStatusCode.valueOf(200));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Flowable<GenerationResult> chatCompletionStream(QianWenChatCompletionRequest request) {
|
public Flowable<GenerationResult> chatCompletionStream(QwenParam request) {
|
||||||
Flowable<GenerationResult> resultFlowable;
|
Flowable<GenerationResult> resultFlowable;
|
||||||
try {
|
try {
|
||||||
resultFlowable = gen.streamCall(request);
|
resultFlowable = gen.streamCall(request);
|
||||||
|
@ -47,6 +47,7 @@ public class YudaoAiAutoConfiguration {
|
|||||||
QianWenOptions qianWenOptions = new QianWenOptions();
|
QianWenOptions qianWenOptions = new QianWenOptions();
|
||||||
qianWenOptions.setTopK(qianWenProperties.getTopK());
|
qianWenOptions.setTopK(qianWenProperties.getTopK());
|
||||||
qianWenOptions.setTopP(qianWenProperties.getTopP());
|
qianWenOptions.setTopP(qianWenProperties.getTopP());
|
||||||
|
qianWenOptions.setMaxTokens(qianWenProperties.getMaxTokens());
|
||||||
qianWenOptions.setTemperature(qianWenProperties.getTemperature());
|
qianWenOptions.setTemperature(qianWenProperties.getTemperature());
|
||||||
return new QianWenChatClient(
|
return new QianWenChatClient(
|
||||||
new QianWenApi(
|
new QianWenApi(
|
||||||
|
@ -47,6 +47,10 @@ public class YudaoAiProperties {
|
|||||||
* api key
|
* api key
|
||||||
*/
|
*/
|
||||||
private String apiKey;
|
private String apiKey;
|
||||||
|
/**
|
||||||
|
* 用于限制模型生成token的数量,max_tokens设置的是生成上限,并不表示一定会生成这么多的token数量
|
||||||
|
*/
|
||||||
|
private Integer maxTokens;
|
||||||
/**
|
/**
|
||||||
* model
|
* model
|
||||||
*/
|
*/
|
||||||
|
@ -1,13 +1,25 @@
|
|||||||
package cn.iocoder.yudao.framework.ai.chat;
|
package cn.iocoder.yudao.framework.ai.chat;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.ai.chat.messages.SystemMessage;
|
||||||
|
import cn.iocoder.yudao.framework.ai.chat.messages.UserMessage;
|
||||||
import cn.iocoder.yudao.framework.ai.chat.prompt.Prompt;
|
import cn.iocoder.yudao.framework.ai.chat.prompt.Prompt;
|
||||||
import cn.iocoder.yudao.framework.ai.chatqianwen.api.QianWenApi;
|
|
||||||
import cn.iocoder.yudao.framework.ai.chatqianwen.QianWenChatClient;
|
import cn.iocoder.yudao.framework.ai.chatqianwen.QianWenChatClient;
|
||||||
|
import cn.iocoder.yudao.framework.ai.chatqianwen.QianWenChatModal;
|
||||||
import cn.iocoder.yudao.framework.ai.chatqianwen.QianWenOptions;
|
import cn.iocoder.yudao.framework.ai.chatqianwen.QianWenOptions;
|
||||||
|
import cn.iocoder.yudao.framework.ai.chatqianwen.api.QianWenApi;
|
||||||
|
import com.alibaba.dashscope.aigc.generation.GenerationResult;
|
||||||
|
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
|
||||||
|
import com.alibaba.dashscope.common.Message;
|
||||||
|
import com.alibaba.dashscope.common.MessageManager;
|
||||||
|
import com.alibaba.dashscope.common.Role;
|
||||||
|
import com.alibaba.dashscope.exception.InputRequiredException;
|
||||||
|
import com.alibaba.dashscope.exception.NoApiKeyException;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@ -21,28 +33,34 @@ public class QianWenChatClientTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
QianWenApi qianWenApi = new QianWenApi(
|
QianWenApi qianWenApi = new QianWenApi("sk-Zsd81gZYg7", QianWenChatModal.QWEN_72B_CHAT);
|
||||||
"LTAI5tNTVhXW4fLKUjMrr98z",
|
QianWenOptions qianWenOptions = new QianWenOptions();
|
||||||
"ZJ0JQeyjzxxm5CfeTV6k1wNE9UsvZP",
|
qianWenOptions.setTopP(0.8F);
|
||||||
"f0c1088824594f589c8f10567ccd929f_p_efm",
|
qianWenOptions.setTopK(3);
|
||||||
null
|
qianWenOptions.setTemperature(0.6F);
|
||||||
);
|
|
||||||
qianWenChatClient = new QianWenChatClient(
|
qianWenChatClient = new QianWenChatClient(
|
||||||
qianWenApi,
|
qianWenApi,
|
||||||
new QianWenOptions()
|
qianWenOptions
|
||||||
.setAppId("5f14955f201a44eb8dbe0c57250a32ce")
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void callTest() {
|
public void callTest() {
|
||||||
ChatResponse call = qianWenChatClient.call(new Prompt("Java语言怎么样?"));
|
List<cn.iocoder.yudao.framework.ai.chat.messages.Message> messages = new ArrayList<>();
|
||||||
|
messages.add(new SystemMessage("你是一个优质的小红书文艺作者,抒写着各城市的美好文化和风景。"));
|
||||||
|
messages.add(new UserMessage("长沙怎么样?"));
|
||||||
|
|
||||||
|
ChatResponse call = qianWenChatClient.call(new Prompt(messages));
|
||||||
System.err.println(call.getResult());
|
System.err.println(call.getResult());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void streamTest() {
|
public void streamTest() {
|
||||||
Flux<ChatResponse> flux = qianWenChatClient.stream(new Prompt("Java语言怎么样?"));
|
List<cn.iocoder.yudao.framework.ai.chat.messages.Message> messages = new ArrayList<>();
|
||||||
|
messages.add(new SystemMessage("你是一个优质的文言文作者,用文言文描述着各城市的人文风景。"));
|
||||||
|
messages.add(new UserMessage("长沙怎么样?"));
|
||||||
|
|
||||||
|
Flux<ChatResponse> flux = qianWenChatClient.stream(new Prompt(messages));
|
||||||
flux.subscribe(new Consumer<ChatResponse>() {
|
flux.subscribe(new Consumer<ChatResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(ChatResponse chatResponse) {
|
public void accept(ChatResponse chatResponse) {
|
||||||
@ -54,4 +72,32 @@ public class QianWenChatClientTests {
|
|||||||
Scanner scanner = new Scanner(System.in);
|
Scanner scanner = new Scanner(System.in);
|
||||||
scanner.nextLine();
|
scanner.nextLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void qianwenDemoTest() throws NoApiKeyException, InputRequiredException {
|
||||||
|
com.alibaba.dashscope.aigc.generation.Generation gen = new com.alibaba.dashscope.aigc.generation.Generation();
|
||||||
|
MessageManager msgManager = new MessageManager(10);
|
||||||
|
Message systemMsg =
|
||||||
|
Message.builder().role(Role.SYSTEM.getValue()).content("You are a helpful assistant.").build();
|
||||||
|
Message userMsg = Message.builder().role(Role.USER.getValue()).content("就当前的海洋污染的情况,写一份限塑的倡议书提纲,需要有理有据地号召大家克制地使用塑料制品").build();
|
||||||
|
msgManager.add(systemMsg);
|
||||||
|
msgManager.add(userMsg);
|
||||||
|
QwenParam param =
|
||||||
|
QwenParam.builder().model("qwen-72b-chat").messages(msgManager.get())
|
||||||
|
.resultFormat(QwenParam.ResultFormat.MESSAGE)
|
||||||
|
.topP(0.8)
|
||||||
|
/* set the random seed, optional, default to 1234 if not set */
|
||||||
|
.seed(100)
|
||||||
|
.apiKey("sk-Zsd81gZYg7")
|
||||||
|
.build();
|
||||||
|
GenerationResult result = gen.call(param);
|
||||||
|
System.out.println(result);
|
||||||
|
System.out.println("-----------------");
|
||||||
|
System.out.println("-----------------");
|
||||||
|
msgManager.add(result);
|
||||||
|
param.setPrompt("能否缩短一些,只讲三点");
|
||||||
|
param.setMessages(msgManager.get());
|
||||||
|
result = gen.call(param);
|
||||||
|
System.out.println(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.ai.midjourney.api.req.AttachmentsReq;
|
|||||||
import cn.iocoder.yudao.framework.ai.midjourney.api.req.DescribeReq;
|
import cn.iocoder.yudao.framework.ai.midjourney.api.req.DescribeReq;
|
||||||
import cn.iocoder.yudao.framework.ai.midjourney.api.req.ReRollReq;
|
import cn.iocoder.yudao.framework.ai.midjourney.api.req.ReRollReq;
|
||||||
import cn.iocoder.yudao.framework.ai.midjourney.api.res.UploadAttachmentsRes;
|
import cn.iocoder.yudao.framework.ai.midjourney.api.res.UploadAttachmentsRes;
|
||||||
import com.alibaba.fastjson.JSON;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.core.io.FileSystemResource;
|
||||||
@ -58,7 +58,7 @@ public class MidjourneyInteractionsTests {
|
|||||||
new AttachmentsReq().setFileSystemResource(
|
new AttachmentsReq().setFileSystemResource(
|
||||||
new FileSystemResource(new File("/Users/fansili/Downloads/DSC01402.JPG")))
|
new FileSystemResource(new File("/Users/fansili/Downloads/DSC01402.JPG")))
|
||||||
);
|
);
|
||||||
System.err.println(JSON.toJSONString(res));
|
System.err.println(JsonUtils.toJsonString(res));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -228,14 +228,11 @@ yudao:
|
|||||||
qianwen:
|
qianwen:
|
||||||
enable: true
|
enable: true
|
||||||
aiPlatform: QIAN_WEN
|
aiPlatform: QIAN_WEN
|
||||||
temperature: 1
|
temperature: 0.85
|
||||||
topP: 1
|
topP: 0.8
|
||||||
topK: 1
|
topK: 0
|
||||||
endpoint: bailian.cn-beijing.aliyuncs.com
|
api-key: sk-Zsd81gZYg7
|
||||||
accessKeyId: LTAI5tNTVhXW4fLKUjMrr98z
|
max-tokens: 1500
|
||||||
accessKeySecret: ZJ0JQeyjzxxm5CfeTV6k1wNE9UsvZP
|
|
||||||
agentKey: f0c1088824594f589c8f10567ccd929f_p_efm
|
|
||||||
appId: 5f14955f201a44eb8dbe0c57250a32ce
|
|
||||||
xinghuo:
|
xinghuo:
|
||||||
enable: true
|
enable: true
|
||||||
aiPlatform: XING_HUO
|
aiPlatform: XING_HUO
|
||||||
|
Loading…
Reference in New Issue
Block a user