Skip to content

Commit 020b499

Browse files
authored
feat: topic generation and outline functions with grok api
1 parent 76a4971 commit 020b499

File tree

1 file changed

+38
-38
lines changed

1 file changed

+38
-38
lines changed

scripts/writer.py

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -90,45 +90,45 @@ def get_existing_blog_posts():
9090

9191
def extract_topic(topics):
9292
global deepseek, existing_posts_text
93-
return generate([
94-
{"role": "system", "content": f"你在为一篇技术博客确定一个主题。直接用中文输出主题。"},
95-
{"role": "user", "content": f"阅读以下是HackerNews的热门文章,然后写一个可以用于技术博客的主题。这个主题应当是一个通用、普通的技术,不能是一个事件或其它东西。\n\n{topics}\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")
93+
# return generate([
94+
# {"role": "system", "content": f"你在为一篇技术博客确定一个主题。直接用中文输出主题。"},
95+
# {"role": "user", "content": f"阅读以下是HackerNews的热门文章,然后写一个可以用于技术博客的主题。这个主题应当是一个通用、普通的技术,不能是一个事件或其它东西。\n\n{topics}\n\n只需要一个主题,直接输出。"},
96+
# ], deepseek, "deepseek-chat")
97+
return grok_generate([
98+
system("你在为一篇技术博客确定一个主题。直接用中文输出主题。"),
99+
user(f"阅读以下是HackerNews的热门文章,然后写一个可以用于技术博客的主题。这个主题应当是一个通用、普通的技术,不能是一个事件或其它东西。\n\n{topics}\n\n只需要一个主题,直接输出。")
100+
], xai_client, "grok-4-1-fast-non-reasoning")
101101

102102
def outline(topic):
103103
global deepseek
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")
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-4-1-fast-non-reasoning")
110110

111111
def write_from_outline(outline):
112112
global deepseek, existing_posts_text
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")
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-4-1-fast-non-reasoning")
121121

122122
def summary(article):
123123
global deepseek
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")
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-4-1-fast-non-reasoning")
132132

133133
# LaTeX error handling
134134
def extract_latex_segments(markdown_text: str) -> List[Tuple[str, int, int]]:
@@ -266,14 +266,14 @@ def modify_latex(markdown_text: str, error_report: Dict[Tuple[str,int], List[str
266266
"\n\n上下文:\n" + context +
267267
"\n\n请只返回修正后的完整片段,不要添加其它标记。"
268268
)
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()
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-4-fast-reasoning").strip()
277277

278278
# 去掉```,如果不小心生成了
279279
if fixed.startswith("```") and fixed.endswith("```"):

0 commit comments

Comments
 (0)