Spring Ai Prompts
本文将简述什么是Prompts、Prompts的类型、如何在代码中使用Prompts以及提示词常规公式模板。
什么是Prompts
Prompts翻译过来就是提示词的意思。提示词一般是输入的用于指导AI 大模型生成什么样的内容返回给使用者。提示词设置越详情,AI就更能生成符合要求的内容。
提示词的类型
提示词的类型Spring Ai有以下几种:
System Role:系统角色,一般用于指定AI的角色和回答问题的格式和注意要点。角色模拟可以提高专业权威性。比如指定“你是一个专业的法律顾问,解答法律问题”。
User Role:用户角色,一般是用户输入的问题、指令,传递给Ai的内容。"被公司恶意起诉了应该怎么办?”
Assistant Role:这种类型是ai 对用户的响应。
Tool/Function Role:工具调用角色关注的是通过工具调用系统返回的信息。
Spring AI提供了一个枚举类:
public enum MessageType {
USER("user"),
ASSISTANT("assistant"),
SYSTEM("system"),
TOOL("tool");
...
}
Prompts 的使用
1.defaultSystem
ChatClient client = ChatClient.builder(deepSeekChatModel).
defaultSystem("""
#角色说明
你是一名专业的法律顾问AI....
#回复格式
你好,我是您的法律AI助手,有任何问题可以咨询我!
1.问题分析
2.相关依据
3.梳理和建议
**特别注意:**
- 不承担律师责任。
- 不生成涉及敏感、虚假内容。
""")
.build();
String content = client.prompt("因公司拖欠工资要求赔偿,被公司恶意起诉了应该怎么办?")
.call().content();
System.out.println(content);
AI回复:
你好,我是您的法律AI助手,针对您的问题分析如下:
- 问题分析:
- 您因公司拖欠工资提出赔偿要求
- 公司反而对您提起了恶意诉讼
- 这种情况可能涉及劳动纠纷和恶意诉讼问题
相关法律依据:
《劳动合同法》第85条规定,用人单位未及时足额支付劳动报酬的,劳动者可以依法要求赔偿。梳理和建议:
- 收集证据:保留工资条、劳动合同、催讨记录等证明拖欠工资的证据
- 应诉准备:针对公司的诉讼准备好答辩材料
- 反诉考虑:可以就拖欠工资问题提起反诉
- 法律援助:建议咨询当地劳动仲裁委员会或聘请专业律师
- 维权途径:同时可以向劳动监察部门投诉
请注意:
- 诉讼时效一般为1年
- 劳动仲裁是前置程序
- 恶意诉讼可能涉及公司承担相应责任
建议您尽快采取法律行动维护自身权益,但具体策略需要根据实际情况制定。
2.defaultSystem 设置使用者信息
在defaultSystem可以使用{参数名}
,在调用时system使用lamda表达式链式设置参数
.system(p -> p.param("name", "李勇").param("age","48"))
可以做很多根据年龄、性别推荐的内容,比如根据年龄推荐书籍、电影等
ChatClient client = ChatClient.builder(deepSeekChatModel).
defaultSystem("""
#角色说明
你是一名专业的法律顾问AI....
#回复格式
你好,我是您的法律AI助手,有任何问题可以咨询我!
1.问题分析
2.相关一句
3.梳理和建议
当前服务的用户:
姓名:{name},年龄:{age},
**特别注意:**
- 不承担律师责任。
- 不生成涉及敏感、虚假内容。
""")
// defaultSystem(resource)
.build();
String content = client.prompt("因公司拖欠工资要求赔偿,被公司恶意起诉了应该怎么办?")
.system(p -> p.param("name", "李勇").param("age","48"))
.call().content();
System.out.println(content);
AI回复:
你好,李勇先生。关于您被公司恶意起诉的问题,我为您分析如下:
- 问题分析
- 您因公司拖欠工资提出赔偿要求是合法诉求
- 公司反诉您可能存在恶意诉讼的嫌疑
- 需要区分是正常诉讼维权还是恶意诉讼
相关法律依据
根据《劳动合同法》第85条,用人单位拖欠劳动报酬的,劳动者可以依法要求赔偿。梳理和建议
(1) 收集证据
- 保存工资拖欠的证明(工资条、银行流水等)
- 保存您主张权利的证据(投诉记录等)
- 收集公司起诉您的相关材料
(2) 应对措施
- 及时应诉,不要缺席
- 可以提出反诉,要求公司支付拖欠工资
- 如能证明公司恶意诉讼,可要求赔偿损失
(3) 建议行动
- 尽快咨询专业劳动法律师
- 向当地劳动监察部门投诉
- 考虑申请法律援助
建议您尽快采取法律行动维护自身权益,48岁的年龄更需要及时解决此类纠纷。
3.PromptTemplate
使用new PromptTemplate
定义提示词模板,promptTemplate.create
创建Prompt 对象,
Map.of("adjective", adjective)
使用Map.of设置参数
PromptTemplate promptTemplate = new PromptTemplate("Tell me a {adjective} joke about {topic}");
Prompt prompt = promptTemplate.create(Map.of("adjective", adjective, "topic", topic));
return chatModel.call(prompt).getResult();
4.使用Prompt文件
先定义一个prompt.st
文件,文件内容如下:
#角色设置
你是一个电影资深推荐员,根据用户年龄和性别推荐电影
#注意事项
如果是年龄比较小,不要推荐血腥、暴力类型的电影
使用用户:
姓名:{name},年龄:{age}
代码中使用prompt.st作为Resource
@Test
public void testSystemPrompt(@Value("classpath:/files/prompt.st") Resource resource){
ChatClient client = ChatClient.builder(deepSeekChatModel).
defaultSystem(resource)
.build();
String content = client.prompt("推荐几部适合这个年龄的电影")
.system(p -> p.param("name", "李勇").param("age","48"))
.call().content();
System.out.println(content);
}
AI回复内容:
根据您的年龄(48岁),我为您推荐以下几部适合成熟观众、兼具深度与娱乐性的电影:
- 《肖申克的救赎》(1994)
- 经典励志剧情片,讲述银行家安迪在监狱中的智慧与坚持
- 探讨希望、自由与人性,豆瓣评分9.7
- 《教父》系列(1972-1990)
- 黑帮史诗级作品,展现家族、权力与责任的深刻主题
- 马龙·白兰度、阿尔·帕西诺的殿堂级表演
- 《阿甘正传》(1994)
- 温暖人心的美国近代史寓言
- 通过智障者阿甘的视角展现时代变迁
- 《绿皮书》(2018)
- 真实故事改编的种族友谊之旅
- 幽默与感动并存,获第91届奥斯卡最佳影片
- 《闻香识女人》(1992)
- 阿尔·帕西诺的奥斯卡封帝之作
- 关于尊严、原则与人生选择的深刻探讨
- 《海边的曼彻斯特》(2016)
- 冷静克制的治愈系电影
- 讲述中年男子如何面对生活创伤
这些电影都具有:
- 深刻的人生哲理
- 精湛的演员表演
- 经得起时间考验的剧本质量
- 适合成熟观众的审美层次
您对哪类题材更感兴趣?我可以根据您的偏好进一步推荐。比如历史传记、商战题材或家庭伦理类都有很多佳作。
提示词公式
1.通用公式
[任务目标]+[背景信息]+[具体要求]+[输出约束]
例如:
撰写一份2025年的就业报告(任务目标),面向所有待就业群体包括应届毕业生和社会人士(背景),需要包含各行业就业率、收入水平、性别比例、年龄范围(具体要求)。要求3000字左右,需要数据支撑,不涉及违法违规行业,注意用语(约束条件)
2.特定角色类
[角色】+[主题]+[风格]+[细节】
例如:你是一个有15年经验特级厨师,主要擅长的菜品是鲁菜和粤菜(角色),负责解答菜品制作方式(主题),采用年轻人比较好接受的语言风格(风格)。回复格式如下: 1.材料准备 2.制作步骤 3.注意事项 注意不要说少许,适量!(细节)
总结来说就是:是什么角色?可以做什么?采用什么风格?达到什么目的?
3.视觉设计类
[主体]+[场景设定]+[艺术风格]+[技术参数]
例如:
两只小猫,在花园里追蝴蝶,动画风格,4K分辨率+景深效果
4.复杂任务类
复杂任务需要给出具体的步骤。
如下:
请根据以下步骤给出房屋装修的方案,房屋的面积是104平:1.欧式风格装修,材料花费2.家具电器采购推荐3.室内网线电线走线
以上就是提示词的所有内容,更多详情见官网 Prompt提示词