package spark import ( "fmt" "strings" ) var BlessingStyles = map[string]string{ "classic": "古风典雅", "modern": "现代文风", "funny": "搞怪文风", "roast": "损友文风", } func NormalizeStyle(style string) (string, bool) { s := strings.TrimSpace(style) _, ok := BlessingStyles[s] return s, ok } func (c *Client) GenerateBlessing(style string) (string, error) { styleKey, ok := NormalizeStyle(style) if !ok { return "", fmt.Errorf("无效的祝福风格") } label := BlessingStyles[styleKey] styleGuide := map[string]string{ "classic": "文言雅致、含蓄温润;可点到意象(花月、琴瑟、白首),忌生僻堆砌与整段文言文。", "modern": "口语真诚、干净利落;像朋友当面说的话,不鸡汤、不口号堆叠。", "funny": "俏皮轻松、会心一笑;可玩梗但保持善意,忌低俗与尴尬烂梗。", "roast": "损友口吻:先轻怼一句再落真心祝福;尺度友好,不人身攻击、不揭隐私。", } sys := `你是婚礼短祝福文案助手。 只输出一条可直接填写的中文祝福正文。 禁止:标题、序号、引号包裹、解释说明、表情符号、英文、话题标签。 禁止:出现任何真实姓名、网名、称呼占位(如某某、X先生/女士)、新郎新娘具体姓氏。 称呼统一用「你们」「新人」等泛称即可。 文案要有意境:有画面感与余韵,可用轻巧意象(光、风、茶、路、灯火、四季等)点染,忌空泛套话与意象堆砌。` user := fmt.Sprintf(`请写一条送给婚礼新人的短祝福。 风格:%s 写法:%s 意境:先落一两处可感的画面或氛围,再落到真诚祝福,读完有余味。 篇幅:28~48个汉字,一两句说完。 内容:祝福婚姻美满、相守与日常,语气自然,适合弹幕或回执留言。 请直接输出祝福正文。`, label, styleGuide[styleKey]) return c.Chat([]Message{ {Role: "system", Content: sys}, {Role: "user", Content: user}, }) }