All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.agentsflex.llm.qwen.QwenLlmUtil Maven / Gradle / Ivy

/*
 *  Copyright (c) 2023-2025, Agents-Flex ([email protected]).
 *  

* 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.llm.qwen; import com.agentsflex.core.document.Document; import com.agentsflex.core.llm.ChatOptions; import com.agentsflex.core.llm.embedding.EmbeddingOptions; import com.agentsflex.core.message.HumanMessage; import com.agentsflex.core.message.Message; import com.agentsflex.core.parser.AiMessageParser; import com.agentsflex.core.parser.impl.DefaultAiMessageParser; import com.agentsflex.core.prompt.DefaultPromptFormat; import com.agentsflex.core.prompt.Prompt; import com.agentsflex.core.prompt.PromptFormat; import com.agentsflex.core.util.CollectionUtil; import com.agentsflex.core.util.Maps; import java.util.List; public class QwenLlmUtil { private static final PromptFormat promptFormat = new DefaultPromptFormat(); public static AiMessageParser getAiMessageParser(boolean isStream) { return DefaultAiMessageParser.getChatGPTMessageParser(isStream); } public static String promptToPayload(Prompt prompt, QwenLlmConfig config, ChatOptions options, boolean withStream) { // https://help.aliyun.com/zh/dashscope/developer-reference/api-details?spm=a2c4g.11186623.0.0.1ff6fa70jCgGRc#b8ebf6b25eul6 List messages = prompt.toMessages(); HumanMessage humanMessage = (HumanMessage) CollectionUtil.lastItem(messages); return Maps.of("model", config.getModel()) .set("messages", promptFormat.toMessagesJsonObject(messages)) .setIf(withStream, "stream", true) .setIfNotEmpty("tools", promptFormat.toFunctionsJsonObject(humanMessage)) .setIfContainsKey("tools", "tool_choice", humanMessage.getToolChoice()) .setIfNotNull("top_p", options.getTopP()) .setIfNotEmpty("stop", options.getStop()) .setIf(map -> !map.containsKey("tools") && options.getTemperature() > 0, "temperature", options.getTemperature()) .setIf(map -> !map.containsKey("tools") && options.getMaxTokens() != null, "max_tokens", options.getMaxTokens()) .toJSON(); } public static String promptToEnabledPayload(Document text, EmbeddingOptions options, QwenLlmConfig config) { //https://help.aliyun.com/zh/model-studio/developer-reference/embedding-interfaces-compatible-with-openai?spm=a2c4g.11186623.0.i3 return Maps.of("model", options.getModelOrDefault(config.getDefaultEmbeddingModel())) .set("encoding_format", "float") .set("input", text.getContent()) .toJSON(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy