diff --git a/src/main/java/xyz/wbsite/ai/Agent_Example.java b/src/main/java/xyz/wbsite/ai/Agent_Example.java index 037dda0..07c939d 100644 --- a/src/main/java/xyz/wbsite/ai/Agent_Example.java +++ b/src/main/java/xyz/wbsite/ai/Agent_Example.java @@ -21,8 +21,14 @@ public class Agent_Example { .chatMemory(MessageWindowChatMemory.withMaxMessages(10)) .build(); - String chat = assistant.chat("你是谁"); - System.out.println(chat); + { + String chat = assistant.chat("你好,我是小李。一个学生"); + System.out.println(chat); + } + { + String chat = assistant.chat("你知道我的职业是什么吗?"); + System.out.println(chat); + } } /** diff --git a/src/main/java/xyz/wbsite/ai/Helper.java b/src/main/java/xyz/wbsite/ai/Helper.java index 4c8a75a..4389c0e 100644 --- a/src/main/java/xyz/wbsite/ai/Helper.java +++ b/src/main/java/xyz/wbsite/ai/Helper.java @@ -31,6 +31,12 @@ public class Helper { .modelName("qwen2.5:7b") .build(); + private static OpenAiChatModel gemmaModel = OpenAiChatModel.builder() + .baseUrl("http://36.138.207.178:11434/v1") + .apiKey("1") + .modelName("gemma3:4b") + .build(); + public static OpenAiStreamingChatModel getStreamChatModel() { return openAiStreamingChatModel; } @@ -43,6 +49,10 @@ public class Helper { return toolChatModel; } + public static OpenAiChatModel getGemmaModel() { + return gemmaModel; + } + public static Document getDocument() { return Document.from("人往往在做梦的时候会打呼噜"); } diff --git a/src/main/java/xyz/wbsite/ai/Image_Chait_Example.java b/src/main/java/xyz/wbsite/ai/Image_Chait_Example.java new file mode 100644 index 0000000..883c63f --- /dev/null +++ b/src/main/java/xyz/wbsite/ai/Image_Chait_Example.java @@ -0,0 +1,38 @@ +package xyz.wbsite.ai; + +import dev.langchain4j.data.message.ImageContent; +import dev.langchain4j.data.message.TextContent; +import dev.langchain4j.data.message.UserMessage; +import dev.langchain4j.memory.chat.MessageWindowChatMemory; +import dev.langchain4j.model.chat.response.ChatResponse; +import dev.langchain4j.service.AiServices; + +/** + * 智能体示例 + */ +public class Image_Chait_Example { + + public static void main(String[] args) { + Assistant assistant = AiServices.builder(Assistant.class) + .chatLanguageModel(Helper.getGemmaModel()) + .chatMemory(MessageWindowChatMemory.withMaxMessages(10)) + .build(); + + UserMessage userMessage = UserMessage.userMessage( + TextContent.from("What do you see?"), + ImageContent.from("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", + MimeType.MIME_PNG.getValue()) + + ); + + String chat = assistant.chat(userMessage); + System.out.println(chat); + } + + /** + * 助手 + */ + interface Assistant { + String chat(UserMessage userMessage); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/wbsite/ai/Memory_Chat_Example.java b/src/main/java/xyz/wbsite/ai/Memory_Chat_Example.java new file mode 100644 index 0000000..c763cbb --- /dev/null +++ b/src/main/java/xyz/wbsite/ai/Memory_Chat_Example.java @@ -0,0 +1,41 @@ +package xyz.wbsite.ai; + +import cn.hutool.core.util.StrUtil; +import dev.langchain4j.data.message.AiMessage; +import dev.langchain4j.data.message.UserMessage; +import dev.langchain4j.memory.ChatMemory; +import dev.langchain4j.memory.chat.ChatMemoryProvider; +import dev.langchain4j.memory.chat.MessageWindowChatMemory; +import dev.langchain4j.service.AiServices; +import dev.langchain4j.service.SystemMessage; + +/** + * 记忆聊天示例 + */ +public class Memory_Chat_Example { + + public static void main(String[] args) { + MessageWindowChatMemory messageWindowChatMemory = MessageWindowChatMemory.withMaxMessages(5); + messageWindowChatMemory.add(UserMessage.from("你好,我是小李。一个学生")); + messageWindowChatMemory.add(AiMessage.from("你好!很高兴认识你,小李。作为学生,你一定有很多学习上的问题或者生活中的挑战吧?如果你有任何问题或需要帮助的地方,随时告诉我哦!无论是作业、课程内容还是其他方面的问题,我都很乐意为你提供帮助。\uD83D\uDE0A")); + messageWindowChatMemory.add(UserMessage.from("你知道我的职业是什么吗?")); + messageWindowChatMemory.add(AiMessage.from("哦,你已经告诉我你是学生了呀!是的,我知道你的职业呢。有什么问题我可以帮你的吗?")); + + Assistant assistant = AiServices.builder(Assistant.class) + .chatLanguageModel(Helper.getChatModel()) + .chatMemory(messageWindowChatMemory) + .build(); + + { + String chat = assistant.chat("你知道我叫什么名字吗?"); + System.out.println(chat); + } + } + + /** + * 助手 + */ + interface Assistant { + String chat(String userMessage); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/wbsite/ai/MimeType.java b/src/main/java/xyz/wbsite/ai/MimeType.java new file mode 100644 index 0000000..6a3ce1b --- /dev/null +++ b/src/main/java/xyz/wbsite/ai/MimeType.java @@ -0,0 +1,270 @@ +package xyz.wbsite.ai; + +public enum MimeType { + APPLICATION_OCTET_STREAM("application", "octet-stream", "application/octet-stream"), + MIME_3GP("video", "3gpp", "video/3gpp"), + MIME_AI("application", "postscript", "application/postscript"), + MIME_AIF("audio", "x-aiff", "audio/x-aiff"), + MIME_AIFC("audio", "x-aiff", "audio/x-aiff"), + MIME_AIFF("audio", "x-aiff", "audio/x-aiff"), + MIME_ALL("*", "*", "*/*"), + MIME_APK("application", "vnd.android.package-archive", "application/vnd.android.package-archive"), + MIME_ASC("text", "plain", "text/plain"), + MIME_ATOM("application", "atom+xml", "application/atom+xml"), + MIME_AU("audio", "basic", "audio/basic"), + MIME_AVI("video", "x-msvideo", "video/x-msvideo"), + MIME_BCPIO("application", "x-bcpio", "application/x-bcpio"), + MIME_BIN("application", "octet-stream", "application/octet-stream"), + MIME_BMP("image", "bmp", "image/bmp"), + MIME_BZ2("application", "x-bzip2", "application/x-bzip2"), + MIME_CDF("application", "x-netcdf", "application/x-netcdf"), + MIME_CGM("image", "cgm", "image/cgm"), + MIME_CHRT("application", "x-kchart", "application/x-kchart"), + MIME_CLASS("application", "octet-stream", "application/octet-stream"), + MIME_CPIO("application", "x-cpio", "application/x-cpio"), + MIME_CPT("application", "mac-compactpro", "application/mac-compactpro"), + MIME_CSH("application", "x-csh", "application/x-csh"), + MIME_CSS("text", "css", "text/css"), + MIME_DCR("application", "x-director", "application/x-director"), + MIME_DIF("video", "x-dv", "video/x-dv"), + MIME_DIR("application", "x-director", "application/x-director"), + MIME_DJV("image", "vnd.djvu", "image/vnd.djvu"), + MIME_DJVU("image", "vnd.djvu", "image/vnd.djvu"), + MIME_DLL("application", "octet-stream", "application/octet-stream"), + MIME_DMG("application", "octet-stream", "application/octet-stream"), + MIME_DMS("application", "octet-stream", "application/octet-stream"), + MIME_DOC("application", "msword", "application/msword"), + MIME_DOCX("application", "vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"), + MIME_DOTX("application", "vnd.openxmlformats-officedocument.wordprocessingml.template", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"), + MIME_DTD("application", "xml-dtd", "application/xml-dtd"), + MIME_DV("video", "x-dv", "video/x-dv"), + MIME_DVI("application", "x-dvi", "application/x-dvi"), + MIME_DXR("application", "x-director", "application/x-director"), + MIME_EPS("application", "postscript", "application/postscript"), + MIME_ETX("text", "x-setext", "text/x-setext"), + MIME_EXE("application", "octet-stream", "application/octet-stream"), + MIME_EZ("application", "andrew-inset", "application/andrew-inset"), + MIME_FLV("video", "x-flv", "video/x-flv"), + MIME_GIF("image", "gif", "image/gif"), + MIME_GRAM("application", "srgs", "application/srgs"), + MIME_GRXML("application", "srgs+xml", "application/srgs+xml"), + MIME_GTAR("application", "x-gtar", "application/x-gtar"), + MIME_GZ("application", "x-gzip", "application/x-gzip"), + MIME_HDF("application", "x-hdf", "application/x-hdf"), + MIME_HQX("application", "mac-binhex40", "application/mac-binhex40"), + MIME_HTM("text", "html", "text/html"), + MIME_HTML("text", "html", "text/html"), + MIME_ICE("x-conference", "x-cooltalk", "x-conference/x-cooltalk"), + MIME_ICO("image", "x-icon", "image/x-icon"), + MIME_ICS("text", "calendar", "text/calendar"), + MIME_IEF("image", "ief", "image/ief"), + MIME_IFB("text", "calendar", "text/calendar"), + MIME_IGES("model", "iges", "model/iges"), + MIME_IGS("model", "iges", "model/iges"), + MIME_JAD("text", "vnd.sun.j2me.app-descriptor", "text/vnd.sun.j2me.app-descriptor"), + MIME_JAR("application", "java-archive", "application/java-archive"), + MIME_JNLP("application", "x-java-jnlp-file", "application/x-java-jnlp-file"), + MIME_JP2("image", "jp2", "image/jp2"), + MIME_JPE("image", "jpeg", "image/jpeg"), + MIME_JPEG("image", "jpeg", "image/jpeg"), + MIME_JPG("image", "jpeg", "image/jpeg"), + MIME_JS("application", "javascript", "application/javascript"), + MIME_JSON("application", "json", "application/json"), + MIME_KAR("audio", "midi", "audio/midi"), + MIME_KIL("application", "x-killustrator", "application/x-killustrator"), + MIME_KSP("application", "x-kspread", "application/x-kspread"), + MIME_LATEX("application", "x-latex", "application/x-latex"), + MIME_LHA("application", "octet-stream", "application/octet-stream"), + MIME_LZH("application", "octet-stream", "application/octet-stream"), + MIME_M3U("audio", "x-mpegurl", "audio/x-mpegurl"), + MIME_M4A("audio", "mp4a-latm", "audio/mp4a-latm"), + MIME_M4P("audio", "mp4a-latm", "audio/mp4a-latm"), + MIME_M4U("video", "vnd.mpegurl", "video/vnd.mpegurl"), + MIME_M4V("video", "x-m4v", "video/x-m4v"), + MIME_MAC("image", "x-macpaint", "image/x-macpaint"), + MIME_MAN("application", "x-troff-man", "application/x-troff-man"), + MIME_MATHML("application", "mathml+xml", "application/mathml+xml"), + MIME_ME("application", "x-troff-me", "application/x-troff-me"), + MIME_MESH("model", "mesh", "model/mesh"), + MIME_MID("audio", "midi", "audio/midi"), + MIME_MIDI("audio", "midi", "audio/midi"), + MIME_MIF("application", "vnd.mif", "application/vnd.mif"), + MIME_MOV("video", "quicktime", "video/quicktime"), + MIME_MOVIE("video", "x-sgi-movie", "video/x-sgi-movie"), + MIME_MP2("audio", "mpeg", "audio/mpeg"), + MIME_MP3("audio", "mpeg", "audio/mpeg"), + MIME_MP4("video", "mp4", "video/mp4"), + MIME_MPE("video", "mpeg", "video/mpeg"), + MIME_MPEG("video", "mpeg", "video/mpeg"), + MIME_MPG("video", "mpeg", "video/mpeg"), + MIME_MPGA("audio", "mpeg", "audio/mpeg"), + MIME_MS("application", "x-troff-ms", "application/x-troff-ms"), + MIME_MSH("model", "mesh", "model/mesh"), + MIME_MXU("video", "vnd.mpegurl", "video/vnd.mpegurl"), + MIME_NC("application", "x-netcdf", "application/x-netcdf"), + MIME_ODA("application", "oda", "application/oda"), + MIME_ODB("application", "vnd.oasis.opendocument.database", "application/vnd.oasis.opendocument.database"), + MIME_ODC("application", "vnd.oasis.opendocument.chart", "application/vnd.oasis.opendocument.chart"), + MIME_ODF("application", "vnd.oasis.opendocument.formula", "application/vnd.oasis.opendocument.formula"), + MIME_ODG("application", "vnd.oasis.opendocument.graphics", "application/vnd.oasis.opendocument.graphics"), + MIME_ODI("application", "vnd.oasis.opendocument.image", "application/vnd.oasis.opendocument.image"), + MIME_ODM("application", "vnd.oasis.opendocument.text-master", "application/vnd.oasis.opendocument.text-master"), + MIME_ODP("application", "vnd.oasis.opendocument.presentation", "application/vnd.oasis.opendocument.presentation"), + MIME_ODS("application", "vnd.oasis.opendocument.spreadsheet", "application/vnd.oasis.opendocument.spreadsheet"), + MIME_ODT("application", "vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.text"), + MIME_OGG("audio", "ogg", "audio/ogg"), + MIME_OGV("video", "ogv", "video/ogv"), + MIME_OTG("application", "vnd.oasis.opendocument.graphics-template", "application/vnd.oasis.opendocument.graphics-template"), + MIME_OTH("application", "vnd.oasis.opendocument.text-web", "application/vnd.oasis.opendocument.text-web"), + MIME_OTP("application", "vnd.oasis.opendocument.presentation-template", "application/vnd.oasis.opendocument.presentation-template"), + MIME_OTS("application", "vnd.oasis.opendocument.spreadsheet-template", "application/vnd.oasis.opendocument.spreadsheet-template"), + MIME_OTT("application", "vnd.oasis.opendocument.text-template", "application/vnd.oasis.opendocument.text-template"), + MIME_PBM("image", "x-portable-bitmap", "image/x-portable-bitmap"), + MIME_PCT("image", "pict", "image/pict"), + MIME_PDB("chemical", "x-pdb", "chemical/x-pdb"), + MIME_PDF("application", "pdf", "application/pdf"), + MIME_PGM("image", "x-portable-graymap", "image/x-portable-graymap"), + MIME_PGN("application", "x-chess-pgn", "application/x-chess-pgn"), + MIME_PIC("image", "pict", "image/pict"), + MIME_PICT("image", "pict", "image/pict"), + MIME_PNG("image", "png", "image/png"), + MIME_PNM("image", "x-portable-anymap", "image/x-portable-anymap"), + MIME_PNT("image", "x-macpaint", "image/x-macpaint"), + MIME_PNTG("image", "x-macpaint", "image/x-macpaint"), + MIME_POTX("application", "vnd.openxmlformats-officedocument.presentationml.template", "application/vnd.openxmlformats-officedocument.presentationml.template"), + MIME_PPM("image", "x-portable-pixmap", "image/x-portable-pixmap"), + MIME_PPSX("application", "vnd.openxmlformats-officedocument.presentationml.slideshow", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"), + MIME_PPT("application", "vnd.ms-powerpoint", "application/vnd.ms-powerpoint"), + MIME_PPTX("application", "vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.openxmlformats-officedocument.presentationml.presentation"), + MIME_PS("application", "postscript", "application/postscript"), + MIME_QT("video", "quicktime", "video/quicktime"), + MIME_QTI("image", "x-quicktime", "image/x-quicktime"), + MIME_QTIF("image", "x-quicktime", "image/x-quicktime"), + MIME_RA("audio", "x-pn-realaudio", "audio/x-pn-realaudio"), + MIME_RAM("audio", "x-pn-realaudio", "audio/x-pn-realaudio"), + MIME_RAS("image", "x-cmu-raster", "image/x-cmu-raster"), + MIME_RDF("application", "rdf+xml", "application/rdf+xml"), + MIME_RGB("image", "x-rgb", "image/x-rgb"), + MIME_RM("application", "vnd.rn-realmedia", "application/vnd.rn-realmedia"), + MIME_ROFF("application", "x-troff", "application/x-troff"), + MIME_RPM("application", "x-rpm", "application/x-rpm"), + MIME_RTF("text", "rtf", "text/rtf"), + MIME_RTX("text", "richtext", "text/richtext"), + MIME_SGM("text", "sgml", "text/sgml"), + MIME_SGML("text", "sgml", "text/sgml"), + MIME_SH("application", "x-sh", "application/x-sh"), + MIME_SHAR("application", "x-shar", "application/x-shar"), + MIME_SILO("model", "mesh", "model/mesh"), + MIME_SIS("application", "vnd.symbian.install", "application/vnd.symbian.install"), + MIME_SIT("application", "x-stuffit", "application/x-stuffit"), + MIME_SKD("application", "x-koan", "application/x-koan"), + MIME_SKM("application", "x-koan", "application/x-koan"), + MIME_SKP("application", "x-koan", "application/x-koan"), + MIME_SKT("application", "x-koan", "application/x-koan"), + MIME_SLDX("application", "vnd.openxmlformats-officedocument.presentationml.slide", "application/vnd.openxmlformats-officedocument.presentationml.slide"), + MIME_SMI("application", "smil", "application/smil"), + MIME_SMIL("application", "smil", "application/smil"), + MIME_SND("audio", "basic", "audio/basic"), + MIME_SO("application", "octet-stream", "application/octet-stream"), + MIME_SPL("application", "x-futuresplash", "application/x-futuresplash"), + MIME_SRC("application", "x-wais-source", "application/x-wais-source"), + MIME_STC("application", "vnd.sun.xml.calc.template", "application/vnd.sun.xml.calc.template"), + MIME_STD("application", "vnd.sun.xml.draw.template", "application/vnd.sun.xml.draw.template"), + MIME_STI("application", "vnd.sun.xml.impress.template", "application/vnd.sun.xml.impress.template"), + MIME_STW("application", "vnd.sun.xml.writer.template", "application/vnd.sun.xml.writer.template"), + MIME_SV4CPIO("application", "x-sv4cpio", "application/x-sv4cpio"), + MIME_SV4CRC("application", "x-sv4crc", "application/x-sv4crc"), + MIME_SVG("image", "svg+xml", "image/svg+xml"), + MIME_SWF("application", "x-shockwave-flash", "application/x-shockwave-flash"), + MIME_SXC("application", "vnd.sun.xml.calc", "application/vnd.sun.xml.calc"), + MIME_SXD("application", "vnd.sun.xml.draw", "application/vnd.sun.xml.draw"), + MIME_SXG("application", "vnd.sun.xml.writer.global", "application/vnd.sun.xml.writer.global"), + MIME_SXI("application", "vnd.sun.xml.impress", "application/vnd.sun.xml.impress"), + MIME_SXM("application", "vnd.sun.xml.math", "application/vnd.sun.xml.math"), + MIME_SXW("application", "vnd.sun.xml.writer", "application/vnd.sun.xml.writer"), + MIME_T("application", "x-troff", "application/x-troff"), + MIME_TAR("application", "x-tar", "application/x-tar"), + MIME_TCL("application", "x-tcl", "application/x-tcl"), + MIME_TEX("application", "x-tex", "application/x-tex"), + MIME_TEXI("application", "x-texinfo", "application/x-texinfo"), + MIME_TEXINFO("application", "x-texinfo", "application/x-texinfo"), + MIME_TIF("image", "tiff", "image/tiff"), + MIME_TIFF("image", "tiff", "image/tiff"), + MIME_TORRENT("application", "x-bittorrent", "application/x-bittorrent"), + MIME_TR("application", "x-troff", "application/x-troff"), + MIME_TSV("text", "tab-separated-values", "text/tab-separated-values"), + MIME_TXT("text", "plain", "text/plain"), + MIME_USTAR("application", "x-ustar", "application/x-ustar"), + MIME_VCD("application", "x-cdlink", "application/x-cdlink"), + MIME_VRML("model", "vrml", "model/vrml"), + MIME_VXML("application", "voicexml+xml", "application/voicexml+xml"), + MIME_WAV("audio", "x-wav", "audio/x-wav"), + MIME_WAX("audio", "x-ms-wax", "audio/x-ms-wax"), + MIME_WBMP("image", "vnd.wap.wbmp", "image/vnd.wap.wbmp"), + MIME_WBXML("application", "vnd.wap.wbxml", "application/vnd.wap.wbxml"), + MIME_WEBM("video", "webm", "video/webm"), + MIME_WEBP("image", "webp", "image/webp"), + MIME_WM("video", "x-ms-wm", "video/x-ms-wm"), + MIME_WMA("audio", "x-ms-wma", "audio/x-ms-wma"), + MIME_WML("text", "vnd.wap.wml", "text/vnd.wap.wml"), + MIME_WMLC("application", "vnd.wap.wmlc", "application/vnd.wap.wmlc"), + MIME_WMLS("text", "vnd.wap.wmlscript", "text/vnd.wap.wmlscript"), + MIME_WMLSC("application", "vnd.wap.wmlscriptc", "application/vnd.wap.wmlscriptc"), + MIME_WMV("video", "x-ms-wmv", "video/x-ms-wmv"), + MIME_WMX("video", "x-ms-wmx", "video/x-ms-wmx"), + MIME_WRL("model", "vrml", "model/vrml"), + MIME_WVX("video", "x-ms-wvx", "video/x-ms-wvx"), + MIME_XBM("image", "x-xbitmap", "image/x-xbitmap"), + MIME_XHT("application", "xhtml+xml", "application/xhtml+xml"), + MIME_XHTML("application", "xhtml+xml", "application/xhtml+xml"), + MIME_XLAM("application", "vnd.ms-excel.addin.macroEnabled.12", "application/vnd.ms-excel.addin.macroEnabled.12"), + MIME_XLS("application", "vnd.ms-excel", "application/vnd.ms-excel"), + MIME_XLSB("application", "vnd.ms-excel.sheet.binary.macroEnabled.12", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"), + MIME_XLSX("application", "vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"), + MIME_XLTX("application", "vnd.openxmlformats-officedocument.spreadsheetml.template", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"), + MIME_XML("application", "xml", "application/xml"), + MIME_XPM("image", "x-xpixmap", "image/x-xpixmap"), + MIME_XSL("application", "xml", "application/xml"), + MIME_XSLT("application", "xslt+xml", "application/xslt+xml"), + MIME_XUL("application", "vnd.mozilla.xul+xml", "application/vnd.mozilla.xul+xml"), + MIME_XWD("image", "x-xwindowdump", "image/x-xwindowdump"), + MIME_XYZ("chemical", "x-xyz", "chemical/x-xyz"), + MIME_ZIP("application", "zip", "application/zip"), + ; + + private String type; + + private String subType; + + private String value; + + MimeType(String type, String subType, String value) { + this.type = type; + this.subType = subType; + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSubType() { + return subType; + } + + public void setSubType(String subType) { + this.subType = subType; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/xyz/wbsite/ai/StreamChat_Stop_Example.java b/src/main/java/xyz/wbsite/ai/StreamChat_Stop_Example.java new file mode 100644 index 0000000..b9a4824 --- /dev/null +++ b/src/main/java/xyz/wbsite/ai/StreamChat_Stop_Example.java @@ -0,0 +1,41 @@ +package xyz.wbsite.ai; + +import cn.hutool.core.thread.ThreadUtil; +import dev.langchain4j.model.ModelProvider; +import dev.langchain4j.model.chat.response.ChatResponse; +import dev.langchain4j.model.chat.response.StreamingChatResponseHandler; +import dev.langchain4j.model.openai.OpenAiStreamingChatModel; + +/** + * 简单的流式聊天示例 + */ +public class StreamChat_Stop_Example { + + public static void main(String[] args) { + + String question = "假如树上有10只鸟,10分钟前飞走了2只,5分钟前又飞回了1只,刚刚又来了3只,那现在树上有几只鸟?"; + + ThreadUtil.execAsync(new Runnable() { + @Override + public void run() { + OpenAiStreamingChatModel streamChatModel = Helper.getStreamChatModel(); + Helper.getStreamChatModel().chat(question, new StreamingChatResponseHandler() { + @Override + public void onPartialResponse(String s) { + System.out.print(s); + } + + @Override + public void onCompleteResponse(ChatResponse chatResponse) { + System.out.println("onComplete"); + } + + @Override + public void onError(Throwable throwable) { + System.err.println(throwable.getMessage()); + } + }); + } + }); + } +} \ No newline at end of file