一、模型调参三剑客 1. 温度(Temperature) 低温度(0.1):"天空是__" → "蓝色的"(确定性高) 高温度(0.9):"天空是__" → "撒满星星的画布"(创造性高) 2. Top-K & Top-P 实用参数设置: 精确答案型任务:temperature=0, top_k=1(严格预测模式) 创意文案型任务:temperature=0.9, top_k=40, top_p=0.95(发散思维模式) 通用问答型任务:temperature=0.2, top_k=30, top_p=0.8(平衡模式) 二、提示词格式大比拼 同样需求,不同提问方式,效果大不同:
# 三种提问方式实验 prompts = [ # 问题型 "世嘉Dreamcast是什么,为什么它被认为是革命性的游戏机?", # 陈述型 "世嘉Dreamcast是1999年发布的第六代游戏主机...", # 指令型 "写一段介绍世嘉Dreamcast的文字,解释为什么它在游戏主机历史上具有革命性意义。" ] # 输出三种不同结果比较 forpromptinprompts: response = model.predict(prompt, temperature=0.7) print(f"提示类型:{prompt[:10]}...\n输出:{response}\n---")三、三种提示模式大揭秘 1. 系统提示(System Prompting) # 电影评论分类器 prompt =""" 分类电影评论为积极、中性或消极。 只返回大写标签。 评论:《她》(Her)是一部揭示人工智能发展方向的令人不安的影片, 看得我太难受了,根本看不下去。 情感: """2. 角色提示(Role Prompting) # 旅游顾问角色 prompt =""" 我希望你扮演一名旅游顾问。 我会告诉你我的位置,你需要用幽默风格为我推荐3个地方。 我的要求:"我在曼哈顿" """ # 输出:将用幽默语气介绍帝国大厦、MoMA和第五大道3. 上下文提示(Contextual Prompting) # 复古游戏博客 prompt =""" 上下文:你正在为一个关于80年代街机游戏的博客写作。 建议3个文章主题,每个主题附带简短描述。 """ # 输出:街机游戏柜设计演变、80年代标志性游戏、像素艺术的兴起与复兴四、高级思维技巧 1. 思维链(CoT)实战 错误示范 : "小明3岁时姐姐年龄是小明的3倍,现在小明20岁,姐姐几岁?" → 错误答案:63岁
正确姿势 :
请分步骤思考: 1.小明3岁时,姐姐年龄:3 × 3 = 9岁 2.年龄差:9 - 3 = 6岁 3.现在小明20岁,姐姐:20 + 6 = 26岁2. 步退提示(Step-back Prompting) # 第一步:先退一步,思考更一般性的问题 response1 = model.predict("哪些场景适合第一人称射击游戏的关卡设计?") # 输出:废弃军事基地、赛博朋克城市、外星飞船、僵尸小镇、水下研究设施... # 第二步:基于一般性回答,再回到具体问题 prompt2 =f""" 参考以下场景: {response1} 现在,为第一人称射击游戏设计一个引人入胜的关卡剧情。 """ response2 = model.predict(prompt2) # 输出:一个更有深度和细节的游戏关卡设计3. 思维树(Tree of Thoughts) ▲ 思维链vs思维树:从单一推理到多路径探索 举个例子看看:
4. 自一致性(Self-consistency)
# 用多次推理验证答案 responses = [] foriinrange(5): # 运行5次同样的问题 response = model.predict( "判断邮件内容是重要还是不重要,要分步骤思考:\n[邮件内容]\n判断结果:", temperature=0.8# 使用高温度产生多样化结果 ) responses.append(response) # 统计最多数结果 importcollections result = collections.Counter([r.split("结论:")[-1].strip()forrinresponses]).most_common(1)[0][0] print(f"最终判断:{result}")5. ReAct模式(推理+行动) fromlangchain.agentsimportload_tools fromlangchain.agentsimportinitialize_agent # 初始化搜索工具 tools = load_tools(["serpapi"], llm=llm) agent = initialize_agent( tools, llm, agent="zero-shot-react-description", verbose=True ) # 执行多步查询 agent.run("Metallica乐队成员共有多少个孩子?")执行过程:
思考: Metallica有4名成员 行动: 搜索"How many kids does James Hetfield have?" 观察: three children 思考: 1/4成员有3个孩子 行动: 搜索"How many kids does Lars Ulrich have?" 观察: 3 思考: 2/4成员共有6个孩子 ...最终答案: 10五、代码提示专家秘笈 1. 生成代码 prompt =""" 编写一个Bash脚本,询问文件夹名称,并将该文件夹内的所有文件 重命名为在原文件名前添加'draft_'前缀。 """2. 调试代码 prompt =""" 下面的Python代码有错误: ```python import os import shutil folder_name = input("请输入文件夹名: ") prefix = input("请输入前缀: ") text = toUpperCase(prefix) # 错误在这里 ...请诊断问题并给出正确解决方案。 """
## 六、结构化输出黑科技 ```json { "电影评价": { "情感倾向":" OSITIVE", "理由": ["演技精湛","剧情紧凑"], "推荐指数": 4.5 } }优势 :
七、实用提示词模板大全 # 角色扮演模板 作为[专业角色],请[执行任务],要求[具体要求]。 例:作为财务顾问,分析以下季度报告的关键指标,重点关注盈利增长点。 # 步骤分解模板 请按照以下步骤完成[任务]: 1.首先... 2.接着... 3.最后... # 对比分析模板 请比较[A]和[B]在以下几个方面的异同: -成本效益 -实施难度 -长期价值八、避坑指南 好例子: 正例:"这个餐厅服务超棒!" → POSITIVE 反例:"食物是冷的" → NEGATIVE 中性:"上菜速度一般" → NEUTRAL✅ 好例子:"生成一段关于世嘉DC的文字,只讨论硬件规格和发布时间" ❌ 坏例子:"生成一段关于世嘉DC的文字,不要提及游戏和价格"| 提示名称 | 目标 | 模型 | 温度 | Top-K | Top-P | 提示内容 | 输出结果 | |--------|------|-----|-----|-------|------|--------|--------| | 游戏评论v1 | 分析游戏特点 | gemini-pro | 0.2 | 40 | 0.8 | ... | ...