langchain4j框架学习

1. ChatModel:最核心的对话模型接口,负责接收用户消息,并返回 AI 的回复,是所有对话的基础。

2. 多模态 :模型能处理的不只是文本,还包括图像等。通过不同类型的 Message(如 UserMessage)来封装这些输入内容。

3. 系统提示词 :用来设定 AI 的角色、背景或规则。可以通过 Resource 引用外部的文本文件,然后放入 PromptTemplate 或消息工厂中,实现提示词与代码分离。

4. AI Service :框架的精髓。通过反射和动态代理,你定义一个接口,框架就自动帮你生成实现。它不仅是方法扩展,还能让你的接口方法返回 StringAiMessage,甚至是自定义的 POJO 类(配合结构化输出),让调用 LLM 像调用本地方法一样优雅。

5. 对话记忆 :实现多轮对话的基础。集成非常简洁,通过 ChatMemory 组件,它能自动获取聊天记录、添加新消息、拼接上下文,并记录 AI 的回复。支持滑动窗口、Token 截断等策略。

6. 结构化输出:把 LLM 生成的自由文本,转换成 Java 对象。有三种实现方式:

  • Prompt 模式:在提示词里要求 AI 返回特定格式(如 JSON),我们手动解析。

  • JSON Schema 模式(最精确):在请求中直接附上 JSON Schema,强制模型输出符合 Schema 的 JSON,再自动解析。

  • AI Service 模式:直接定义接口方法返回 POJO 类,框架底层自动帮你完成 Schema 生成、调用和解析全过程。

7. RAG 知识库:检索增强生成。在向 AI 提问前,先从外部知识库(如向量数据库)中,检索出与问题相关的文档片段,把这些片段和用户原始问题拼在一起,再发给 AI,让 AI 基于提供的知识来回答,有效减少模型"幻觉"。

8. 文档加载与切片:RAG 的上游环节。从 PDF、Word、网页等不同数据源加载文档,并按一定策略(如按段落、按字数)将长文档切分成适合向量化的小块(Chunks),以便后续检索。

9. 工具调用 :让 AI 能调用外部函数或 API。用 @Tool 注解把 Java 方法暴露给模型,模型会在需要时自主决定调用哪个工具、传入什么参数,是连接 LLM 与外部世界的"手脚"。

10. MCP(模型上下文协议) :一种标准化协议,目的是统一 AI 应用调用外部工具的方式。你可以通过 MCP Client 连接到一个 MCP Server ,从 Server 上发现并调用它提供的远程工具,解决了直接使用 @Tool 只能调用本地代码的局限。

11. 护轨:类似于拦截器或过滤器。可以在 AI 的输入或输出环节添加自定义逻辑,比如敏感词过滤、内容安全审核、格式校验等,为生产级应用提供安全保障。

12. 可观测性 :通过监听器(如 ChatModelListener)对模型调用的全过程进行日志记录、性能监控和链路追踪,方便运行时调试和问题定位。

13. 流式输出 :通过 TokenStream 或响应式流(Reactive Streams),将 AI 的回复一个字一个字地推送给前端,实现"打字机"效果,不用等完整结果生成,大幅提升用户体验。

14. Agent(智能代理) :一个能够感知环境、自主规划、调用工具来完成复杂目标的实体。LangChain4j 支持构建单 Agent 和多 Agent 系统,最新的 @Agent 注解能大幅简化开发。未来还会推出可视化的工作流编排工具(类似 LangGraph4j)。

15. 链与工作流:将多个组件(如模型、提示词模板、记忆、工具)按照业务逻辑顺序链接起来,形成一个可执行的流水线,比如"检索 -> 增强 -> 生成"就是一个典型的 RAG 链。

16. 嵌入模型与向量存储:RAG 的基石。嵌入模型负责将文本转化成向量(数学表示),向量数据库(如 Milvus, Redis, Chroma)则负责存储和检索这些向量,实现语义搜索。

17. 框架生态集成 :LangChain4j 可以与 Spring Boot、Quarkus、Micronaut 等主流 Java 框架无缝集成,让你在企业级项目中能像使用普通 Bean 一样使用 AI 组件。

相关推荐
devpotato2 分钟前
缓存与数据库更新顺序不一致问题
java·数据库·redis
xcl092513 分钟前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·spring boot·需求分析
Kyrie_kk23 分钟前
Java--IO--Path文件访问
java·后端
qinqinzqq27 分钟前
Maven POM 格式、Schema 与 XSD:一篇讲透
java·maven
o盟1 小时前
maven本地仓库有 总是去私仓中下载
java·maven·intellij-idea
devpotato1 小时前
Java 批量并发请求:从“能并发“到“结果按完成顺序可用“的三种写法与选型
java
苏生Susheng2 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
想要成为老金高手2 小时前
Kubernetes 调度器详解:从 nodeName 到污点容忍
java·容器·kubernetes
吴长建先生重名了2 小时前
ElasticSearch 检索系统性能优化实战:基准测试
java
西索斯coding2 小时前
doubao-seed-2.1-turbo 调用一直 401 怎么办?pro 版同样的 Key 却正常——5 分钟排查定位指南
java·服务器·数据库·ai