最初以日文发表于 Qiita。这是英文版。
太长不看版
- 在大语言模型时代,涉及日本六曜历法的业务需求激增——例如婚礼日期选择器、搬家吉日评分器、占卜聊天机器人。
- 但是,如果你自行计算六曜,会遇到一类在特定日期上静默计算错误的缺陷。
- 根本原因并非六曜计算公式。问题出在此之前的步骤:将公历日期转换为日本农历需要天文级的精度。
- 解决方案是在其前端接入一个面向人工智能代理的日本历法应用程序接口(例如 Shirabe 日历 API)。只需三行
curl/fetch/requests代码即可。
简述什么是六曜
六曜(Rokuyo)是一个为期六天的循环周期(大安 / 友引 / 先胜 / 先负 / 佛灭 / 赤口),在日本仍被广泛用于决定吉日——如婚礼、葬礼、动工仪式、店铺开业。如果你为日本市场构建任何推荐或评分日期的产品,最终都会需要用到它。这看起来微不足道,实则不然。
目标读者
- 构建大语言模型代理 / 人工智能软件即服务的全栈工程师。
- 任何曾经认为“六曜?我自己写一个就行了”的人。
- 任何已将大语言模型生成的日期逻辑部署到生产环境的人。
问题所在:当你让人工智能“计算六曜”时会发生什么
向编程助手询问“一个判断给定日期是否为大安的函数”,你通常会得到类似这样的代码:
// 大语言模型倾向于提出的“ naive 六曜”实现
function getRokuyo(gregorianDate: Date): string {
// (1) 将公历转换为农历(年 / 月 / 日)
const lunar = convertToLunar(gregorianDate); // <- 事故常发于此
// (2) 六曜 = (农历月份 + 农历日期) mod 6
const index = (lunar.month + lunar.day) % 6;
return ["大安", "赤口", "先胜", "友引", "先负", "佛灭", "Butsumetsu", "Senbu", "Tomobiki", "Sensho", "Shakko", "Taian"][index];
}
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。