diff --git a/code/ai-demo/.gitignore b/code/ai-demo/.gitignore new file mode 100644 index 00000000..480bdf52 --- /dev/null +++ b/code/ai-demo/.gitignore @@ -0,0 +1,39 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ +.kotlin + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/code/ai-demo/.idea/.gitignore b/code/ai-demo/.idea/.gitignore new file mode 100644 index 00000000..b58b603f --- /dev/null +++ b/code/ai-demo/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/code/ai-demo/.idea/encodings.xml b/code/ai-demo/.idea/encodings.xml new file mode 100644 index 00000000..aa00ffab --- /dev/null +++ b/code/ai-demo/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/code/ai-demo/.idea/misc.xml b/code/ai-demo/.idea/misc.xml new file mode 100644 index 00000000..a12cfdac --- /dev/null +++ b/code/ai-demo/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/code/ai-demo/.idea/vcs.xml b/code/ai-demo/.idea/vcs.xml new file mode 100644 index 00000000..5b8fb08b --- /dev/null +++ b/code/ai-demo/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/code/ai-demo/pom.xml b/code/ai-demo/pom.xml new file mode 100644 index 00000000..2fd18dd6 --- /dev/null +++ b/code/ai-demo/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + org.example + ai-demo + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + + + + dev.langchain4j + langchain4j-open-ai + 1.3.0 + + + + \ No newline at end of file diff --git a/code/ai-demo/src/main/java/org/example/Main.java b/code/ai-demo/src/main/java/org/example/Main.java new file mode 100644 index 00000000..7db4ab1f --- /dev/null +++ b/code/ai-demo/src/main/java/org/example/Main.java @@ -0,0 +1,47 @@ +package org.example; + +import dev.langchain4j.data.message.ChatMessage; +import dev.langchain4j.data.message.UserMessage; +import dev.langchain4j.model.chat.ChatModel; +import dev.langchain4j.model.openai.OpenAiChatModel; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Base64; + +public class Main { + public static void main(String[] args) throws IOException { + + ChatModel chatModel = OpenAiChatModel + .builder() + .apiKey("sk-14a6915853e241d6a58f31f81ae96b65") // 安全起见最好用环境变量 + .modelName("qwen3.5-plus") + .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1") + .build(); + + // 记录开始时间 + long startTime = System.nanoTime(); + + + Path imagePath = Path.of("path/to/your/image.jpg"); // 替换为您的图片路径 + byte[] imageBytes = Files.readAllBytes(imagePath); + String base64Image = Base64.getEncoder().encodeToString(imageBytes); + + UserMessage userMessage = UserMessage.userMessage( + "请描述这张图片的内容。", // 文本部分 + base64Image // 图片部分 (Base64格式) + ); + + + String content = chatModel.chat(userMessage); + + long endTime = System.nanoTime(); + + // 计算耗时(毫秒) + long durationMs = (endTime - startTime) / 1_000_000; + + System.out.println("模型回答: " + content); + System.out.println("请求耗时: " + durationMs + " ms"); + } +} \ No newline at end of file diff --git a/code/docusaurus b/code/docusaurus index 4f58d5b9..76067c88 160000 --- a/code/docusaurus +++ b/code/docusaurus @@ -1 +1 @@ -Subproject commit 4f58d5b99b0def543df87b1c72211456b00292dc +Subproject commit 76067c88edb8cd57065916a3c577a4849fb412d6