From 4ff83420c73ab0310670ca953f231e7d6257e883 Mon Sep 17 00:00:00 2001 From: 0007 <0007@qq.com> Date: Wed, 27 Aug 2025 19:57:42 +0800 Subject: [PATCH] Add File --- .../com/agentsflex/llm/coze/CozeLlmUtil.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 agents-flex-llm/agents-flex-llm-coze/src/main/java/com/agentsflex/llm/coze/CozeLlmUtil.java diff --git a/agents-flex-llm/agents-flex-llm-coze/src/main/java/com/agentsflex/llm/coze/CozeLlmUtil.java b/agents-flex-llm/agents-flex-llm-coze/src/main/java/com/agentsflex/llm/coze/CozeLlmUtil.java new file mode 100644 index 0000000..98c0052 --- /dev/null +++ b/agents-flex-llm/agents-flex-llm-coze/src/main/java/com/agentsflex/llm/coze/CozeLlmUtil.java @@ -0,0 +1,74 @@ +/* + * 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.llm.coze; + +import com.agentsflex.core.message.Message; +import com.agentsflex.core.message.MessageStatus; +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.Maps; +import com.alibaba.fastjson.JSONPath; + +import java.util.List; +import java.util.Map; + +/** + * @author yulsh + */ +public class CozeLlmUtil { + + private static final PromptFormat promptFormat = new DefaultPromptFormat() { + @Override + protected void buildMessageContent(Message message, Map map) { + map.put("content_type", "text"); + super.buildMessageContent(message, map); + } + }; + + public static AiMessageParser getAiMessageParser() { + DefaultAiMessageParser aiMessageParser = new DefaultAiMessageParser(); + aiMessageParser.setContentPath("$.content"); + aiMessageParser.setTotalTokensPath("$.usage.token_count"); + aiMessageParser.setCompletionTokensPath("$.usage.output_count"); + aiMessageParser.setPromptTokensPath("$.usage.input_count"); + + aiMessageParser.setStatusParser(content -> { + Boolean done = (Boolean) JSONPath.eval(content, "$.done"); + if (done != null && done){ + return MessageStatus.END; + } + return MessageStatus.MIDDLE; + }); + return aiMessageParser; + } + + + public static String promptToPayload(Prompt prompt, String botId, String userId, Map customVariables, boolean stream) { + List messages = prompt.toMessages(); + return Maps.of() + .set("bot_id", botId) + .set("user_id", userId) + .set("auto_save_history", true) + .set("additional_messages", promptFormat.toMessagesJsonObject(messages)) + .set("stream", stream) + .setIf(customVariables != null, "custom_variables", customVariables) + .toJSON(); + } + +}