@@ -46,7 +46,8 @@ def grok_generate(context, provider, model): #for xai
4646 model = model ,
4747 messages = context ,
4848 )
49- return chat .sample ()
49+ response = chat .sample ()
50+ return response .content .strip ()
5051
5152def scrape_website (url , css_selector ):
5253 response = requests .get (url )
@@ -89,45 +90,45 @@ def get_existing_blog_posts():
8990
9091def extract_topic (topics ):
9192 global deepseek , existing_posts_text
92- # return generate([
93- # {"role": "system", "content": "你在为一篇技术博客确定一个主题。直接用中文输出主题。"},
94- # {"role": "user", "content": f"阅读以下是HackerNews的热门文章,然后写一个可以用于技术博客的主题。这个主题应当是一个通用、普通的技术,不能是一个事件或其它东西。\n\n{topics}\n\n以下是已有的博客文章,请避免选择相似的主题:\n{existing_posts_text}\n\n只需要一个主题,直接输出。"},
95- # ], deepseek, "deepseek-chat")
96- return grok_generate ([
97- system ("你在为一篇技术博客确定一个主题。直接用中文输出主题。" ),
98- user (f"阅读以下是HackerNews的热门文章,然后写一个可以用于技术博客的主题。这个主题应当是一个通用、普通的技术,不能是一个事件或其它东西。\n \n { topics } \n \n 以下是已有的博客文章,请避免选择相似的主题:\n { existing_posts_text } \n \n 只需要一个主题,直接输出。" )
99- ], xai_client , "grok-3-mini" )
93+ return generate ([
94+ {"role" : "system" , "content" : "你在为一篇技术博客确定一个主题。直接用中文输出主题。" },
95+ {"role" : "user" , "content" : f"阅读以下是HackerNews的热门文章,然后写一个可以用于技术博客的主题。这个主题应当是一个通用、普通的技术,不能是一个事件或其它东西。\n \n { topics } \n \n 以下是已有的博客文章,请避免选择相似的主题:\n { existing_posts_text } \n \n 只需要一个主题,直接输出。" },
96+ ], deepseek , "deepseek-chat" )
97+ # return grok_generate([
98+ # system("你在为一篇技术博客确定一个主题。直接用中文输出主题。"),
99+ # user(f"阅读以下是HackerNews的热门文章,然后写一个可以用于技术博客的主题。这个主题应当是一个通用、普通的技术,不能是一个事件或其它东西。\n\n{topics}\n\n以下是已有的博客文章,请避免选择相似的主题:\n{existing_posts_text}\n\n只需要一个主题,直接输出。")
100+ # ], xai_client, "grok-3-mini")
100101
101102def outline (topic ):
102103 global deepseek
103- # return generate([
104- # {"role": "user", "content": f"我要写一篇关于「{topic}」的博客文章。帮我列一个详细的文章提纲。"}
105- # ], deepseek, "deepseek-reasoner")
106- return grok_generate ([
107- user (f"我要写一篇关于「{ topic } 」的博客文章。帮我列一个详细的文章提纲。" )
108- ], xai_client , "grok-3-mini" )
104+ return generate ([
105+ {"role" : "user" , "content" : f"我要写一篇关于「{ topic } 」的博客文章。帮我列一个详细的文章提纲。" }
106+ ], deepseek , "deepseek-reasoner" )
107+ # return grok_generate([
108+ # user(f"我要写一篇关于「{topic}」的博客文章。帮我列一个详细的文章提纲。")
109+ # ], xai_client, "grok-3-mini")
109110
110111def write_from_outline (outline ):
111112 global deepseek , existing_posts_text
112- # return generate([
113- # {"role": "system", "content": "你是一位专业技术博客作者。在写作时请遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符;使用直角引号「」。"},
114- # {"role": "user", "content": f"{outline}\n\n根据这个提纲中关于技术知识的部分,写出一篇技术博客文章。文章中避免出现图片,不能使用任何列表。每一段出现的代码都进行较为详细的解读。在讲述内容时尽量使用段落的语言,语言风格可以略偏专业,但保持清晰。使用Markdown(要求符合Common Markdown规范)输出,使用LaTeX公式(注意:数学的开闭定界符前后不能有字母或数字字符。像x$a + b = c$或$a + b = c$1将无法渲染为数学公式(所有$会被渲染为$);但x $\\infty$ 1和($\\infty$)会正常渲染),标题尽量只用一级标题 `#` 和二级标题 `##`,不要用分割线。请遵循中文排版规范,使用正确的标点符号。直接输出正文。"}
115- # ], deepseek, "deepseek-reasoner")
116- return grok_generate ([
117- system ("你是一位专业技术博客作者。在写作时请遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符;使用直角引号「」。" ),
118- user (f"{ outline } \n \n 根据这个提纲中关于技术知识的部分,写出一篇技术博客文章。文章中避免出现图片,不能使用任何列表。每一段出现的代码都进行较为详细的解读。在讲述内容时尽量使用段落的语言,语言风格可以略偏专业,但保持清晰。使用Markdown(要求符合Common Markdown规范)输出,使用LaTeX公式(注意:数学的开闭定界符前后不能有字母或数字字符。像x$a + b = c$或$a + b = c$1将无法渲染为数学公式(所有$会被渲染为$);但x $\\ infty$ 1和($\\ infty$)会正常渲染),标题尽量只用一级标题 `#` 和二级标题 `##`,不要用分割线。请遵循中文排版规范,使用正确的标点符号。直接输出正文。" )
119- ], xai_client , "grok-3-mini" )
113+ return generate ([
114+ {"role" : "system" , "content" : "你是一位专业技术博客作者。在写作时请遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符;使用直角引号「」。" },
115+ {"role" : "user" , "content" : f"{ outline } \n \n 根据这个提纲中关于技术知识的部分,写出一篇技术博客文章。文章中避免出现图片,不能使用任何列表。每一段出现的代码都进行较为详细的解读。在讲述内容时尽量使用段落的语言,语言风格可以略偏专业,但保持清晰。使用Markdown(要求符合Common Markdown规范)输出,使用LaTeX公式(注意:数学的开闭定界符前后不能有字母或数字字符。像x$a + b = c$或$a + b = c$1将无法渲染为数学公式(所有$会被渲染为$);但x $\\ infty$ 1和($\\ infty$)会正常渲染),标题尽量只用一级标题 `#` 和二级标题 `##`,不要用分割线。请遵循中文排版规范,使用正确的标点符号。直接输出正文。" }
116+ ], deepseek , "deepseek-reasoner" )
117+ # return grok_generate([
118+ # system("你是一位专业技术博客作者。在写作时请遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符;使用直角引号「」。"),
119+ # user(f"{outline}\n\n根据这个提纲中关于技术知识的部分,写出一篇技术博客文章。文章中避免出现图片,不能使用任何列表。每一段出现的代码都进行较为详细的解读。在讲述内容时尽量使用段落的语言,语言风格可以略偏专业,但保持清晰。使用Markdown(要求符合Common Markdown规范)输出,使用LaTeX公式(注意:数学的开闭定界符前后不能有字母或数字字符。像x$a + b = c$或$a + b = c$1将无法渲染为数学公式(所有$会被渲染为$);但x $\\infty$ 1和($\\infty$)会正常渲染),标题尽量只用一级标题 `#` 和二级标题 `##`,不要用分割线。请遵循中文排版规范,使用正确的标点符号。直接输出正文。")
120+ # ], xai_client, "grok-3-mini")
120121
121122def summary (article ):
122123 global deepseek
123- # return generate([
124- # {"role": "system", "content": "你是一个技术博客简介写作者,简介不一定需要涵盖文章的全部内容,能起到一定的提示作用即可。直接输出简介。遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符。注意简介被作为副标题使用,不是一句句子,不要以句号结尾。"},
125- # {"role": "user", "content": f"给这篇文章写一个15字的简短介绍:\n\n{article}"}
126- # ], deepseek, "deepseek-chat")
127- return grok_generate ([
128- system ("你是一个技术博客简介写作者,简介不一定需要涵盖文章的全部内容,能起到一定的提示作用即可。直接输出简介。遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符。注意简介被作为副标题使用,不是一句句子,不要以句号结尾。" ),
129- user (f"给这篇文章写一个15字的简短介绍:\n \n { article } " )
130- ], xai_client , "grok-3-mini" )
124+ return generate ([
125+ {"role" : "system" , "content" : "你是一个技术博客简介写作者,简介不一定需要涵盖文章的全部内容,能起到一定的提示作用即可。直接输出简介。遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符。注意简介被作为副标题使用,不是一句句子,不要以句号结尾。" },
126+ {"role" : "user" , "content" : f"给这篇文章写一个15字的简短介绍:\n \n { article } " }
127+ ], deepseek , "deepseek-chat" )
128+ # return grok_generate([
129+ # system("你是一个技术博客简介写作者,简介不一定需要涵盖文章的全部内容,能起到一定的提示作用即可。直接输出简介。遵循以下中文排版规范:使用全角中文标点;专有名词大小写正确;英文、数字使用半角字符。注意简介被作为副标题使用,不是一句句子,不要以句号结尾。"),
130+ # user(f"给这篇文章写一个15字的简短介绍:\n\n{article}")
131+ # ], xai_client, "grok-3-mini")
131132
132133# LaTeX error handling
133134def extract_latex_segments (markdown_text : str ) -> List [Tuple [str , int , int ]]:
@@ -265,14 +266,14 @@ def modify_latex(markdown_text: str, error_report: Dict[Tuple[str,int], List[str
265266 "\n \n 上下文:\n " + context +
266267 "\n \n 请只返回修正后的完整片段,不要添加其它标记。"
267268 )
268- # fixed = generate([
269- # {"role":"system","content":"你是 LaTeX 专家,负责修正以下代码:"},
270- # {"role":"user","content":user_msg}
271- # ], deepseek, "deepseek-reasoner").strip()
272- fixed = grok_generate ([
273- system ("你是 LaTeX 专家,负责修正以下代码:" ),
274- user (user_msg )
275- ], xai_client , "grok-3-mini" ).strip ()
269+ fixed = generate ([
270+ {"role" :"system" ,"content" :"你是 LaTeX 专家,负责修正以下代码:" },
271+ {"role" :"user" ,"content" :user_msg }
272+ ], deepseek , "deepseek-reasoner" ).strip ()
273+ # fixed = grok_generate([
274+ # system("你是 LaTeX 专家,负责修正以下代码:"),
275+ # user(user_msg)
276+ # ], xai_client, "grok-3-mini").strip()
276277
277278 # 去掉```,如果不小心生成了
278279 if fixed .startswith ("```" ) and fixed .endswith ("```" ):
0 commit comments