AI调用及场景应用 第二章:文本生成应用——让AI成为你的写作
AI调用及场景应用 第二章:文本生成应用
“写作不再是孤独的旅程。有了AI这位’超级助手’,你可以更快、更好地表达自己的想法!”
上一章我们学会了如何调用AI API。这一章,我们将把这项技术应用到文本生成领域,打造各种实用的写作工具:文章生成器、翻译助手、摘要工具、润色神器……让AI真正成为你的写作伙伴。
一、AI文本生成的能力边界
✍️ AI能做什么?
|
|
|
|
|---|---|---|
| 创意写作 |
|
|
| 文本润色 |
|
|
| 多语言翻译 |
|
|
| 内容摘要 |
|
|
| 扩写/缩写 |
|
|
| 风格转换 |
|
|
| 格式转换 |
|
|
⚠️ AI不能做什么?
-
❌ 替代人类的创造力和独特观点 -
❌ 保证100%的事实准确性(需要人工核实) -
❌ 理解复杂的上下文和隐含意义 -
❌ 拥有真实的情感和经历
最佳实践:AI是助手,你是决策者。用AI提高效率,但保持自己的思考。
二、智能写作助手
📝 基础文章生成器
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatform# 初始化AI客户端(使用DeepSeek,性价比高)ai = UnifiedAIClient(AIPlatform.DEEPSEEK)defgenerate_article(topic, style, word_count, audience):"""生成文章""" prompt = f"""请写一篇关于"{topic}"的文章。要求:- 文体:{style}- 字数:约{word_count}字- 目标读者:{audience}- 语言:中文请确保内容充实、结构清晰、语言流畅。"""try: article = ai.chat(prompt)return articleexcept Exception as e:returnf"生成失败:{str(e)}"# 创建界面demo = gr.Interface( fn=generate_article, inputs=[ gr.Textbox(label="文章主题", placeholder="例如:我的梦想"), gr.Dropdown( ["记叙文", "议论文", "说明文", "散文", "故事"], label="文体", value="记叙文" ), gr.Slider(200, 1000, value=500, step=50, label="字数"), gr.Dropdown( ["小学生", "初中生", "高中生", "普通读者"], label="目标读者", value="小学生" ) ], outputs=gr.Textbox(label="生成的文章", lines=15), title="✍️ AI文章生成器", description="输入主题,AI帮你写文章", examples=[ ["我的家乡", "记叙文", 400, "小学生"], ["科技改变生活", "议论文", 600, "初中生"] ])demo.launch()
🎨 进阶版:带大纲的文章生成器
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)defgenerate_outline(topic, style, sections):"""生成文章大纲""" prompt = f"""请为"{topic}"这篇{style}生成详细大纲。要求:- 包含{sections}个主要部分- 每个部分有明确的小标题- 简要说明每部分要写什么内容请以Markdown格式输出。"""return ai.chat(prompt)defgenerate_article_with_outline(topic, style, word_count, outline):"""根据大纲生成完整文章""" prompt = f"""请根据以下大纲,写一篇关于"{topic}"的{style}。大纲:{outline}要求:- 总字数约{word_count}字- 严格按照大纲结构写作- 段落之间要有自然过渡- 开头吸引人,结尾有升华请直接输出文章内容。"""return ai.chat(prompt)with gr.Blocks(title="📋 大纲式文章生成") as demo: gr.Markdown("# 📋 大纲式文章生成器") gr.Markdown("先生成大纲,再生成文章,质量更高!")with gr.Row():with gr.Column(): topic_input = gr.Textbox(label="文章主题") style_input = gr.Dropdown( ["记叙文", "议论文", "说明文", "散文"], label="文体", value="记叙文" ) sections_input = gr.Slider(3, 8, value=5, step=1, label="段落数") word_count_input = gr.Slider(300, 1500, value=600, step=100, label="字数") gen_outline_btn = gr.Button("生成大纲", variant="primary")with gr.Column(): outline_output = gr.Textbox(label="文章大纲", lines=10) gen_article_btn = gr.Button("生成完整文章", variant="primary") article_output = gr.Textbox(label="生成的文章", lines=15) gen_outline_btn.click( generate_outline, inputs=[topic_input, style_input, sections_input], outputs=outline_output ) gen_article_btn.click( generate_article_with_outline, inputs=[topic_input, style_input, word_count_input, outline_output], outputs=article_output )demo.launch()
三、智能翻译助手
🌐 多语言翻译器
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)deftranslate_text(text, source_lang, target_lang, style="标准"):"""智能翻译""" style_prompt = {"标准": "进行标准翻译","文学": "进行文学性翻译,保留原文的美感和意境","商务": "进行商务专业翻译,使用正式的商业用语","口语": "进行口语化翻译,让表达更自然通俗" } prompt = f"""请将以下{text}从{source_lang}翻译成{target_lang}。{style_prompt.get(style, style_prompt["标准"])}原文:{text}要求:1. 准确传达原文意思2. 符合{target_lang}的表达习惯3. 保持原文的语气和风格4. 对于难词或文化特定词汇,可以在括号中加注解释请只输出译文,不要输出其他内容。"""return ai.chat(prompt)with gr.Blocks(title="🌐 AI翻译助手") as demo: gr.Markdown("# 🌐 AI智能翻译")with gr.Row():with gr.Column(): source_text = gr.Textbox(label="原文", lines=6) source_lang = gr.Dropdown( ["中文", "英文", "日文", "韩文", "法文", "德文", "西班牙文"], label="源语言", value="中文" )with gr.Column(): translated_text = gr.Textbox(label="译文", lines=6) target_lang = gr.Dropdown( ["中文", "英文", "日文", "韩文", "法文", "德文", "西班牙文"], label="目标语言", value="英文" ) style = gr.Radio( ["标准", "文学", "商务", "口语"], label="翻译风格", value="标准" ) translate_btn = gr.Button("🔄 翻译", variant="primary")# 快捷交换按钮 swap_btn = gr.Button("⇄ 交换语言")defswap_languages(src_lang, tgt_lang, src_text):return tgt_lang, src_lang, src_text translate_btn.click( translate_text, inputs=[source_text, source_lang, target_lang, style], outputs=translated_text ) swap_btn.click( swap_languages, inputs=[source_lang, target_lang, translated_text], outputs=[source_lang, target_lang, source_text] )demo.launch()
📚 专业术语翻译词典
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)defcreate_term_dictionary(field, terms):"""创建专业术语词典""" term_list = [t.strip() for t in terms.split('\n') if t.strip()] prompt = f"""请为以下{field}领域的专业术语创建中英对照表。术语列表:{chr(10).join(term_list)}请按以下格式输出:| 中文 | 英文 | 简要解释 ||---|---|---|| ... | ... | ... |要求:1. 提供准确的英文翻译2. 给出简洁的中文解释(20字以内)3. 如果术语有多种译法,列出最常用的"""return ai.chat(prompt)with gr.Blocks(title="📚 术语词典生成") as demo: gr.Markdown("# 📚 专业术语词典生成器") field_input = gr.Dropdown( ["计算机", "医学", "法律", "金融", "工程", "教育"], label="专业领域" ) terms_input = gr.Textbox( label="术语列表(每行一个)", lines=8, placeholder="例如:\n人工智能\n机器学习\n深度学习" ) generate_btn = gr.Button("📖 生成词典", variant="primary") dictionary_output = gr.Markdown(label="术语词典") generate_btn.click( create_term_dictionary, inputs=[field_input, terms_input], outputs=dictionary_output )demo.launch()
四、文本摘要与扩写
📰 文章摘要生成器
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)defsummarize_text(text, summary_type, length):"""生成摘要""" type_prompt = {"概括型": "提取文章的核心观点和主要内容","要点型": "列出文章的3-5个关键要点","简洁型": "用一句话概括文章主旨","详细型": "保留重要细节的全面总结" } length_words = {"短": "50-100字","中": "100-200字","长": "200-300字" } prompt = f"""请对以下文章进行摘要。{type_prompt.get(summary_type, type_prompt["概括型"])}摘要长度:{length_words.get(length, "100-200字")}原文:{text}请直接输出摘要内容。"""return ai.chat(prompt)with gr.Blocks(title="📰 文章摘要") as demo: gr.Markdown("# 📰 智能文章摘要") text_input = gr.Textbox(label="原文", lines=10)with gr.Row(): summary_type = gr.Dropdown( ["概括型", "要点型", "简洁型", "详细型"], label="摘要类型", value="概括型" ) length = gr.Dropdown( ["短", "中", "长"], label="摘要长度", value="中" ) summarize_btn = gr.Button("✂️ 生成摘要", variant="primary") summary_output = gr.Textbox(label="摘要", lines=6) summarize_btn.click( summarize_text, inputs=[text_input, summary_type, length], outputs=summary_output )demo.launch()
📝 文章扩写器
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)defexpand_text(text, expansion_type, target_length):"""扩写文章""" type_prompt = {"细节丰富": "增加具体的细节描写,让内容更生动形象","论据补充": "添加更多论据、例子和数据支持","背景扩展": "补充相关背景知识和历史信息","多角度": "从不同角度分析问题,增加深度" } prompt = f"""请对以下文章进行扩写。{type_prompt.get(expansion_type, type_prompt["细节丰富"])}目标字数:约{target_length}字(当前约{len(text)}字)原文:{text}要求:1. 保持原文的核心意思不变2. 新增内容与原文风格一致3. 段落之间过渡自然4. 不要重复原文已有的内容请输出扩写后的完整文章。"""return ai.chat(prompt)with gr.Blocks(title="📝 文章扩写") as demo: gr.Markdown("# 📝 智能文章扩写") original_text = gr.Textbox(label="原文", lines=6)with gr.Row(): expansion_type = gr.Dropdown( ["细节丰富", "论据补充", "背景扩展", "多角度"], label="扩写方式", value="细节丰富" ) target_length = gr.Slider(300, 2000, value=800, step=100, label="目标字数") expand_btn = gr.Button("➕ 开始扩写", variant="primary") expanded_text = gr.Textbox(label="扩写后的文章", lines=12) expand_btn.click( expand_text, inputs=[original_text, expansion_type, target_length], outputs=expanded_text )demo.launch()
五、文本润色与改写
✨ 智能润色工具
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)defpolish_text(text, polish_type, tone):"""润色文本""" type_prompt = {"语法修正": "修正语法错误、错别字和标点问题","流畅优化": "优化句子结构,让表达更流畅自然","文采提升": "增加修辞手法,提升文学性和表现力","逻辑梳理": "调整段落顺序,优化论证逻辑","全面润色": "综合以上所有方面进行全面改进" } tone_prompt = {"正式": "使用正式的书面语,适合学术和商务场合","轻松": "使用轻松活泼的语言,适合日常交流","文艺": "使用优美抒情的语言,富有感染力","简洁": "使用简洁明了的语言,去除冗余" } prompt = f"""请对以下文本进行润色。润色重点:{type_prompt.get(polish_type, type_prompt["全面润色"])}语气风格:{tone_prompt.get(tone, tone_prompt["正式"])}原文:{text}要求:1. 保持原文的核心意思不变2. 标注出主要的修改之处(用【】标出)3. 最后简要说明修改理由请输出润色后的文本。"""return ai.chat(prompt)with gr.Blocks(title="✨ 文本润色") as demo: gr.Markdown("# ✨ 智能文本润色") original = gr.Textbox(label="原文", lines=8)with gr.Row(): polish_type = gr.Dropdown( ["语法修正", "流畅优化", "文采提升", "逻辑梳理", "全面润色"], label="润色类型", value="全面润色" ) tone = gr.Dropdown( ["正式", "轻松", "文艺", "简洁"], label="语气风格", value="正式" ) polish_btn = gr.Button("✨ 开始润色", variant="primary") polished = gr.Textbox(label="润色结果", lines=10) polish_btn.click( polish_text, inputs=[original, polish_type, tone], outputs=polished )demo.launch()
🔄 风格转换器
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)defconvert_style(text, target_style):"""转换文本风格""" style_descriptions = {"古文风": "转换成文言文风格,用词典雅,句式工整","现代白话": "转换成现代口语化表达,通俗易懂","商务正式": "转换成商务正式风格,用词精准规范","网络流行": "转换成网络流行语风格,活泼有趣","诗歌体": "转换成诗歌形式,押韵有节奏感","儿童向": "转换成适合儿童阅读的语言,简单生动" } prompt = f"""请将以下文本转换为{target_style}风格。{style_descriptions.get(target_style, "保持原意,调整表达方式")}原文:{text}请直接输出转换后的文本。"""return ai.chat(prompt)with gr.Blocks(title="🔄 风格转换") as demo: gr.Markdown("# 🔄 文本风格转换器") input_text = gr.Textbox(label="原文", lines=6) target_style = gr.Dropdown( ["古文风", "现代白话", "商务正式", "网络流行", "诗歌体", "儿童向"], label="目标风格", value="古文风" ) convert_btn = gr.Button("🔄 转换风格", variant="primary") output_text = gr.Textbox(label="转换结果", lines=8) convert_btn.click( convert_style, inputs=[input_text, target_style], outputs=output_text )demo.launch()
六、综合项目:全能写作工作台
import gradio as grfrom unified_ai_client import UnifiedAIClient, AIPlatformai = UnifiedAIClient(AIPlatform.DEEPSEEK)defwriting_workshop(action, content, params):"""全能写作工作台"""if action == "生成文章": prompt = f"""请写一篇关于"{content}"的{params['style']}。要求:约{params['length']}字,适合{params['audience']}阅读。"""elif action == "翻译": prompt = f"""请将以下内容从{params['source_lang']}翻译成{params['target_lang']}:{content}"""elif action == "摘要": prompt = f"""请对以下文章进行{params['summary_type']}摘要,约{params['summary_length']}字:{content}"""elif action == "润色": prompt = f"""请对以下文本进行{params['polish_type']}润色,调整为{params['tone']}风格:{content}"""elif action == "扩写": prompt = f"""请将以下文章扩写到约{params['target_length']}字,重点{params['expansion_focus']}:{content}"""else:return"未知操作"return ai.chat(prompt)with gr.Blocks(title="🎯 全能写作工作台") as demo: gr.Markdown("# 🎯 全能写作工作台") gr.Markdown("集成生成、翻译、摘要、润色、扩写于一体的AI写作工具")# 共享的输入区域 content_input = gr.Textbox(label="输入内容", lines=6)with gr.Tab("✍️ 生成文章"):with gr.Row(): topic = gr.Textbox(label="文章主题") style = gr.Dropdown(["记叙文", "议论文", "说明文", "散文"], label="文体") length = gr.Slider(200, 1000, value=500, label="字数") audience = gr.Dropdown(["小学生", "初中生", "高中生", "成人"], label="读者") gen_btn = gr.Button("生成", variant="primary") gen_output = gr.Textbox(label="生成的文章", lines=10) gen_btn.click(lambda c, s, l, a: writing_workshop("生成文章", c, {"style": s, "length": l, "audience": a}), inputs=[topic, style, length, audience], outputs=gen_output )with gr.Tab("🌐 翻译"):with gr.Row(): src_lang = gr.Dropdown(["中文", "英文", "日文"], label="源语言") tgt_lang = gr.Dropdown(["英文", "中文", "日文"], label="目标语言") trans_btn = gr.Button("翻译", variant="primary") trans_output = gr.Textbox(label="译文", lines=6) trans_btn.click(lambda c, s, t: writing_workshop("翻译", c, {"source_lang": s, "target_lang": t}), inputs=[content_input, src_lang, tgt_lang], outputs=trans_output )with gr.Tab("✂️ 摘要"):with gr.Row(): sum_type = gr.Dropdown(["概括型", "要点型", "简洁型"], label="摘要类型") sum_len = gr.Dropdown(["短(50字)", "中(150字)", "长(300字)"], label="长度") sum_btn = gr.Button("生成摘要", variant="primary") sum_output = gr.Textbox(label="摘要", lines=4) sum_btn.click(lambda c, t, l: writing_workshop("摘要", c, {"summary_type": t, "summary_length": l}), inputs=[content_input, sum_type, sum_len], outputs=sum_output )with gr.Tab("✨ 润色"):with gr.Row(): polish_type = gr.Dropdown(["语法修正", "流畅优化", "文采提升", "全面润色"], label="润色类型") tone = gr.Dropdown(["正式", "轻松", "文艺", "简洁"], label="语气") polish_btn = gr.Button("润色", variant="primary") polish_output = gr.Textbox(label="润色结果", lines=8) polish_btn.click(lambda c, p, t: writing_workshop("润色", c, {"polish_type": p, "tone": t}), inputs=[content_input, polish_type, tone], outputs=polish_output )with gr.Tab("➕ 扩写"):with gr.Row(): exp_focus = gr.Dropdown(["增加细节", "补充论据", "扩展背景"], label="扩写重点") target_len = gr.Slider(500, 2000, value=800, label="目标字数") exp_btn = gr.Button("扩写", variant="primary") exp_output = gr.Textbox(label="扩写结果", lines=10) exp_btn.click(lambda c, f, l: writing_workshop("扩写", c, {"expansion_focus": f, "target_length": l}), inputs=[content_input, exp_focus, target_len], outputs=exp_output )demo.launch()
七、本章知识点总结
|
|
|
|---|---|
| 文章生成 |
|
| 智能翻译 |
|
| 文本摘要 |
|
| 文章扩写 |
|
| 文本润色 |
|
| 风格转换 |
|
| 综合应用 |
|
📝 课后作业
必做题
-
运行所有示例代码,体验不同的文本生成功能 -
修改文章生成器,添加”保存到文件”功能 -
实现一个”对比模式”:同时显示原文和润色后的文本
选做题
-
添加更多的翻译语言选项(如法语、德语、西班牙语) -
实现批量处理功能(一次处理多篇文章) -
添加导出功能(支持导出为Word、PDF格式)
思考题
-
AI生成的文章有哪些局限性?如何弥补? -
在使用AI辅助写作时,如何保持自己的原创性? -
设计一个更好的提示词(prompt)有哪些技巧?
🚀 预告下一章
第三章我们将学习 《对话机器人开发——打造你的AI聊天伙伴》,你将学会:
-
多轮对话的实现 -
上下文管理 -
角色扮演 -
记忆功能 -
制作个性化聊天机器人
准备好创造你自己的AI伙伴了吗?我们下节课见!
记住:最好的写作是人机协作——AI负责效率,你负责灵魂。让AI成为笔,你来做执笔的人!✍️✨
夜雨聆风