大家好,我是 31 岁依旧热爱折腾的小米~最近在研究 Spring AI 的时候,彻底被“提示词”这玩意儿惊艳到了。一句话的魔法,能让大模型从“胡说八道”秒变“有求必应”。今天我就给大家讲讲:Spring AI 里的提示词(Prompt)到底有多神奇,以及我们该怎么驯服它!
那天我写了一个“hello world”的 Spring AI 程序
说实话,刚用上 Spring AI 的时候,我还满脑子想着“这不就是调用一下大模型接口嘛”,结果调通后输出了一堆不着边际的文字……我明明让它介绍一下 Java,它却给我整了一段鸡汤?
这时候我才意识到,不是模型不行,是我不会“提问” 。换句话说,提示词写得不行。
于是,我就开始研究 Spring AI 的提示词体系,发现这玩意儿比我想象中要强大一百倍!
Spring AI 提示词 API 详解
1. Prompt:一句话的魔法开关
Prompt 是最基本的单元,本质上就是你给模型的输入,但在 Spring AI 里,它不只是个字符串,它可以是:
或者更灵活的 PromptTemplate,后面讲。
2. Message:让对话“活”起来
你有没有用过那种 Chat 模式?你一句、我一句。
在 Spring AI 中,这种对话由 Message 组成:
可以通过一组 Message 来模拟完整对话,这在聊天机器人和历史上下文理解中特别重要!
3. 角色设定:你是谁,你要怎么回答我?
大模型其实是“演员”,你得告诉它演啥角色。比如:
这句 SystemMessage 的作用就像告诉模型:“打住,你现在是老师,别乱跑题。”
4. PromptTemplate:可复用、可填空的提示词
你写过模板引擎吧?PromptTemplate 就是提示词里的模板引擎!
然后你填空:
生成出来的 Prompt 就是:“请用Java写一段冒泡排序代码”。这玩意太适合封装调用了!
提示工程:如何说一句话,让 AI 变得聪明
从我那次“胡说八道”体验后,我开始疯狂研究 Prompt Engineering,发现这简直是新时代的“代码艺术”。
1. 创建有效提示:三条核心建议
- 明确:不要“帮我写个东西”,要“写一个Java方法,接收两个参数,返回它们的和”
- 上下文:前后关系得交代清楚,比如你是讲师,还是客服
- 角色定位:要让模型知道它是谁,它该怎么回应你
2. Simple Techniques:简单有效的套路
有些“套路”超级实用,我整理了几个:
例子提示(Few-shot Learning):
示例输入:张三,男,1990年生
示例输出:张三是一个34岁的男性。
模型立马明白你要干啥。
结构化输出:
请以 JSON 格式输出,包括 name、age、gender 三个字段。
一步一步思考(Chain-of-Thought):
请一步一步地解释你的推理过程。
这个小技巧,能让模型答题准确率翻倍!
3. Advanced Techniques:高手都在用什么?
角色扮演(System Prompt):
你现在是一个精通Java的架构师,请回答以下问题。
目标驱动:
你的目标是帮助用户完成代码审核,输出中包含建议和风险提示。
限制行为:
除非用户明确要求,不要输出任何 JavaScript 代码。
这些技巧特别适合做 Agent(智能助手)或插件开发,防止模型跑偏。
4. Microsoft Prompt Guidance:官方都在教啥?
微软有一份 Prompt Engineering 指南,总结得特别棒:
- 清晰 + 指令性语言(用命令,不用问题)
- 限定输出格式(例如 “回答应包括三个要点”)
- 尽量避免开放式提问(“你怎么看”不如“请列出优缺点”)
我照着这个规范试了一下,效果立竿见影。
Tokens:你说一句,模型听多少?
到这你可能在想:“我一句提示词,模型到底怎么处理?”
答案是:它是按 Tokens(词元)来处理的!
什么是 Token?
Token 并不是中文里的“字”或英文里的“单词”,而是一种经过编码的“语言单元”。比如:
- “你好吗”可能是 3 个 token
- “SpringBootApplication” 可能是 1 个或 2 个 token
- 一个英文句子平均 1 个单词 ≈ 1.3 token
为什么要在意 Token?
因为每次你和模型说话,其实是在“烧钱”的。调用 GPT-4 的 API 按 token 计费,提示词和回答都算。
- GPT-3.5 模型支持大约 16K token
- GPT-4 可达 128K,甚至更高
如果提示词太长,或者历史对话太多,模型就可能“遗忘”前面的内容!
Spring AI 提供了 TokenCountEstimator,可以估算 token 数:
建议在实际项目中控制 prompt 长度,必要时做摘要(summarization)。
总结一下:提示词的魔法是怎么炼成的?
写到这,我越来越感觉提示词就像“魔法咒语”。一句写得好,AI 立马“开窍”,写得不好,它就“走神”。
我们可以这么理解:
最后,分享一句我写 Prompt 常用的开头句:
“你现在是一个专注于{领域}的专家,请使用通俗易懂的语言,回答以下问题。”
这句话,解决了模型回答风格、准确性和角色定位三个问题!
END
我一直觉得 Prompt 是未来每个程序员的“第二语言”。Spring AI 给我们提供了非常干净、模块化、工程化的接口,让我们可以把“提问艺术”真正落地到代码中。
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!