上节课我们做了一个能记住对话的 AI 聊天助手。这节课,我们来做一个更实用的工具——AI 写作小助手!输入关键词,AI 帮你写文章、写作文、起标题、改病句,一键搞定!
一、写作助手能做什么?
我们要做的写作助手支持以下功能:
-
- 📝 写作文:给个题目,AI 帮你写一篇小作文
-
- 🏷️ 起标题:给段文字,AI 帮你想5个标题
-
- 🔧 改病句:把写错的句子交给 AI 修改
-
- 💡 续写故事:写了开头,AI 帮你续写后面
-
- 🌍 中英互译:中文翻英文,英文翻中文
-
二、核心思路:用 Prompt 控制 AI
写作助手的关键是写好 Prompt(提示词)。不同的任务,用不同的 Prompt:
# 写作文的 Prompt
prompt = f"请帮我写一篇关于「{topic}」的小学生作文,200字左右,语言生动活泼"
# 起标题的 Prompt
prompt = f"请为下面这段文字起5个吸引人的标题,每行一个:
{text}"
# 改病句的 Prompt
prompt = f"请找出下面句子中的错误并改正,给出修改后的句子:
{sentence}"Prompt 写得越清楚,AI 的回答就越准确!
三、完整代码:写作助手类
from zai import ZhipuAiClient
class WritingAssistant:
"""AI 写作小助手"""
def __init__(self, api_key):
self.client = ZhipuAiClient(api_key=api_key)
self.model = "glm-4.7-flash"
def _ask(self, prompt):
"""向 AI 提问,返回回答"""
response = self.client.chat.completions.create(
model=self.model,
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
def write_essay(self, topic, words=200, style="生动活泼"):
"""写作文"""
prompt = f"请帮我写一篇关于「{topic}」的小学生作文,{words}字左右,语言{style}"
return self._ask(prompt)
def make_title(self, text, count=5):
"""起标题"""
prompt = f"请为下面这段文字起{count}个吸引人的标题,每行一个,不要编号:
{text}"
return self._ask(prompt)
def fix_sentence(self, sentence):
"""改病句"""
prompt = f"请找出下面句子中的语法错误或病句,并给出修改后的正确句子:
「{sentence}」"
return self._ask(prompt)
def continue_story(self, beginning, words=150):
"""续写故事"""
prompt = f"下面是一个故事的开头,请续写{words}字左右,保持风格一致:
{beginning}"
return self._ask(prompt)
def translate(self, text, target="英文"):
"""翻译"""
prompt = f"请将下面的内容翻译成{target},只输出翻译结果:
{text}"
return self._ask(prompt)四、实际使用效果
assistant = WritingAssistant(api_key="你的API Key")
# 1. 写作文
essay = assistant.write_essay("春天", words=150)
print("【作文】")
print(essay)【作文】
春天来了,大地换上了绿色的新装。小草从土里探出头来,好奇地打量着这个世界。
柳树的枝条轻轻摇摆,像是在跳一支欢快的舞蹈。
公园里,小朋友们放起了风筝,五颜六色的风筝在蓝天上飞翔……
# 2. 起标题
titles = assistant.make_title("春天来了,小草绿了,花儿开了,小朋友们在公园里快乐地玩耍。")
print("【标题建议】")
print(titles)【标题建议】
春天的气息
绿意盎然的季节
公园里的欢笑声
春风里的童年
花开的时候
# 3. 改病句
fixed = assistant.fix_sentence("我昨天把作业忘记写了没有。")
print("【改病句】")
print(fixed)【改病句】
原句存在双重否定导致语义混乱的问题。
修改后:我昨天忘记写作业了。
五、做一个菜单程序
把所有功能整合成一个好用的菜单程序:
def main():
assistant = WritingAssistant(api_key="你的API Key")
print("=" * 40)
print(" ✍️ AI 写作小助手")
print("=" * 40)
print("1. 写作文")
print("2. 起标题")
print("3. 改病句")
print("4. 续写故事")
print("5. 中英互译")
print("0. 退出")
print("=" * 40)
while True:
choice = input("\n请选择功能(0-5):")
if choice == "0":
print("再见!")
break
elif choice == "1":
topic = input("作文题目:")
print("\n正在写作,请稍候……")
print(assistant.write_essay(topic))
elif choice == "2":
text = input("请输入文字:")
print("\n标题建议:")
print(assistant.make_title(text))
elif choice == "3":
sentence = input("请输入要修改的句子:")
print("\n修改结果:")
print(assistant.fix_sentence(sentence))
elif choice == "4":
beginning = input("请输入故事开头:")
print("\n续写内容:")
print(assistant.continue_story(beginning))
elif choice == "5":
text = input("请输入要翻译的内容:")
direction = input("翻译成(中文/英文):")
print("\n翻译结果:")
print(assistant.translate(text, target=direction))
else:
print("无效选择,请重新输入")六、进阶:保存写作结果
写完的作文可以自动保存到文件,方便以后查看:
import datetime
def save_result(title, content):
"""把写作结果保存到文件"""
today = datetime.date.today().strftime("%Y-%m-%d")
filename = f"写作记录_{today}.txt"
with open(filename, "a", encoding="utf-8") as f:
f.write(f"\n{'='*30}\n")
f.write(f"【{title}】\n")
f.write(f"时间:{datetime.datetime.now().strftime('%H:%M')}\n")
f.write(content)
f.write("\n")
print(f"已保存到 {filename}")
# 使用示例
essay = assistant.write_essay("我的暑假")
save_result("作文:我的暑假", essay)
# 自动保存到 写作记录_2026-04-19.txt七、今天学到了什么?
-
- Prompt 工程:不同任务写不同的提示词,越具体越好
-
- WritingAssistant 类:把多个功能封装在一起,调用方便
-
- 菜单程序:用 while + input 做交互式菜单
-
- 保存结果:用文件操作把 AI 输出保存下来
-
- 实用场景:写作文、起标题、改病句、续写、翻译
-
八、下期预告
下节课我们用 turtle 画图——让 Python 帮你画出漂亮的图案!不需要 AI,纯代码画画,超有趣!
敬请期待:《小学生Python进阶:用turtle画出美丽图案》
有问题欢迎留言!