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

一、Prompt

1、定义

LangChain4j 或大语言模型(LLM)的使用中,Prompt 指的是给模型的输入文本,用来告诉模型"你要做什么、怎么做"。它是 LLM 工作的核心,因为模型的输出完全依赖于你给的 prompt。

使用建议:

  • 清晰明确:越具体,模型输出越准确

  • 指令 + 上下文结合:系统指令 + 用户消息 + 记忆

  • 可复用模板 :用 PromptTemplate 可以批量生成 prompt,提高开发效率

  • 控制长度:避免 prompt 太长导致 token 超限

2、核心作用

  • 定义任务:告诉模型你想要做什么(生成文本、回答问题、翻译、摘要、代码等)

  • 提供上下文:包含对话历史、系统指令或外部信息

  • 控制风格/格式:指定输出的语气、格式或结构(如 JSON、Markdown、代码块等)

3、常用场景

场景 Prompt 的作用 示例
问答 给模型问题和上下文,让它回答 "请根据下面的文档回答问题:..."
翻译 指定源语言、目标语言 "将下面英文翻译成中文:..."
摘要 告诉模型对文本做压缩总结 "请将以下文章总结成 3 点要点:..."
代码生成/辅助编程 指定功能或需求,让模型生成代码 "请用 Java 写一个 HTTP 请求工具类:..."
多轮对话 提供对话历史,让模型延续上下文 "用户: ... AI: ... 用户: ... 继续回答"
格式化输出 指定输出格式,如 JSON 或表格 "请将以下数据转成 JSON:..."
指令执行 让模型执行某种操作或决策 "你是一个数学老师,请解释这个公式:..."

4、类型

  • 系统级 Prompt(System Prompt)

    • 定义模型角色和行为

    • 示例:"你是一个经验丰富的 Java 开发专家"

  • 用户级 Prompt(User Prompt)

    • 用户提问或请求的内容

    • 示例:"帮我写一个快速排序的实现"

  • 上下文 Prompt(Context / Memory)

    • 来自 Memory 的对话历史或外部数据

    • 示例:模型在生成回答时参考最近 5 条消息或摘要

  • 模板 Prompt(PromptTemplate)

    • 可以用变量动态生成 Prompt

    • 示例:"请将文本 {text} 翻译成中文",然后替换 {text}

5、实现方法

复制代码
简单地说,就是把上面的mode.generate改成model.chat,
  • chat() = 对话专用,更容易处理上下文和多轮

  • generate() = 生成专用,灵活且可处理非对话任务

特性 chat() generate()
主要用途 对话 / 聊天 通用文本生成
输入 单条 prompt 或消息列表(Message) prompt 或 PromptSequence
输出 单条文本 / ChatResult Generation 对象,可包含多条候选
支持多轮对话 ✅ (结合 Memory) ❌ (一般用于单轮生成)
适用场景 聊天机器人、对话应用 批量文本生成、问答、指令执行、填空任务

5.1 单轮Prompt

复制代码
import 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);

二、demo

前面的代码,使用prompt看下效果:

再把generate改成chat

相关推荐
半路_出家ren9 分钟前
1.古典密码概述
python·网络安全·密码学·古典密码·加密方式
爱敲代码的小鱼37 分钟前
事务核心概念与隔离级别解析
java·开发语言·数据库
CJenny38 分钟前
Claude Code常用操作和使用方法
人工智能·python
小冷coding1 小时前
【Java】遇到微服务接口报错导致系统部分挂掉时,需要快速响应并恢复,应该怎么做呢?如果支付服务出现异常如何快速处理呢?
java·开发语言·微服务
星火开发设计1 小时前
二维数组:矩阵存储与多维数组的内存布局
开发语言·c++·人工智能·算法·矩阵·函数·知识
夜勤月1 小时前
彻底终结内存泄漏与悬挂指针:深度实战 C++ 智能指针底层原理与自定义内存池,打造稳如泰山的系统基石
开发语言·c++
HeisenbergWDG1 小时前
线程实现runnable和callable接口
java·开发语言
事橙19991 小时前
KITTI数据集国内下载链接
人工智能·python·yolo
少控科技1 小时前
QT新手日记028 QT-QML所有类型
开发语言·qt
HarmonLTS2 小时前
Python人工智能深度开发:技术体系、核心实践与工程化落地
开发语言·人工智能·python·算法