diff --git a/agents-flex-core/src/main/java/com/agentsflex/core/llm/ChatOptions.java b/agents-flex-core/src/main/java/com/agentsflex/core/llm/ChatOptions.java new file mode 100644 index 0000000..3194a7a --- /dev/null +++ b/agents-flex-core/src/main/java/com/agentsflex/core/llm/ChatOptions.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.agentsflex.core.llm; + + +import com.agentsflex.core.util.Maps; + +import java.util.List; +import java.util.Map; + +/** + * 每个大模型都可以有自己的实现类 + */ +public class ChatOptions { + + public static final ChatOptions DEFAULT = new ChatOptions() { + @Override + public void setTemperature(Float temperature) { + throw new IllegalStateException("Can not set temperature to the default instance."); + } + + @Override + public void setMaxTokens(Integer maxTokens) { + throw new IllegalStateException("Can not set maxTokens to the default instance."); + } + }; + + private String model; + private String seed; + private Float temperature = 0.8f; + private Float topP; + private Integer topK; + private Integer maxTokens; + private List stop; + + /** + * 是否开启思考模式,适用于 Qwen3 等模型模型。 + */ + private Boolean enableThinking; + + /** + * 额外的参数,用于传递给模型。 + */ + private Map extra; + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getSeed() { + return seed; + } + + public void setSeed(String seed) { + this.seed = seed; + } + + public Float getTemperature() { + return temperature; + } + + public void setTemperature(Float temperature) { + this.temperature = temperature; + } + + public Float getTopP() { + return topP; + } + + public void setTopP(Float topP) { + this.topP = topP; + } + + public Integer getTopK() { + return topK; + } + + public void setTopK(Integer topK) { + this.topK = topK; + } + + public Integer getMaxTokens() { + return maxTokens; + } + + public void setMaxTokens(Integer maxTokens) { + this.maxTokens = maxTokens; + } + + public List getStop() { + return stop; + } + + public void setStop(List stop) { + this.stop = stop; + } + + public Boolean getEnableThinking() { + return enableThinking; + } + + public void setEnableThinking(Boolean enableThinking) { + this.enableThinking = enableThinking; + } + + public Map getExtra() { + return extra; + } + + public void setExtra(Map extra) { + this.extra = extra; + } + + public void addExtra(String key, Object value) { + if (extra == null) { + extra = Maps.of(key, value); + } else { + extra.put(key, value); + } + } +}