在当今数字化浪潮中,大模型技术正以前所未有的速度渗透进工作生活的诸多领域,重塑着我们处理事务的方式。于职场而言,撰写周报是一项周期性且至关重要的工作,它既是对过往一周工作的复盘梳理,也是为后续工作铺就规划路径的关键环节。然而,手工撰写周报往往耗费大量时间精力,还可能因表述疏漏、重点失焦等问题,影响信息传递效果。此时,借助大模型的强大能力,并运用精巧设计的Prompt工程,恰似为我们打开了一扇通往高效、精准周报生成的便捷之门。本文将以构建一个周报小助手为切入点,深入探究如何施展Prompt工程“魔法”,让大模型输出更契合我们心意、更具价值的周报内容,同时分享一系列优化大模型回答表现的实用策略与技巧。
周报小助手诞生记:基础搭建篇
(一)素材筹备:精心准备日报数据
要打造周报小助手,第一步便是为其准备充足且有序的“弹药”——日报数据。在我们专属的开发目录下,需精心构筑一个存放日报文件的“专区”,且统一规范为txt
格式,其目录架构仿若一座层次分明的信息“楼阁”:
|-- 02_prompt_engineering_weekly_report_helper.ipynb
|-- daily
|-- 1.txt
|-- 2.txt
|-- 3.txt
|-- 4.txt
`-- 5.txt
这些日报文件绝非空洞无物,而是承载着一周工作点滴的“时光宝盒”。每份日报里,详实记录了当日工作的成果收获、遭遇难题以及对明日工作的清晰规划,就像一部部微型工作“纪录片”。你既可以依据自身日常工作的实际轨迹,原汁原味地录入内容,将项目推进细节、会议研讨要点、技术攻克历程等逐一呈现;也可凭借自身工作积累与经验,快速填充起这些日报文件,为后续周报生成筑牢根基。
(二)数据整合:读取日报并“编织”内容纽带
有了日报素材,紧接着便是编写“魔法代码”,将分散的日报信息汇聚成连贯一体的“信息流”。在此,我们精心打造一个名为get_daily_content
的专属方法,它宛如一位勤勉的“信息工匠”,专注于遍历日报目录下的每份文件,逐字逐句读取其中内容,并巧妙拼接整合,最终编织成一条完整的、以换行符相隔的文本“纽带”。以下便是这段充满“匠心”的代码片段:
import os # 引入系统交互“神器”,赋予代码与操作系统对话之力,自如穿梭文件目录间
def get_daily_content() -> str:
daily_dir = "./daily/" # 精准锚定日报文件的“栖息之所”,为后续读取指明方向
daily = [] # 初始化一个“收纳盒”,静候日报内容“入住”
# 调遣os模块的listdir“侦察兵”,全面搜罗日报目录下的所有“文件居民”
files = os.listdir(daily_dir)
# 开启循环“传送带”,逐一输送文件进行读取操作
for file in files:
with open(daily_dir + file, "r") as f: # 轻启文件“大门”,以只读模式恭迎内容“现身”
daily.append(f.read()) # 将读取到的“宝藏内容”小心翼翼存入收纳盒
return "\n".join(daily) # 启用拼接“魔法”,让日报内容紧密相连,华丽变身字符串并凯旋而归
print(get_daily_content()) # 迫不及待“校验成果”,打印输出整合后的日报内容,确保万无一失
运行这段代码,屏幕上便会如“竹简展卷”般,依次呈现出一周内每日工作的详尽记录,恰似一幅徐徐展开的工作“长卷”,清晰勾勒出工作脉络,为周报生成备足“底料”。
(三)初次召唤:驱动大模型生成周报初稿
万事俱备,只欠东风。此刻,便是邀请大模型“出山”,施展周报生成“绝技”的高光时刻。借助OpenAI强大的API接口,我们在代码世界里搭建起一座与大模型“对话”的“桥梁”。先是引入必备的“沟通工具”——OpenAI库与环境变量加载库,再巧妙配置API访问路径等关键参数,继而精心雕琢一段特殊的“对话指令”(Prompt),将生成周报的殷切诉求与整合好的日报内容紧密融合,郑重传递给大模型。以下便是这段激动人心的代码“桥段”:
from openai import OpenAI # 携OpenAI库“入场”,解锁与大模型深度交互的“密码”
from dotenv import load_dotenv # 引入环境变量“管家”,确保API配置顺畅就位
import os # 再次借力系统交互“得力助手”,稳稳把控环境变量获取与运用
load_dotenv() # 唤醒“管家”,加载.env文件中隐匿的关键环境变量,铺就API连接“红毯”
base_url = os.getenv("OPENAI_API_BASE_URL") # 精准抓取API的“专属地址”,定位“对话入口”
# 凭借获取到的关键信息,激活OpenAI客户端,唤醒沉睡的大模型“智慧力量”
client = OpenAI(
base_url=base_url,
)
prompt = "请帮我生成周报\n" + get_daily_content() # 匠心独运“拼凑”对话指令,周报诉求与日报详情“珠联璧合”
print(prompt) # 审慎校验指令完整性,打印输出拼接后的内容,确保准确无误传达心意
print("生成中,请稍等...") # 贴心送上“温馨提示”,告知大模型正忙碌于“头脑风暴”,即将呈上答卷
# 正式发起“对话请求”,激活大模型的周报生成“引擎”,这里选用OpenAI广为人知且性能卓越的gpt-3.5-turbo模型
chat_completion = client.chat.completions.create(
model="gpt-3.5-turbo", # 钦点备受赞誉的gpt-3.5-turbo模型“助手”,开启智慧协作之旅
# temperature=0.5, # 可按需调控的“创意旋钮”,微调生成文本的随机程度,此处暂作“休眠”
# max_tokens=60, # 限定输出“篇幅标尺”,约束生成文本长度,当前暂未启用
# top_p=1, # 掌控文本多样性的“调节阀”,暂处于“默认全开”状态
messages=[{"role": "user", "content": prompt}] # 庄重递上“对话函件”,内含精心炮制的指令与日报“干货”
)
print(chat_completion.choices[0].message.content) # 满怀期待“接收馈赠”,打印输出大模型精心打磨的周报内容
眨眼间,大模型便依据指令与日报信息“挥毫泼墨”,一份周报初稿跃然眼前。它条理清晰地梳理本周工作事项,从项目攻坚、技术研讨到团队协作,再到对下周工作的初步擘画,虽初具雏形,但已然可见大模型强大的信息归纳与规划能力。
优化升级之路:让大模型回答更“出彩”
(一)遵循原则“定航向”:清晰指示与充足思考
审视这份初稿,若想雕琢得更加完美,恰似航海需遵循“罗盘指引”一般,要依从两大关键原则。其一,指令下达需如“工笔画作”般精细明晰,将我们对周报内容重点、风格、详略程度等期望,毫无保留、精准无误地传达给大模型,避免模糊歧义导致“答非所问”;其二,要像给予挚友充分时间构思佳作一样,赋予大模型足够的“时光沉淀”,让它在字里行间深入剖析日报内涵,挖掘价值“宝藏”,而非仓促“交卷”,确保输出饱含深度、逻辑缜密。
(二)CRISPE框架“筑基石”:多维度优化Prompt
在优化Prompt的“工具箱”里,CRISPE框架堪称一块“万能基石”。从能力与角色维度(CR)出发,为大模型披上“周报小助手”的“职业外衣”,明确自身辅助周报撰写的使命,同时界定使用者(如软件架构师等)身份,让它找准“服务对象”;洞察维度(I)下,将日报内容这一丰富背景“画卷”完整铺陈,为大模型理解工作情境、把握任务背景注入“底气”;陈述维度(S)中,直白干脆地抛出“按金字塔原理总结周报且凸显价值点”的核心诉求,令其目标清晰;个性维度(P)可按需定制,或严谨专业、或简洁明快,让周报风格“因人而异”;实验维度(E)则鼓励大模型“头脑风暴”,多备几份答案“预案”,供我们择优而用。依循此框架改造Prompt,代码如下:
prompt = f"""你的身份是一名专业周报小助手,专为软件架构师排忧解难。此刻,摆在面前的是我本周的日报详情:\n
{daily_contents}\n
请施展浑身解数,依循金字塔原理精雕细琢一份周报,务必将每项工作的价值亮点雕琢得熠熠生辉。
"""
经此优化,再看生成的周报,价值要点仿若被聚光灯照亮,跃然纸上,项目推进步骤更清晰,各环节意义一目了然,较初稿实现质的飞跃。
(三)Few - Shot“添羽翼”:示例引领促提升
为让大模型输出更契合心意,Few - Shot策略恰似为其添上一对“模仿羽翼”。精心甄选几份优质日报示例,附上理想中的周报总结“标准答案”,一同呈递给大模型,宛如师傅示范“标准招式”。代码架构如下展示,大模型“依葫芦画瓢”,参考示例风格、格式与逻辑,对我们的周报进行“临摹创作”,最终输出在形式、条理上与示例“神似”的周报,且重点突出、逻辑井然。
from openai import OpenAI # 再次引入OpenAI库,重启与大模型的“智慧连线”
from dotenv import load_dotenv # 唤醒环境变量“加载助手”,保障API配置顺畅无阻
import os # 借助系统交互“伙伴”,稳固获取环境变量操作
load_dotenv() # 激活“加载助手”,引入.env文件里的关键配置,铺就API畅通“轨道”
base_url = os.getenv("OPENAI_API_BASE_URL") # 锁定API“对接坐标”,找准对话“端口”
# 唤醒OpenAI客户端,唤醒大模型“沉睡智慧”,筹备新一轮“创作征程”
client = OpenAI(
base_url=base_url,
)
# 示例1:呈上日报“谜面”与周报“谜底”,为大模型“解谜”示范
example_1_input = """你的身份是一名周报小助手,我的身份是一名软件架构师,下面是我本周的日报:
- 完成了模块A的初步设计,并与团队进行了方案讨论。
- 配合开发人员解决了模块B的性能瓶颈问题。
- 组织了两次架构评审会议,确保了项目进度的顺利推进。
- 协助项目经理制定了下个月的开发计划。
请按照金字塔原理进行总结成一份周报,注意体现价值点。
"""
example_1_output = """本周主要完成了以下工作:
1. 完成模块A的初步设计,推动团队讨论以确定最终方案。
2. 解决模块B的性能瓶颈,优化系统性能。
3. 组织架构评审会议,确保项目进度顺利进行。
4. 协助项目经理制定开发计划,确保下个月目标明确。
整体来看,本周的工作有效提升了系统性能,并确保了项目的顺利推进。"""
# 示例2:再度展示日报“样本”与周报“标杆”,强化示范效果
example_2_input = """你的身份是一名周报小助手,我的身份是一名软件架构师,下面是我本周的日报:
- 完成了数据库的优化设计,提高了日前效率。
- 编写了新功能模块的技术文档,为后续开发提供参考。
- 协助测试团队进行压力测试,定位并修复了多个性能问题。
- 参加了公司技术分享会,分享了微服务架构的实践经验。
请按照金字塔原理进行总结成一份周报,注意体现价值点。
"""
example_2_output = """本周主要工作包括:
1. 完成数据库优化设计,大幅提升查询效率。
2. 编写新功能模块的技术文档,为后续开发奠定基础。
3. 协助测试团队进行压力测试,修复性能问题。
4. 在公司技术分享会,分享微服务架构的经验。
这些工作提升了系统性能,同时也为团队技术能力的提升做出了贡献。"""
# 融入当前真实日报内容,搭建完整Prompt“舞台”
daily_contents = get_daily_content()
prompt = f"""你作为周报小助手界的‘精英’,以下是范例‘秘籍’与对应总结‘宝典’,请潜心研习并据此生成全新周报总结:
范例1:
日报详情:
{example_1_input}
总结精华:
{example_1_output}
范例2:
日报详情:
{example_2_input}
总结精华:
{example_2_output}
此刻呈上我的本周日报:
{daily_contents}
请依循金字塔原理,萃取精华,铸就一份价值满溢的周报。
"""
print("生成中,请稍等...") # 贴心送上“进度提示”,告知大模型“创作”开启
# 触发大模型“创作引擎”,静候优化后的周报“出炉”
chat_completion = client.chat.completions.create(
model="gpt-3.5-turbo", # 选定“智慧搭档”,携手开启创作之旅
messages=[{"role": "user", "content": prompt}] # 递上精心筹备的Prompt“脚本”,期待精彩“演出”
)
print(chat_completion.choices[0].message.content) # 欣然揭晓“创作成果”,展示优化后的周报内容
如此这般,借助Few - Shot策略与CRISPE框架双重“加持”,大模型生成的周报愈发精良,成为我们工作复盘、规划的得力“参谋”。此外,像链式思考(COT)、结合自我一致性的COT+SC、基于思考树的TOT以及回顾修正的Step - Back等更多Prompt“奇招妙法”,大家可循着文末学习资料深入探索,持续挖掘大模型潜能,让其在周报乃至更多工作场景中大放异彩。
学习资料补给站
文档信息
- 本文作者:王翊仰
- 本文链接:https://www.wangyiyang.cc/2024/11/27/02_prompt_engineering_build_weekly_report_helper_optimize_llm/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)