自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 【LangChain4j】3-AIServices初次体验

本文介绍了LangChain4j的高级API AiServices,它通过封装底层组件简化了LLM应用的开发流程。文章首先展示了AiServices的快速入门示例,通过代理Assistant接口实现聊天功能;随后解析了AiServices的实现原理,包括代理机制和ChatModel集成;最后演示了如何将AiServices与ChatMemory结合,实现多用户对话记忆管理,并提到通过@MemoryId注解支持多用户场景。这些功能使开发者能更专注于业务逻辑而非底层实现。

2025-09-17 08:30:00 732

原创 【LangChain4j】2-ChatMemory与数据库处理

本文介绍了LangChain4j提供的ChatMemory接口类,用于简化与AI的多次聊天交互。主要包含两种删除旧信息的策略:MessageWindowChatMemory(按消息条数限制)和TokenWindowChatMemory(按token数量限制)。文章通过代码示例展示了这两种策略的实现方式,并指出TokenWindowChatMemory需要配合OpenAI使用。此外,还讨论了将聊天信息持久化的重要性,提供了InMemoryChatMemoryStore默认实现和PersistentChatMe

2025-09-15 08:30:00 763

原创 【LangChain4j】1-认识ChatModel

摘要: LangChain4j 1.4.0是一个支持Java 17的LLM框架,提供本地部署(如Ollama)和API调用两种大模型集成方式。通过Ollama可快速部署量化模型(如deepseek-r1),并通过低级API实现基础对话功能。框架支持ChatModel(批量响应)和StreamingChatModel(流式响应),允许消息历史管理、随机性调节(temperature参数)及JSON格式输出。示例代码展示了多轮对话和流式响应的实现,适合开发者快速集成AI能力。

2025-09-13 08:30:00 813

原创 java函数式编程(lambda)技巧

stream api在实际工作中基本上都会用上,支持函数式编程和链式操作,并且大多数情况下是惰性求值(一个Stream转换为另一个Stream时,实际上只存储了转换规则,并没有任何计算发生)。在实际工作中有很多对象集合要操作,就比较麻烦了,这时就可以通过结合泛型特性,造模板一次性解决。stream不只这些功能,还有很多的方法感兴趣的可以查找资料。流式虽好用,但不可滥用,在不合适的场景,宁愿使用for循环去处理业务逻辑,也不要去为了简洁而失去了本质。以上是个人的理解,如果有错误,请私聊我,感激不尽!

2025-07-01 11:03:41 797 1

原创 java泛型的巧妙利用

在实际工作中使用泛型能够很好的在编译阶段检测代码,并提示任何不符合规范的操作,从而确保代码的正确性和安全性。通过使用泛型能够在适当的场景,将功能抽象,减少代码的工作量,加强代码质量,提高工作效率。好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查,拟机对泛型其实一无所知,所有的工作都是编译器做的。在使用泛型时,可以使用super限制使用范围,例如?以上是个人的理解,如果有错误,请私聊我,感激不尽!:使用super是不能在类的泛型上使用,会编译错误。

2025-06-30 08:00:00 236

原创 java的引用传递和值传递

在实际工作中,一定会遇到值传递和引用传递,不注意就可以产生意想不到的bug。

2025-06-27 11:31:50 701

原创 学习java,谈谈对面向对象的理解。

面向对象1.什么是面向对象?我们可以不要面向对象吗,学面向对象的好处是什么?生活中的都是对象,在还没有学习面向对象时,就可以解决碰到的所有问题,java中有变量,有常量,可以解决复杂问题,只是解决问题的过程的较为复杂。例如定义一个学生,你可以定义一个类来解决,也可以定义多个变量,和多个方法解决。学完面向对象就知道抽象,封装,继承,多态,数据的修改只涉及对类里的操作(封装),可重用性强(继承...

2019-09-28 16:43:01 817

原创 重载和重写的定义与区别

重载和重写的定义重载是在同一个类中定义多个同名的方法,但每个方法中的有不同的参数,或者参数的个数不同。java会通过编译器匹配方法,如果找不到参数匹配的方法,或者多个相同的参数的方法,就会产生编译错误。下面给出一个例子public class Teacher { private String name;//姓名 private int old;//年龄 private...

2019-09-25 09:30:33 224

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除