LangChain4j 特性介绍

LangChain4j Features   LangChain4j 特性:
Integration with 15+ LLM providers 集成15个以上的LLM
Integration with 20+ embedding (vector) stores  集成20个以上的向量存储
Integration with 15+ embedding models  向量模型
Integration with 5 image generation models 图片集成模型
Integration with 2 scoring (re-ranking) models 评分模型
Integration with one moderation model (OpenAI) 集成Open AI
Support for texts and images as inputs (multimodality) 支持文本和图片作为输入(多模态)
AI Services (high-level LLM API)
Prompt templates 提示词模板
Implementation of persistent and in-memory chat memory algorithms: message window and token window
Streaming of responses from LLMs 基于LLM的流式输出,就是一个字一个字输出
Output parsers for common Java types and custom POJOs
Tools (function calling) 函数调用TOOLS
Dynamic Tools (execution of dynamically generated LLM code)
RAG (Retrieval-Augmented-Generation):增强检索生成
Ingestion: 嵌入集成
Importing various types of documents (TXT, PDFs, DOC, PPT, XLS etc.) from multiple sources (file system, URL, GitHub, Azure Blob Storage, Amazon S3, etc.)
从多个来源(文件系统、URL、GitHub、Azure Blob Storage、Amazon S3等)导入各种类型的文档(TXT、PDF、DOC、PPT、XLS等)

Splitting documents into smaller segments using multiple splitting algorithms
使用多种分割算法将文档分割成更小的片段

Post-processing of documents and segments
文档和片段的Post处理

Embedding segments using embedding models
使用嵌入模型对片段进行嵌入

Storing embeddings in embedding (vector) store
将嵌入向量存储在嵌入(向量)存储中

Retrieval (simple and advanced):
检索(简单与高级):
Transformation of queries (expansion, compression)  查询转换(扩展、压缩)
Routing of queries 查询路由
Retrieving from vector store and/or any custom sources  从向量存储和/或任何自定义源中检索
Re-ranking 重新排序
Reciprocal Rank Fusion 互信息秩融合
Customization of each step in the RAG flow  RAG流程中每个步骤的定制
Text classification  文本分类
Tools for tokenization and estimation of token counts  分词工具和词数估算工具
Kotlin Extensions: Asynchronous non-blocking handling of chat interactions using Kotlin's coroutine capabilities.
Kotlin扩展:利用Kotlin的协程功能,

LangChain4j 是一个专为 Java 和 Kotlin 开发者设计的类 LangChain 框架,用于与大型语言模型(LLM)进行交互。它提供了类似 Python 中 LangChain 的功能,包括提示模板、链式调用、嵌入模型支持、向量数据库集成等。 --- ## 📘 LangChain4j 教程 ### 1. 环境准备 #### 添加依赖(以 Maven 为例) ```xml <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-core</artifactId> <version>0.26.0</version> </dependency> <!-- OpenAI 模型 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-openai</artifactId> <version>0.26.0</version> </dependency> <!-- 嵌入模型支持 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-embedding-all-minilm-l6-v2</artifactId> <version>0.26.0</version> </dependency> <!-- 向量存储 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-in-memory-embedding-store</artifactId> <version>0.26.0</version> </dependency> ``` 确保你已经在 [OpenAI](https://platform.openai.com/) 注册并获取了 API Key,并将其设置为环境变量或配置项。 --- ### 2. 快速开始:基本 LLM 调用 ```java import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.openai.OpenAiChatModel; public class BasicLLMExample { public static void main(String[] args) { ChatLanguageModel model = new OpenAiChatModel(System.getenv("OPENAI_API_KEY")); String response = model.generate("你好,请介绍一下你自己。"); System.out.println(response); } } ``` --- ### 3. 提示模板(Prompt Template) LangChain4j 支持使用模板来构造提示内容: ```java import dev.langchain4j.data.message.AiMessage; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.prompt.Prompt; import dev.langchain4j.prompt.PromptTemplate; import java.util.HashMap; import java.util.Map; public class PromptTemplateExample { public static void main(String[] args) { String template = "请根据以下信息写一段介绍:姓名是{name},职业是{profession}。"; PromptTemplate promptTemplate = PromptTemplate.from(template); Map<String, Object> variables = new HashMap<>(); variables.put("name", "张三"); variables.put("profession", "软件工程师"); Prompt prompt = promptTemplate.apply(variables); ChatLanguageModel model = new OpenAiChatModel(System.getenv("OPENAI_API_KEY")); AiMessage response = model.generate(prompt.messages()); System.out.println(response.content().text()); } } ``` --- ### 4. 链式调用(Chaining) 你可以将多个组件串联成一个链: ```java import dev.langchain4j.chain.ConversationalRetrievalChain; import dev.langchain4j.data.document.Document; import dev.langchain4j.data.document.loader.FileSystemDocumentLoader; import dev.langchain4j.data.segment.TextSegment; import dev.langchain4j.model.embedding.AllMiniLmL6V2EmbeddingModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.retriever.EmbeddingStoreRetriever; import dev.langchain4j.store.embedding.EmbeddingStore; import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore; import java.net.URL; import java.util.List; public class ChainExample { public static void main(String[] args) { // 加载文档 URL resource = ChainExample.class.getClassLoader().getResource("test.txt"); Document document = FileSystemDocumentLoader.loadDocument(resource); // 分段 List<TextSegment> segments = TextSegment.split(document.content(), 100); // 嵌入模型 AllMiniLmL6V2EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel(); // 计算嵌入 List<Embedding> embeddings = embeddingModel.embedAll(segments).content(); // 存储到内存中 EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>(); for (int i = 0; i < segments.size(); i++) { store.add(embeddings.get(i), segments.get(i)); } // 创建检索器 EmbeddingStoreRetriever<TextSegment> retriever = EmbeddingStoreRetriever.from(store, embeddingModel, 2); // 创建 LLM OpenAiChatModel chatModel = new OpenAiChatModel(System.getenv("OPENAI_API_KEY")); // 创建链 ConversationalRetrievalChain<TextSegment> chain = ConversationalRetrievalChain.from(chatModel, retriever); // 使用链提问 String answer = chain.invoke("量子计算是什么?"); System.out.println(answer); } } ``` --- ### 5. 内存管理(Memory) LangChain4j 支持对话记忆管理,可以保存历史记录: ```java import dev.langchain4j.memory.InMemoryChatMemory; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.service.AiServices; import dev.langchain4j.service.MemoryId; import dev.langchain4j.service.SystemMessage; public interface ChatBot { @SystemMessage("你是一个有帮助的助手。") String chat(@MemoryId int memoryId, String userMessage); } public class MemoryExample { public static void main(String[] args) { ChatLanguageModel model = new OpenAiChatModel(System.getenv("OPENAI_API_KEY")); ChatBot chatBot = AiServices.builder(ChatBot.class) .chatLanguageModel(model) .chatMemoryProvider(memoryId -> new InMemoryChatMemory()) .build(); int memoryId = 1; System.out.println(chatBot.chat(memoryId, "你好!")); System.out.println(chatBot.chat(memoryId, "我刚才说了什么?")); } } ``` --- ## ✅ 总结 LangChain4j 是 Java/Kotlin 开发者构建基于 LLM 应用程序的强大工具,主要特性包括: - **Prompt Templates**:构造结构化提示 - **Chains**:组合多个 AI 步骤 - **Embeddings & Retrieval**:支持文本嵌入和向量搜索 - **Memory**:支持会话记忆 - **Integration**:支持多种 LLM 提供商(如 OpenAI、Anthropic) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaojingsong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值