From 84a0a51740d51212cabb44761ed7f13ef3922fc9 Mon Sep 17 00:00:00 2001 From: wangbing Date: Sun, 2 Mar 2025 22:17:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 30 ++++++- src/main/java/xyz/wbsite/ai/Main.java | 91 +++++++++++++++++++++ src/main/java/xyz/wbsite/start-ai/Main.java | 0 3 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 src/main/java/xyz/wbsite/ai/Main.java delete mode 100644 src/main/java/xyz/wbsite/start-ai/Main.java diff --git a/pom.xml b/pom.xml index 42cdb80..a0542ee 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 xyz.wbsite - start-ai + starter-ai 0.0.1-SNAPSHOT jar 1.8 + + 1.0.0-beta1 @@ -40,9 +42,29 @@ - org.dromara.easyai - easyAi - 1.3.3 + dev.langchain4j + langchain4j-core + ${langchain4j.version} + + + dev.langchain4j + langchain4j + ${langchain4j.version} + + + dev.langchain4j + langchain4j-ollama + ${langchain4j.version} + + + dev.langchain4j + langchain4j-embeddings + ${langchain4j.version} + + + dev.langchain4j + langchain4j-chroma + ${langchain4j.version} \ No newline at end of file diff --git a/src/main/java/xyz/wbsite/ai/Main.java b/src/main/java/xyz/wbsite/ai/Main.java new file mode 100644 index 0000000..f8cf0e0 --- /dev/null +++ b/src/main/java/xyz/wbsite/ai/Main.java @@ -0,0 +1,91 @@ +package xyz.wbsite.ai; + +import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.json.JSONUtil; +import com.fasterxml.jackson.annotation.JsonUnwrapped; +import dev.langchain4j.data.message.AiMessage; +import dev.langchain4j.data.message.ChatMessage; +import dev.langchain4j.data.message.UserMessage; +import dev.langchain4j.model.chat.ChatLanguageModel; +import dev.langchain4j.model.chat.StreamingChatLanguageModel; +import dev.langchain4j.model.chat.request.ChatRequest; +import dev.langchain4j.model.chat.response.ChatResponse; +import dev.langchain4j.model.chat.response.StreamingChatResponseHandler; +import dev.langchain4j.model.ollama.OllamaChatModel; +import dev.langchain4j.model.ollama.OllamaStreamingChatModel; + +/** + * 主函数入口 + */ +public class Main { + + public static void main(String[] args) { + +// testSimpleChat(args); + testStreamChat(args); + } + + public static void testSimpleChat(String[] args) { + + ChatLanguageModel model = OllamaChatModel.builder() + .baseUrl("http://36.138.207.178:11434") + .modelName("deepseek-r1:32B") + .build(); + + String generate = model.chat("请问,你是谁?"); + System.out.println(generate); + + ChatResponse chat = model.chat(new UserMessage("请问,你是谁?")); + String text = chat.aiMessage().text(); + System.out.println(text); + + ChatRequest build = ChatRequest.builder() + .messages(new ChatMessage[]{UserMessage.from("我想知道1+1等于几")}) + .build(); + ChatResponse chatResponse = model.chat(build); + System.out.println(chatResponse.aiMessage().text()); + + } + + public static void testStreamChat(String[] args) { + final boolean[] end = {false}; + + StreamingChatLanguageModel model = OllamaStreamingChatModel.builder() + .baseUrl("http://36.138.207.178:11434") + .modelName("deepseek-r1:32B") + .build(); + + String question = "假如树上有10只鸟,10分钟前飞走了2只,5分钟前又飞回了1只,刚刚又来了3只,那现在树上有几只鸟?"; + + System.out.println("开始提问"); + + ChatRequest chatRequest = ChatRequest.builder().messages(new ChatMessage[]{UserMessage.from(question)}).build(); + + final StringBuilder sb = new StringBuilder(); + + model.chat(chatRequest, new StreamingChatResponseHandler() { + @Override + public void onPartialResponse(String s) { + System.out.print(s); + sb.append(s); + } + + @Override + public void onCompleteResponse(ChatResponse chatResponse) { + System.out.println("-----回答结束-----"); + System.out.println(JSONUtil.toJsonStr(chatResponse)); + end[0] = true; + } + + @Override + public void onError(Throwable throwable) { + System.err.println("-----回答出错-----"); + end[0] = true; + } + }); + + while (!end[0]) { + ThreadUtil.safeSleep(1000); + } + } +} \ No newline at end of file diff --git a/src/main/java/xyz/wbsite/start-ai/Main.java b/src/main/java/xyz/wbsite/start-ai/Main.java deleted file mode 100644 index e69de29..0000000