From 01bce6a4c9290a79e0c08a43f59b403ed705814a Mon Sep 17 00:00:00 2001
From: 0007 <0007@qq.com>
Date: Wed, 27 Aug 2025 19:57:29 +0800
Subject: [PATCH] Add File
---
.../llm/tencent/TencentLlmUtil.java | 195 ++++++++++++++++++
1 file changed, 195 insertions(+)
create mode 100644 agents-flex-llm/agents-flex-llm-tencent/src/main/java/com/agentsflex/llm/tencent/TencentLlmUtil.java
diff --git a/agents-flex-llm/agents-flex-llm-tencent/src/main/java/com/agentsflex/llm/tencent/TencentLlmUtil.java b/agents-flex-llm/agents-flex-llm-tencent/src/main/java/com/agentsflex/llm/tencent/TencentLlmUtil.java
new file mode 100644
index 0000000..74d67ad
--- /dev/null
+++ b/agents-flex-llm/agents-flex-llm-tencent/src/main/java/com/agentsflex/llm/tencent/TencentLlmUtil.java
@@ -0,0 +1,195 @@
+/*
+ * 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.tencent;
+
+import com.agentsflex.core.llm.ChatOptions;
+import com.agentsflex.core.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.ImagePrompt;
+import com.agentsflex.core.prompt.Prompt;
+import com.agentsflex.core.prompt.PromptFormat;
+import com.agentsflex.core.util.Maps;
+import com.agentsflex.core.util.MessageUtil;
+import com.agentsflex.core.util.StringUtil;
+import com.alibaba.fastjson.JSONPath;
+import com.tencentcloudapi.common.DatatypeConverter;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+public class TencentLlmUtil {
+
+ private static final PromptFormat promptFormat = new DefaultPromptFormat() {
+ @Override
+ protected void buildMessageContent(Message message, Map map) {
+ map.clear();
+ if (message instanceof HumanMessage) {
+ map.put("Role", "user");
+ } else if (message instanceof AiMessage) {
+ map.put("Role", "assistant");
+ map.put("Content", "");
+ AiMessage aiMessage = (AiMessage) message;
+ List calls = aiMessage.getCalls();
+ if (calls != null && !calls.isEmpty()) {
+ buildToolCalls(map, calls);
+ return;
+ }
+ } else if (message instanceof SystemMessage) {
+ map.put("Role", "system");
+ } else if (message instanceof ToolMessage) {
+ map.put("Role", "tool");
+ map.put("Tool_call_id", ((ToolMessage) message).getToolCallId());
+ }
+ if (message instanceof HumanImageMessage) {
+ ImagePrompt prompt = ((HumanImageMessage) message).getPrompt();
+ List