LangChain4j核心接口使用(三)Prompt 构建(指令对话)

张开发
2026/4/8 19:25:02 15 分钟阅读

分享文章

LangChain4j核心接口使用(三)Prompt 构建(指令对话)
一、Prompt1、定义在LangChain4j或大语言模型LLM的使用中Prompt指的是给模型的输入文本用来告诉模型“你要做什么、怎么做”。它是 LLM 工作的核心因为模型的输出完全依赖于你给的 prompt。使用建议清晰明确越具体模型输出越准确指令 上下文结合系统指令 用户消息 记忆可复用模板用PromptTemplate可以批量生成 prompt提高开发效率控制长度避免 prompt 太长导致 token 超限2、核心作用定义任务告诉模型你想要做什么生成文本、回答问题、翻译、摘要、代码等提供上下文包含对话历史、系统指令或外部信息控制风格/格式指定输出的语气、格式或结构如 JSON、Markdown、代码块等3、常用场景场景Prompt 的作用示例问答给模型问题和上下文让它回答“请根据下面的文档回答问题…”翻译指定源语言、目标语言“将下面英文翻译成中文…”摘要告诉模型对文本做压缩总结“请将以下文章总结成 3 点要点…”代码生成/辅助编程指定功能或需求让模型生成代码“请用 Java 写一个 HTTP 请求工具类…”多轮对话提供对话历史让模型延续上下文“用户: … AI: … 用户: … 继续回答”格式化输出指定输出格式如 JSON 或表格“请将以下数据转成 JSON…”指令执行让模型执行某种操作或决策“你是一个数学老师请解释这个公式…”4、类型系统级 PromptSystem Prompt定义模型角色和行为示例“你是一个经验丰富的 Java 开发专家”用户级 PromptUser Prompt用户提问或请求的内容示例“帮我写一个快速排序的实现”上下文 PromptContext / Memory来自Memory的对话历史或外部数据示例模型在生成回答时参考最近 5 条消息或摘要模板 PromptPromptTemplate可以用变量动态生成 Prompt示例“请将文本 {text} 翻译成中文”然后替换{text}5、实现方法5.1 单轮Promptimport dev.langchain4j.model.chat.ChatMessage; import dev.langchain4j.model.chat.openai.OpenAiChatModel; public class PromptExample { public static void main(String[] args) { OpenAiChatModel model OpenAiChatModel.builder() .apiKey(你的OPENAI_API_KEY) .model(gpt-3.5-turbo) .build(); // 用户 Prompt String prompt 请帮我写一段 Java 方法用于计算数组的平均值; // 调用模型 String response model.chat(prompt).getText(); System.out.println(模型输出\n response); } }5.2 多轮对话 窗口记忆import dev.langchain4j.memory.MessageWindowMemory; import dev.langchain4j.model.chat.openai.OpenAiChatModel; public class MultiTurnPromptExample { public static void main(String[] args) { OpenAiChatModel model OpenAiChatModel.builder() .apiKey(你的OPENAI_API_KEY) .model(gpt-3.5-turbo) .build(); // 创建短期记忆保存最近5条消息 MessageWindowMemory memory new MessageWindowMemory(5); // 用户第一条消息 String userMessage1 你好请帮我写一个 Java 方法计算数组平均值; memory.addUserMessage(userMessage1); // 调用模型 String response1 model.chat(memory.getMessages(), 生成方法代码).getText(); memory.addAiMessage(response1); System.out.println(AI 第一次输出\n response1); // 用户第二条消息 String userMessage2 请加上异常处理如果数组为空返回0; memory.addUserMessage(userMessage2); // 调用模型传入 memory.getMessages() 保持上下文 String response2 model.chat(memory.getMessages(), 修改方法代码).getText(); memory.addAiMessage(response2); System.out.println(AI 第二次输出\n response2); } }5.3 PromptTemplate动态模板生成import dev.langchain4j.prompt.PromptTemplate; PromptTemplate template PromptTemplate.builder() .template(请将下面的文本翻译成中文\n{text}) .build(); String text Hello, how are you?; String prompt template.format(Map.of(text, text)); // 然后像之前一样调用模型 String response model.chat(prompt).getText(); System.out.println(response);

更多文章