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

【LangChain4J】提示词工程

git地址

官方对2种ChatMessage的解释

  • SystemMessage这是系统发送的消息。通常,作为开发人员,您应该定义此消息的内容。一般来说,您会在此处编写指令,说明 LLM 在此对话中的角色、行为方式、回复风格等等。LLM 经过训练,会更加关注SystemMessage此类消息,因此请务必谨慎,最好不要让最终用户随意定义或向消息中添加任何内容SystemMessage。通常,此消息位于对话的开头。
  • UserMessage这是一条来自用户的消息。用户可以是应用程序的最终用户(人),也可以是应用程序本身。消息内容可以包含:
    contents():消息的内容。根据 LLM 支持的模态,它可以只包含单个文本(String),或其他模态)。
    name()用户名。并非所有模型提供商都支持此功能。
    attributes():附加属性:这些属性不会发送到模型,而是存储在ChatMemory。

第一种,面向注解

public interface EducationAssistant {@SystemMessage("你是一位专业的教育领域专家,只回答教育领域的问题。" +"输出限制:对于其他领域的问题禁止回答,直接返回‘抱歉,我只能回答教育相关问题’")@UserMessage("请回答以下教育问题:{{question}},字数控制在{{length}}以内,以{{format}}格式输出")String educationQuestion(@V("question") String question,@V("length") String length,@V("format") String format);
}
@GetMapping("/chat/prompt1")public String chatPrompt1(){String result = educationAssistant.educationQuestion("教育的本质是什么", "2000", "html");String result2 = educationAssistant.educationQuestion("什么是西瓜", "2000", "html");return result + " <br> \n\n" + result2;}

第二种,面向对象

public interface EducationAssistant {@SystemMessage("你是一位专业的教育领域专家,只回答教育领域的问题。" +"输出限制:对于其他领域的问题禁止回答,直接返回‘抱歉,我只能回答教育相关问题’")String educationQuestionByStructuredPrompt(EducationPrompt educationPrompt);
}
@Data
@StructuredPrompt("请针对{{age}}岁孩子,回答以下问题:{{question}}") //需要在实体类上加上这个注解
public class EducationPrompt {private String age;private String question;
}
@GetMapping("/chat/prompt2")public String chatPrompt2(){EducationPrompt educationPrompt = new EducationPrompt();educationPrompt.setAge("8");educationPrompt.setQuestion("孩子兴趣班如何安排");String result = educationAssistant.educationQuestionByStructuredPrompt(educationPrompt);return result;}

第三种,使用Prompt

@GetMapping("/chat/prompt3")public String chatPrompt3(){PromptTemplate template = PromptTemplate.from("根据教育相关知识,回答以下问题:{{it}}");Prompt apply = template.apply(Map.of("it", "幼儿孩子生长中需要注意什么"));UserMessage userMessage = apply.toUserMessage();ChatResponse chatResponse = chatModel.chat(userMessage);return chatResponse.aiMessage().text();}
http://www.jsqmd.com/news/116293/

相关文章:

  • OpenAI官方论文“泄密”GPT-5:RL到底有没有教坏CoT?万字深度实测
  • PolyDataToImageDataStencil如何用多边形数据作为“模板”来裁剪或屏蔽图像数据
  • 【无功优化】基于改进遗传算法的电力系统无功优化研究【IEEE30节点】(Matlab代码实现)
  • 上海交大《科学》发文,首次实现支持大模型的全光计算芯片
  • Linly-Talker支持模型灰度发布,逐步上线新功能
  • Linly-Talker开源镜像部署指南(含GPU加速优化)
  • 考虑实时市场联动的电力零售商鲁棒定价策略(Matlab代码实现)
  • 用Linly-Talker制作节日祝福视频?个性化礼品新创意
  • 可计算性:物理世界和意识
  • 【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)​
  • Linly-Talker支持多线程推理,高并发场景从容应对
  • 用Linly-Talker生成股票行情分析视频?金融内容自动化
  • Linly-Talker如何处理中英文混读?语音识别适配策略
  • Linly-Talker支持模型热切换,A/B测试轻松实现
  • 【虚拟同步机控制建模】三相虚拟同步发电机双环控制(Simulink仿真实现)
  • 途知抖音多模态数据采集与AI融合解析
  • AI教师上岗记:Linly-Talker在K12教育中的实际效果测评
  • 人生的机会,从来不在计划之中?(说说我在百度的故事...)
  • 海南自由贸易港全岛封关首日,西门子能源在海南启动建设燃机总装基地及服务中心 | 美通社头条
  • Linly-Talker音频频谱可视化:调试语音合成质量的利器
  • 复星与比亚迪达成全球战略合作,引领“出行+度假“新生态
  • cesium126,230816,Ce for Ue 加载服务器上的地图(GeoServerWMS):
  • 用Linly-Talker生成旅游景点解说视频?文旅宣传新手段
  • Linly-Talker如何应对长文本输入?分段处理策略解析
  • Linly-Talker音频响度标准化,符合广电播出规范
  • 万字长文!关于AI绘图,一篇超详细的总结发布
  • 【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)
  • Linly-Talker支持模型加密传输,防止中间人攻击
  • Linly-Talker如何保证语音时序对齐?CTC损失函数应用解析
  • Linly-Talker支持CUDA核心监控,实时掌握GPU利用率