Skip to content

Commit d5e32eb

Browse files
committed
Update writer.py
1 parent 1979cf8 commit d5e32eb

File tree

1 file changed

+40
-39
lines changed

1 file changed

+40
-39
lines changed

scripts/writer.py

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -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

5152
def scrape_website(url, css_selector):
5253
response = requests.get(url)
@@ -89,45 +90,45 @@ def get_existing_blog_posts():
8990

9091
def 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

101102
def 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

110111
def 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

121122
def 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
133134
def 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

Comments
 (0)