AI Prompt 生成
把一张盘或一段运限转成结构化文本,直接交给大模型分析。
适合:所有人。这是这个库最直接的用法
要让大模型解读命盘,得先把盘描述给它。手工拼接这段描述既繁琐又容易漏字段, 所以 x-iztro 内置了两个生成函数。
| 函数 | 内容 |
|---|---|
astrolabe_to_prompt | 本命盘:基本信息 + 十二宫的干支、大限、小限虚岁、四组十二神、三组星耀 |
horoscope_to_prompt | 运限:大限、小限、流年、流月、流日、流时及各自四化与流耀 |
两者都按盘面语言生成:中文盘出中文 prompt,英文盘出英文 prompt。
用法
natal = astro.astrolabe_to_prompt(chart)
fortune = astro.horoscope_to_prompt(chart, "2025-1-1", 0)
prompt = f"{natal}\n{fortune}"let natal = astrolabe_to_prompt(&astrolabe, lang);
let fortune = horoscope_to_prompt(&astrolabe, &horoscope, lang);natal, _ := chart.AstrolabeToPrompt()
fortune, _ := chart.HoroscopeToPrompt("2025-1-1", 0)Rust 侧的 horoscope_to_prompt 接受已算好的运限对象;
Python 与 Go 侧接受目标日期,内部完成运限计算。三者输出逐字一致。
本命盘 prompt 长什么样
下面是 2000-8-16 寅时 女这张盘的完整开头与前三宫:
=== 基本信息 ===
性别: 女
阳历: 2000-8-16
农历: 二〇〇〇年七月十七
干支: 庚辰 甲申 丙午 庚寅
时辰: 寅时 (03:00~05:00)
星座: 狮子座
生肖: 龙
命宫地支: 午
身宫地支: 戌
命主: 破军
身主: 文昌
五行局: 木三局
生年四化: 太阳禄, 武曲权, 太阴科, 天同忌
=== 十二宫 ===
--- 财帛 ---
天干地支: 戊寅
大限: 43-52
小限虚岁: 9, 21, 33, 45, 57, 69, 81, 93, 105, 117
十二神: 绝, 飞廉, 吊客, 岁驿
主星: 武曲(得)[权], 天相(庙)
辅星: 天马
杂耀: 解神, 三台, 天寿, 天巫, 天厨, 阴煞, 天哭
--- 夫妻 [来因] ---
天干地支: 庚辰
大限: 23-32
小限虚岁: 7, 19, 31, 43, 55, 67, 79, 91, 103, 115
十二神: 死, 将军, 岁建, 华盖
主星: 七杀(庙)
辅星: 右弼, 火星(陷)
杂耀: 封诰, 华盖
--- 官禄 [身宫] ---
天干地支: 丙戌
大限: 83-92
小限虚岁: 1, 13, 25, 37, 49, 61, 73, 85, 97, 109
十二神: 沐浴, 伏兵, 大耗, 月煞
主星: 廉贞(利), 天府(庙)
辅星: 左辅
杂耀: 天才, 天虚十二宫按盘上位置顺序输出,不是按宫名顺序。
运限 prompt 长什么样
目标日期 2025-1-1 早子时:
=== 运限 ===
目标日期: 2025-1-1 / 二〇二四年腊月初二
--- 大限 ---
大限命宫: 本命夫妻 (庚辰)
大限四化: 太阳, 武曲, 太阴, 天同
夫妻 (财帛):
主星: 武曲(得)[权], 天相(庙)
辅星: 天马
流耀: 运马
兄弟 (子女):
主星: 太阳(庙)[禄], 天梁(庙)
流耀: 运曲
...
小限命宫: 本命官禄 (虚岁 25)
主星: 廉贞(利), 天府(庙)
辅星: 左辅
杂耀: 天才, 天虚
--- 流年 ---
流年命宫: 本命夫妻 (甲辰)
流年四化: 廉贞, 破军, 武曲, 太阳
夫妻 (财帛):
主星: 武曲(得)[权], 天相(庙)
辅星: 天马
流耀: 流禄, 流马
十二神: 吊客, 岁驿
...
流月命宫: 本命仆役 (丁丑)
流月宫名: 田宅, 官禄, 仆役, 迁移, 疾厄, 财帛, 子女, 夫妻, 兄弟, 命宫, 父母, 福德
流月四化: 太阴, 天同, 天机, 巨门
流日命宫: 本命迁移 (庚午)
流日宫名: 福德, 田宅, 官禄, 仆役, 迁移, 疾厄, 财帛, 子女, 夫妻, 兄弟, 命宫, 父母
流日四化: 太阳, 武曲, 太阴, 天同
流时命宫: 本命迁移 (丙子)
流时宫名: 福德, 田宅, 官禄, 仆役, 迁移, 疾厄, 财帛, 子女, 夫妻, 兄弟, 命宫, 父母
流时四化: 天同, 天机, 文昌, 廉贞格式约定
| 记号 | 含义 |
|---|---|
天同(利) | 括号内是亮度 |
太阳(旺)[权] | 方括号内是四化 |
--- 官禄 [身宫] --- | 方括号标记该宫同时是身宫 |
--- 夫妻 [来因] --- | 方括号标记该宫是来因宫 |
大限命宫: 本命夫妻 (庚辰) | 这一层的命宫落在本命的哪个宫,括号内是该层干支 |
小限命宫: 本命官禄 (虚岁 25) | 小限落宫,括号内是虚岁 |
夫妻 (财帛): | 运限段中,前面是这一层重排后的宫名,括号内是本命宫名 |
流月宫名: … | 该层重排后的十二宫名,按盘上位置排列 |
括号里是本命宫名,别读反
夫妻 (财帛): 说的是「这一格在本大限里叫夫妻宫,它在本命盘上是财帛宫」。
运限解读要以前面那个名字为准,括号里的名字是为了让你能对回本命盘。
见运限。
日期字段原样回显入参,不补零:传 "2000-8-16" 输出就是 阳历: 2000-8-16。
篇幅
中文盘的本命 prompt 约 1,780 字符,运限段约 1,770 字符,两段合起来不到 4,000 字符。 英文盘更长(星名是单词而非两字),本命约 3,470、运限约 3,860 字符。 任何主流模型的上下文窗口都装得下,通常不必裁剪。
接入大模型
生成的文本是纯描述,不含指令。实际使用时在前面加上你的分析要求:
system = "你是紫微斗数分析师。基于给定命盘作答,不要编造盘上没有的信息。"
user = f"""{astro.astrolabe_to_prompt(chart)}
{astro.horoscope_to_prompt(chart, "2025-1-1", 0)}
请分析这个人 2025 年的事业运势。"""更完整的接法(工具调用、别让模型自己排盘)见让 AI 解读命盘。
用中文盘还是英文盘
优先用中文盘。英文盘的星名走 iztro 的意译词表(紫微是 emperor、七杀是 marshal),
亮度退化成 [+3] 这类记号,四化写成 A/B/C/D ——
这套写法与英文命理界的通行译法不同,模型未必认得。
主流模型的中文命理术语能力都不差,直接喂中文 prompt 效果更好。 确实需要英文时,建议附上一份星名对照表。
需要更细的控制
生成函数覆盖的是通用场景。如果要自定义 prompt 结构(比如只描述特定几个宫、 或者输出 JSON 而非文本),直接遍历星盘数据自己拼即可 —— 所有字段都是公开的,见数据结构字典。