tmp
This commit is contained in:
@@ -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"]
|
||||
}
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user