This commit is contained in:
lik
2026-09-09 17:36:25 +08:00
parent 1f2da22cae
commit d6efb180dd
54 changed files with 0 additions and 2000 deletions
+46
View File
@@ -0,0 +1,46 @@
import { tool } from "langchain"
import lunarLib from "lunar-javascript"
const { Lunar } = lunarLib
// 当年冬至在节气表中的 key 为英文(上一年冬至占用中文 key)
const EN_TERM_NAMES = { DONG_ZHI: "冬至" }
/**
* 年份节气列表工具
* 基于 lunar-javascript 计算给定年份的 24 节气精确日期
*/
export const getYearTermsTool = tool(
async ({ year }) => {
try {
const table = Lunar.fromYmd(year, 1, 1).getJieQiTable()
const terms = []
for (const [key, solar] of Object.entries(table)) {
// 只保留属于目标年份的节气(表首含上一年边界节气)
if (solar.getYear() !== year) continue
const name = EN_TERM_NAMES[key] ?? key
terms.push({ date: solar.toString(), name })
}
terms.sort((a, b) => a.date.localeCompare(b.date))
return JSON.stringify({ year, terms }, null, 2)
} catch (error) {
return JSON.stringify({ error: error.message }, null, 2)
}
},
{
name: "get_year_terms",
description: "查询给定年份节气所在日期列表",
schema: {
type: "object",
properties: {
year: {
type: "number",
description: "年份",
minimum: 1900,
maximum: 2100
}
},
required: ["year"]
}
}
)