引言
本文将介绍如何利用大语言模型(LLM)与结构化 Prompt 设计,将传统“星座运势”这种高度模糊、强主观的内容,重构为一个可控、可复用、低风险的生成式文本系统。
从技术视角看,星座运势并不是预测问题,而是一个典型的:
基于固定标签(星座)+ 情绪状态映射 + 巴纳姆效应的文本生成问题
本文将给出一个完整示例,演示如何实现一个
“看起来像星座运势,实际是 Prompt 驱动的文本生成规则系统”。
商务合作:18094708823
1. 项目背景
星座运势类小程序长期存在稳定需求,常见实现方式通常是:
固定星座运势文案
按日期或星座直接返回
更新成本高、内容同质化严重
这类实现方式的问题在于:
运势内容“可读性强,但复访价值低”
用户很容易意识到是“模板内容”
难以支持个性化扩展(如今日状态、提问)
本文尝试使用大语言模型 + 结构化 Prompt,实现一个:
看起来像星座运势,实际是文本生成规则系统
从而在不引入真实预测的前提下,提升内容的代入感与新鲜度。
2. 产品示意图
3. 技术架构
整体架构较为简单,适合快速验证:
微信小程序 | | 选择星座 / 查看运势 v Node.js 后端 | | 星座信息 + Prompt v 大语言模型 API该架构的核心在于:
前端不关心运势内容如何生成,只负责展示结果。
4. 小程序端:星座运势触发
4.1 页面示例
<button bindtap="getFortune">查看今日运势</button> <view>{{fortune}}</view>4.2 页面逻辑
Page({ data: { fortune: '' }, getFortune() { wx.request({ url: 'https://your-server/api/fortune', method: 'GET', data: { zodiac: '白羊座' }, success: res => { this.setData({ fortune: res.data.text }) } }) } })5. 后端:星座运势生成逻辑
5.1 星座与运势维度定义
const zodiacs = [ '白羊座','金牛座','双子座','巨蟹座', '狮子座','处女座','天秤座','天蝎座', '射手座','摩羯座','水瓶座','双鱼座' ] const levels = ['偏低', '平稳', '偏高']5.2 运势接口实现
app.get('/api/fortune', async (req, res) => { const zodiac = req.query.zodiac const level = levels[Math.floor(Math.random() * levels.length)] const prompt = ` 你是一位星座运势解读者。 星座:${zodiac} 今日整体运势:${level} 请用不超过 100 字进行解读, 语言模糊、克制,偏向状态描述, 不要给出明确结论或具体建议。 ` const text = await callLLM(prompt) res.json({ text }) })6. Prompt 设计思路
在星座运势场景中,Prompt 的设计目标并不是“预测准确”,而是:
增强代入感
避免确定性判断
保持长期可用性
核心设计原则如下:
6.1 模糊性优先
模糊表达可以覆盖更多用户状态,符合巴纳姆效应。
6.2 不给明确建议
避免诸如“应该”“一定要”“马上去做”等指令式表达,降低风险。
6.3 固定角色设定
保持输出风格一致,避免模型输出情绪过激或风格漂移。
7. 推荐 Prompt(可直接使用)
角色设定
你是一位星座运势解读者,语气理性、克制,不夸张、不渲染焦虑。
任务说明
根据给定的星座和今日运势状态,
生成一段偏向“状态提醒”的星座运势文本。
输入信息
星座:{zodiac}
运势状态:{偏低 / 平稳 / 偏高}
输出要求
字数控制在 70~100 字
不要给出确定性结论
不要直接给行动建议
避免使用极端、绝对化词汇
语言偏向描述、提醒、可能性
输出风格示例(仅供参考)
“当前阶段更适合关注自身节奏,而非结果本身,外部变化可能带来新的理解方式。”
现在请开始生成。
8. Prompt 构建函数示例
function buildZodiacPrompt(zodiac, level) { return ` 你是一位星座运势解读者,语气理性、克制。 星座:${zodiac} 今日运势状态:${level} 请输出 70~100 字的运势解读, 不下结论,不给建议, 只描述状态与可能性。 ` }从工程角度看,星座运势并不是一个“玄学系统”,而是一个:
用户分桶(星座)
状态映射(运势等级)
文本生成规则(Prompt)
通过引入大语言模型,可以在不增加内容维护成本的前提下,大幅提升内容的新鲜度和可扩展性。