当前位置: 首页 > article >正文

Langchain4j(3) Prompt 提示词工程 + PromptTemplate + SystemMessage 高级用法

一、LangChain4j 提示词Prompt核心三件套PromptTemplate提示词模板支持变量替换SystemMessage系统角色设定决定 AI 行为UserMessage/AiMessage对话消息载体二、基础PromptTemplate 变量替换package org.deepseek.demo08; import dev.langchain4j.model.input.Prompt; import dev.langchain4j.model.input.PromptTemplate; import java.util.Map; public class PromptTemplateDemo { public static void main(String[] args) { // 1. 定义带变量的模板 PromptTemplate template PromptTemplate.from( 你是专业的{{role}}请用{{style}}回答{{question}} ); // 2. 填入参数 Prompt prompt template.apply(Map.of( role, Java工程师, style, 简洁分点, question, 什么是JVM )); // 3. 输出最终提示词 System.out.println(prompt.text()); } }三、最常用SystemMessage 角色设定决定 AI 性格package org.deepseek.demo08; import dev.langchain4j.data.message.SystemMessage; import dev.langchain4j.data.message.UserMessage; import dev.langchain4j.data.message.ChatMessage; import dev.langchain4j.model.chat.ChatModel; import dev.langchain4j.model.openai.OpenAiChatModel; import java.util.List; public class SystemPromptDemo { public static void main(String[] args) { ChatModel model OpenAiChatModel.builder() .baseUrl(https://api.deepseek.com) .apiKey(sk-XXXXXXXXXXXXXXXXXXXX) .modelName(deepseek-chat) .build(); // 系统提示核心 SystemMessage system SystemMessage.from( 你是Java技术助手。 规则 1. 只回答技术问题 2. 回答简洁、分点 3. 不编造内容 ); UserMessage user UserMessage.from(ArrayList和LinkedList区别); ListChatMessage messages List.of(system, user); String answer model.chat(messages).aiMessage().text(); System.out.println(answer); } }四、SystemMessage定义角色和 AiServices 结合接口 SystemMessage写法一package org.deepseek.demo08; import dev.langchain4j.service.SystemMessage; import dev.langchain4j.service.UserMessage; public interface Assistant { SystemMessage( 你是代码审查助手。 只输出问题和优化建议不废话。 ) String review(UserMessage String code); }package org.deepseek.demo08; import dev.langchain4j.model.chat.ChatModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.service.AiServices; public class AssistantDemo { public static void main(String[] args) { ChatModel model OpenAiChatModel.builder() .baseUrl(https://api.deepseek.com) .apiKey(sk-XXXXXXXXXXXXXXXXXXXX) .modelName(deepseek-chat) .build(); // 系统提示核心 Assistant assistant AiServices.builder(Assistant.class) .chatModel(model) .build(); String result assistant.review(public class A{}); System.out.println(result); } }写法二:所有{{变量}}必须用V (变量名)绑定SystemMessage(你是{{role}}) // 变量1 UserMessage(用户问题{{question}}) // 变量2 String answer(V(role) String role,V(question) String question);package org.deepseek.demo08; import dev.langchain4j.model.chat.ChatModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.service.AiServices; public class AssistantDemo { public static void main(String[] args) { // 2. 模型 ChatModel model OpenAiChatModel.builder() .baseUrl(https://api.deepseek.com) .apiKey(sk-XXXXXXXXXXXXXXXXXX) .modelName(deepseek-chat) .build(); // 系统提示核心 Assistant assistant AiServices.builder(Assistant.class) .chatModel(model) .build(); String result assistant.answer( Java工程师, // 对应 {{role}} 什么是JVM // 对应 {{question}} ); // 输出结果 System.out.println(result); } }五、高级动态 SystemPrompt模板 变量package org.deepseek.demo08; import dev.langchain4j.data.message.ChatMessage; import dev.langchain4j.data.message.SystemMessage; import dev.langchain4j.data.message.UserMessage; import dev.langchain4j.model.chat.ChatModel; import dev.langchain4j.model.input.PromptTemplate; import dev.langchain4j.model.openai.OpenAiChatModel; import java.util.List; import java.util.Map; public class SystemPromptDemo { public static void main(String[] args) { ChatModel model OpenAiChatModel.builder() .baseUrl(https://api.deepseek.com) .apiKey(sk-XXXXXXXXXXXXXXXXXXXX) .modelName(deepseek-chat) .build(); // 写法一 // 静态文本无变量、不替换 Prompt systemPrompt Prompt.from(你是客服语言中文风格礼貌简洁); SystemMessage system1 systemPrompt.toSystemMessage(); // 写法二 // 真正的模板可传变量、自动替换 {{key}} PromptTemplate systemPromptTemplate PromptTemplate.from( 你是{{role}} 语言{{lang}} 风格{{style}} ); String systemText systemPromptTemplate.apply(Map.of( role, 客服, lang, 中文, style, 礼貌简洁 )).text(); SystemMessage system SystemMessage.from(systemText); UserMessage user UserMessage.from(你是); ListChatMessage messages List.of(system, user); String answer model.chat(messages).aiMessage().text(); System.out.println(answer); } }六、结构化输出专用强力 Prompt JSON 场景必备1.定义Json实体package org.deepseek.demo08; import java.util.List; public class UserIntent { private String intent; private ListString keywords; public UserIntent() { } public UserIntent(String intent, ListString keywords) { this.intent intent; this.keywords keywords; } public String getIntent() { return intent; } public void setIntent(String intent) { this.intent intent; } public ListString getKeywords() { return keywords; } public void setKeywords(ListString keywords) { this.keywords keywords; } }2. 定义SystemMessageSystemMessage( 你只输出标准JSON不输出任何解释、markdown、标点外文字。 输出格式 { intent: 意图, keywords: [] } ) UserIntent analyze(String text);3.对话package org.deepseek.demo08; import dev.langchain4j.model.chat.ChatModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.service.AiServices; public class UserIntentDemo { public static void main(String[] args) { ChatModel model OpenAiChatModel.builder() .baseUrl(https://api.deepseek.com) .apiKey(sk-XXXXXXXXXXXXXXXXXX) .modelName(deepseek-chat) .temperature(0.1) // 越低越稳定结构化必须低 .build(); Assistant assistant AiServices.builder(Assistant.class) .chatModel(model) .build(); String userText 你们的Java课程多少钱能不能优惠一点我有点着急报名; UserIntent result assistant.analyze(userText); // 4. 直接使用结构化数据 System.out.println(用户意图 result.getIntent()); System.out.println(关键词 result.getKeywords()); } }七、 Prompt 规则角色任务格式约束四段式最稳禁止 AI 自由发挥用 “只输出”“禁止”“必须”变量用{{key}}和模板引擎一致SystemMessage放第一条优先级最高ListChatMessage在SystemMessage、UserMessage中出现的所有{{变量}}必须用V (变量名)绑定到方法参数八、总结总结下来提示词一共就两种用法一种是对话时放到ListChatMessage中的第一条进行定义另一种就是使用SystemMessage注解进行定义

相关文章:

Langchain4j(3) Prompt 提示词工程 + PromptTemplate + SystemMessage 高级用法

一、LangChain4j 提示词(Prompt)核心三件套 PromptTemplate:提示词模板,支持变量替换 SystemMessage:系统角色设定(决定 AI 行为) UserMessage / AiMessage:对话消息载体 二、基础&a…...

OBS多路RTMP推流插件终极实战指南:一键实现多平台同步直播

OBS多路RTMP推流插件终极实战指南:一键实现多平台同步直播 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 在当今的多平台直播时代,内容创作者面临的最大挑战之一…...

Phi-4-Reasoning-Vision镜像免配置:双卡4090上1分钟完成15B模型加载实测

Phi-4-Reasoning-Vision镜像免配置:双卡4090上1分钟完成15B模型加载实测 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具。这款工具专为双卡RTX 4090环境优化,无需复杂配置即可快速部署…...

Zynq7000双核高效协作:共享内存管理与核间同步实战指南

1. Zynq7000双核系统基础架构解析 Zynq7000系列作为赛灵思的明星产品,其独特之处在于将ARM Cortex-A9双核处理器与可编程逻辑完美集成。我在工业控制项目中多次使用XC7Z020芯片,发现它的双核架构特别适合需要实时响应的场景。两个CPU核(CPU0和…...

抖音批量下载终极指南:5分钟掌握无水印视频下载完整方案

抖音批量下载终极指南:5分钟掌握无水印视频下载完整方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback sup…...

Windows任务栏透明化革命:TranslucentTB如何重新定义你的桌面体验

Windows任务栏透明化革命:TranslucentTB如何重新定义你的桌面体验 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否曾盯…...

保姆级教程:在Ubuntu 16.04上从零搭建复旦微FMQL芯片的Linux开发环境(含IAR/Procise/Petalinux)

复旦微FMQL芯片Linux开发环境搭建全指南:从零构建到实战部署 引言:为什么选择FMQL芯片进行嵌入式开发? 在当今嵌入式系统开发领域,国产芯片正逐渐崭露头角,复旦微电子推出的FMQL系列芯片凭借其高性能、低功耗和丰富的外…...

Qwen3.5-4B-Claude-Opus-GGUF惊艳效果:动态规划问题的状态转移方程推导

Qwen3.5-4B-Claude-Opus-GGUF惊艳效果:动态规划问题的状态转移方程推导 1. 模型能力概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个专注于推理和逻辑分析的AI模型,特别擅长处理需要分步骤解答的复杂问题。这个模型基于Qwen3.5-4B架构…...

Ostrakon-VL构建智能相册:基于内容的照片自动分类与搜索

Ostrakon-VL构建智能相册:基于内容的照片自动分类与搜索 1. 智能相册效果惊艳展示 想象一下,你的手机里有上万张照片,想找"去年夏天在海边拍的那张有狗狗和夕阳的照片"。传统相册只能靠记忆翻找,而基于Ostrakon-VL的智…...

Phi-4-reasoning-vision-15B应用创新:法律文书截图→法条关联+要点提炼

Phi-4-reasoning-vision-15B应用创新:法律文书截图→法条关联要点提炼 1. 法律文书处理的痛点与解决方案 在法律实务工作中,律师和法务人员经常需要处理大量法律文书截图。这些截图可能来自法院判决书、合同文本、法规条文等。传统处理方式存在几个明显…...

Qwen3-ASR-1.7B效果展示:嘈杂地铁站环境下的普通话指令识别实录

Qwen3-ASR-1.7B效果展示:嘈杂地铁站环境下的普通话指令识别实录 1. 真实场景下的语音识别挑战 在地铁站这样的嘈杂环境中进行语音识别,一直是语音技术面临的最大挑战之一。背景噪音、人声干扰、广播声、列车进站声等各种声音混杂在一起,让传…...

3步掌握专业歌词制作:开源LRC工具完全实战指南

3步掌握专业歌词制作:开源LRC工具完全实战指南 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 你是否曾为制作精准的歌词同步而烦恼?当音乐响…...

GLM-4-9B-Chat-1M开源模型安全实践:输入过滤、输出审核、角色权限控制

GLM-4-9B-Chat-1M开源模型安全实践:输入过滤、输出审核、角色权限控制 1. 模型部署与环境准备 GLM-4-9B-Chat-1M是智谱AI推出的新一代开源大模型,支持1M上下文长度(约200万中文字符),在多语言理解、长文本推理等方面…...

Wan2.2-I2V-A14B实战:基于JDK 1.8构建兼容性强的本地Java调用客户端

Wan2.2-I2V-A14B实战:基于JDK 1.8构建兼容性强的本地Java调用客户端 1. 引言:当老系统遇上新AI 很多企业都面临这样的困境:核心业务系统还在跑着JDK 1.8,但AI服务已经要求Java 11的环境。上周我就遇到一个制造业客户&#xff0c…...

Qwen3-VL-8B教育应用:为视障学生实时解说教材插图,打开视觉之窗

Qwen3-VL-8B教育应用:为视障学生实时解说教材插图,打开视觉之窗 想象一下,当一位视障学生翻开一本物理教材,面对描绘“光的折射”原理的复杂插图时,他只能依靠文字描述去想象那个看不见的世界。传统的辅助方式&#x…...

第7周报告

1.缺失值丢弃处理1.1表格内存在空白数据,影响数据信度,为减小误差,需丢弃缺失值1.21.2.1双击打开演示数据集。1.2.2点击缺失列,选择指定。1.2.3点击检查值,选择丢弃。1.2.4点击应用,点击设置。1.3空白的缺失…...

微信小程序开发实战:基于和风天气API的精准天气预报(含自动定位与源码解析)

1. 和风天气API申请与配置 第一次接触天气类小程序开发时,最让我头疼的就是API的选择。市面上虽然有不少天气数据提供商,但经过多次对比测试,我发现和风天气的免费开发版完全能满足个人开发者的需求。记得去年做第一个天气小程序时&#xff0…...

5分钟掌握Photoshop图层批量导出神器:Export-Layers-to-Files-Fast完全指南

5分钟掌握Photoshop图层批量导出神器:Export-Layers-to-Files-Fast完全指南 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Ad…...

EldenRingSaveCopier:艾尔登法环存档迁移终极解决方案

EldenRingSaveCopier:艾尔登法环存档迁移终极解决方案 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 你是否曾经花费数百小时在交界地奋战,却因存档损坏或设备更换而面临进度丢失的风…...

Cursor Free VIP:3步破解AI编程助手试用限制的终极指南

Cursor Free VIP:3步破解AI编程助手试用限制的终极指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tr…...

5分钟掌握pyvideotrans:让视频翻译配音变得像喝水一样简单

5分钟掌握pyvideotrans:让视频翻译配音变得像喝水一样简单 【免费下载链接】pyvideotrans Translate the video from one language to another and embed dubbing & subtitles. 项目地址: https://gitcode.com/gh_mirrors/py/pyvideotrans 还在为语言障碍…...

告别姿态依赖:基于DUSt3R与规范空间的高斯重建新范式

1. 为什么我们需要告别姿态依赖? 在传统3D重建领域,相机姿态(pose)一直是个让人又爱又恨的存在。就像盖房子需要先打好地基一样,大多数3D重建方法都需要准确的相机位置和角度信息作为基础。但现实情况是,获…...

Gemini在此国家无法使用3步一键解除地区限制实测教程

一、前言 2026年4月,AI大模型 技术迭代依旧火热,谷歌Gemini凭借强悍的多模态 处理、代码逻辑推理能力,依旧是不少开发者、职场人日常必备的AI工具。但很多小伙伴在使用时,都会碰到Gemini提示当前国家/地区无法使用的问题&#xff…...

仅限72小时!奇点大会闭门报告流出:多模态内容生成的3大伦理红线与5条合规生成铁律

第一章:2026奇点智能技术大会:多模态内容生成 2026奇点智能技术大会(https://ml-summit.org) 多模态生成范式的演进 2026年大会聚焦于统一架构驱动的跨模态对齐技术,强调文本、图像、音频与3D几何信号在隐空间中的联合表征学习。主流模型已…...

【浪潮信息KeyarchOS (KOS)】Lmbench实战指南:从安装到调优的全流程解析

1. Lmbench与KeyarchOS的黄金组合 第一次接触Lmbench是在三年前调试某金融客户的分布式存储集群时,当时系统频繁出现性能抖动却找不到原因。直到用Lmbench揪出了内存子系统的延迟异常,才意识到这套看似简单的工具组合竟有如此强大的诊断能力。而KeyarchO…...

【AIAgent安全架构黄金法则】:20年专家首曝3大权限失控漏洞与7层防御落地指南

第一章:AIAgent架构安全边界与权限控制 2026奇点智能技术大会(https://ml-summit.org) AI Agent 系统在生产环境中运行时,其执行链路天然跨越模型推理、工具调用、外部API访问、状态存储与用户交互等多个信任域。若缺乏明确的安全边界划分与细粒度权限控…...

WaveTools高性能帧率解锁技术解析:突破鸣潮游戏性能瓶颈的完整方案

WaveTools高性能帧率解锁技术解析:突破鸣潮游戏性能瓶颈的完整方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools作为一款专为《鸣潮》游戏设计的高性能工具箱,通过动态…...

在Photoshop中高效处理WebP图像:WebPShop插件全面指南

在Photoshop中高效处理WebP图像:WebPShop插件全面指南 【免费下载链接】WebPShop Photoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop 你是否曾经因为Photoshop无法直接保存WebP格式而感到困扰&am…...

SpringBean生命周期8步速记

实例化 → 属性填充 → 初始化 → 使用 → 销毁1. 实例化(Instantiation)加载配置,扫描类通过构造方法创建 Bean 实例(反射)此时对象刚创建,属性还都是默认值2. 属性填充(Populate Properties&a…...

biliTickerBuy:高效智能的B站会员购票辅助工具解决方案

biliTickerBuy:高效智能的B站会员购票辅助工具解决方案 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 在热门动漫展、演唱会门票一票难求的今天,biliTickerBuy为二次元…...