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