LangChain4j入门:链式AI任务拆解
在你的 Maven 或 Gradle 项目中引入 LangChain4j 的核心库以及你计划使用的 LLM 提供商的适配器库(如 OpenAI, HuggingFace, LocalAI 等)。LangChain4j 的核心思想是将复杂的任务拆解为一系列可组合的步骤(链接),形成一个“链”。创建一个连接到你选择的 LLM 服务的客户端实例。)、记忆管理、工具调用(让模型使用外部工具或函数)等高级功
核心概念:链 (Chain)
LangChain4j 的核心思想是将复杂的任务拆解为一系列可组合的步骤(链接),形成一个“链”。这有助于模块化、复用和更清晰的逻辑。
基本使用步骤
-
添加依赖 在你的 Maven 或 Gradle 项目中引入 LangChain4j 的核心库以及你计划使用的 LLM 提供商的适配器库(如 OpenAI, HuggingFace, LocalAI 等)。例如,对于 OpenAI:
<!-- Maven --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> <version>0.28.0</version> <!-- 请使用最新版本 --> </dependency> -
配置 LLM 客户端 创建一个连接到你选择的 LLM 服务的客户端实例。这通常需要提供 API 密钥或其他认证信息。
import dev.langchain4j.model.openai.OpenAiChatModel; // 使用 OpenAI (需要 OPENAI_API_KEY 环境变量) OpenAiChatModel model = OpenAiChatModel.builder() .modelName("gpt-3.5-turbo") // 指定模型 .temperature(0.3) // 控制随机性 .build(); -
创建并执行链 最简单的链是直接向模型发送消息并获取回复。
String userMessage = "Java-LangChain4j 的基本使用是怎样的?"; String response = model.generate(userMessage); System.out.println(response); -
使用 Prompt Templates (提示模板) 为了更结构化地生成输入,可以使用提示模板。模板中可以用
{{variable}}的形式定义占位符。import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.model.input.Prompt; import dev.langchain4j.model.input.structured.StructuredPrompt; import dev.langchain4j.model.input.template.Template; // 定义模板 Template template = Template.from("请用 {{language}} 解释 {{framework}} 的基本使用。"); // 填充模板变量 Prompt prompt = template.render("language", "中文", "framework", "Java-LangChain4j"); // 发送给模型 String response = model.generate(prompt.text()); System.out.println(response); -
结构化输出 有时我们希望模型的输出是结构化的(如 JSON 对象)。可以结合提示模板和
@StructuredPrompt注解来引导模型。import dev.langchain4j.model.output.Response; import dev.langchain4j.model.output.structured.Description; import dev.langchain4j.model.output.structured.StructuredOutput; @StructuredOutput public class FrameworkInfo { @Description("框架的名称") public String name; @Description("核心概念,用逗号分隔") public String coreConcepts; @Description("一个简单的使用示例代码片段") public String exampleCode; } // 在提示中要求结构化输出 Template template = Template.from("请提供关于 {{framework}} 的基本信息,包括名称、核心概念和一个简单示例代码。\n{{format_instructions}}"); // ... 填充模板,特别注意 format_instructions 需要描述 FrameworkInfo 的结构 Prompt prompt = ...; // 获取结构化响应 Response<FrameworkInfo> response = model.generate(prompt, FrameworkInfo.class); FrameworkInfo info = response.content(); System.out.println("名称: " + info.name); System.out.println("核心概念: " + info.coreConcepts); System.out.println("示例:\n" + info.exampleCode);
常见应用场景
- 问答系统:基于特定文档或知识库回答问题。
- 摘要生成:总结长文本内容。
- 文本生成:撰写邮件、故事、代码等。
- 数据提取:从非结构化文本中提取结构化信息。
- 翻译:文本翻译。
- 聊天机器人:构建对话接口。
注意事项
- API 成本与限制:注意 LLM API 的调用成本和速率限制。
- 提示工程:提示 (Prompt) 的质量对输出结果影响巨大,需要精心设计。
- 错误处理:网络错误、API 限制、模型错误等都需要妥善处理。
- 内容安全:对模型生成的内容进行必要的安全检查和过滤。
- 模型选择:不同的模型在能力、成本和速度上有差异,需根据需求选择。
- 并发:
OpenAiChatModel等客户端通常是线程安全的,可以安全地在多线程环境中使用。
以上介绍了 LangChain4j 最基础的使用方式。实际应用中,你会接触到更复杂的链结构(如 SequentialChain、ConditionalChain)、记忆管理、工具调用(让模型使用外部工具或函数)等高级功能。建议从官方文档和示例开始深入学习。
更多推荐



所有评论(0)