🔥 从 Python 字典到 LLM Prompt:我的"打怪升级"笔记
用真实代码带你"躺赢" Prompt 工程,顺便搞懂 Python 数据结构!
📋 目录
- [先从 Python 字典开始](#先从 Python 字典开始 "#%E5%85%88%E4%BB%8E-python-%E5%AD%97%E5%85%B8%E5%BC%80%E5%A7%8B")
- [快速上手 LLM API](#快速上手 LLM API "#%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B-llm-api")
- [Prompt 设计实战:6 个真实"骚操作"](#Prompt 设计实战:6 个真实"骚操作" "#prompt-%E8%AE%BE%E8%AE%A1%E5%AE%9E%E6%88%98")
- 总结与心得
📚 先从 Python 字典开始
在学 Prompt 之前,先撸一遍 Python 数据结构,你会发现它们和 Prompt 设计简直是"失散多年的亲兄弟"!
字典 Dict:快到飞起的查找
python
# 来自 未命名2.ipynb
d = {'Michale':95,'bob':75,'tracy': 85}
d['bob'] # 直接找到,不用从第一个人开始点名
原理:字典用哈希表(Hash Table),通过 key 直接算出 value 住在哪,就像查字典翻索引页一样,谁还会从第一页开始找"张三"啊!
添加和查找元素(带"保险"的那种)
python
# 来自 未命名2.ipynb
d['Adam'] = 67 # 新人报到
d['Thomas'] = 99 # 插班生也来了
d['Thomas'] # 喊名字立马答应
# 万一有人没来怎么办?
print(d.get('Thomas')) # 没人?→ None(不报错!)
print(d.get('Thomas', -1)) # 没人?→ 给你个 -1(自定义备胎值)
print(d.get('bob', -1)) # 有人?→ 75(正常返回)
Set 集合:专治"重复症"
python
# 来自 未命名2.ipynb
s = {1, 2, 3}
s = set([1, 2, 3, 1, 5]) # 自动去重 → {1, 2, 3, 5}(1 重复了两次直接被踢)
s.add(4) # 加个新人
s.remove(4) # 看你不爽,踢了
# 搞点社交
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 & s2 # 共同好友(交集)→ {2, 3}
s1 | s2 # 朋友圈大合影(并集)→ {1, 2, 3, 4}
🚀 快速上手 LLM API
让我们看一下 未命名3.ipynb 里的"真香"代码!
初始化 OpenAI 客户端(就像加个微信)
python
# 来自 未命名3.ipynb
from openai import OpenAI
client = OpenAI(
api_key="sk-你的密钥别硬编码", # 建议用环境变量,别把密码贴代码里
base_url="https://api.deepseek.com"
)
封装调用函数(一键使唤 AI)
python
# 来自 未命名3.ipynb
def get_completion(prompt, model='deepseek-chat'):
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.5, # 0 是"老干部",2 是"诗人"(越大约放飞自我)
max_tokens=1024 # 控制 AI 话痨程度
)
return response.choices[0].message.content
# 测试一下:让 AI 写首诗
get_completion("写一首冬天游玩的七言诗")
AI 输出
erlang
《冬游》
寒云凝雪覆千峰,策杖寻幽兴未穷。
冰瀑垂帘悬玉练,霜枝缀玉舞琼风。
踏痕印石苔痕冷,鸟迹藏踪兽迹空。
忽见山家烟起处,一壶浊酒暖炉红。
赏析:这首作品以冬日游山为背景...
写的确实不赖
💡 Prompt 设计实战:6 个真实"骚操作"
案例 1:文本总结(把长文"压缩成薯片")
python
# 来自 未命名3.ipynb
text = f"""
你应当通过尽可能清晰、具体的指令,来明确你希望模型完成的任务。
这能引导模型产出符合预期的结果,同时降低回复内容偏离主题或出现错误的概率。
不要把编写清晰的提示词和精简提示词混为一谈。
很多时候,篇幅更长的提示词能为模型提供更完整的说明与背景信息,进而让输出内容更加详实、贴合需求。
"""
prompt = f"""
将三个反引号之间的文本总结为一句话
```{text}```
"""
print(get_completion(prompt))
输出:
清晰的指令应具体而非精简,更长的提示词能提供更完整的背景信息,从而引导模型产出更贴合需求的输出。
案例 2:JSON 格式输出(让 AI 乖乖填表)
python
# 来自 未命名3.ipynb
prompt = f"""
请列出四大名著,并标出对应的作者与书籍类型。
使用JSON格式呈现,需包含一下字段,book_id(书籍编号),title(书名),author(作者),desc(简介),
genre(书籍内容)
"""
print(get_completion(prompt))
输出(AI 乖乖填表中):
json
[
{
"book_id": 1,
"title": "三国演义",
"author": "罗贯中",
"desc": "描写了从东汉末年到西晋初年之间近百年的历史风云...",
"genre": "历史演义小说"
},
...
]
案例 3:步骤提取(把"流水账"变成"说明书")
python
# 来自 未命名3.ipynb
text = f"""
泡一杯茶其实很简单!首先把水烧开。烧水的同时,拿出茶杯,放入
茶包。水烧开后,将热水冲入杯中浸泡茶包。静置片刻让茶香析出。
几分钟后,根据个人口味,还可以加入糖或牛奶。这样一杯美味的
茶饮就泡好了。
"""
prompt = f"""
你将收到由三引号包裹的文本。若文本中包含一些列操作指令,
请按照下述格式重新整理这些指令。
步骤 一 ...
步骤 二 ...
...
步骤 N ...
如果文本中没有一系列操作指引,直接输出**"没有提供步骤。"**
{text}
scss
"""
print(get_completion(prompt))
输出(秒变"泡茶大师"):
步骤 一 把水烧开。
步骤 二 烧水的同时,拿出茶杯,放入茶包。
步骤 三 水烧开后,将热水冲入杯中浸泡茶包。
步骤 四 静置片刻让茶香析出。
步骤 五 几分钟后,根据个人口味,加入糖或牛奶。
案例 4:没有步骤时的处理(AI 也会"打太极")
python
# 来自 未命名3.ipynb
text_2 = f"""
今日阳光明媚,鸟儿欢唱。这样的好天气很适合去公园散步。
花儿竞相绽放,树木在微风中轻轻摇曳。
人们纷纷出门,享受这宜人的天气。
"""
prompt = f"""
你将收到由三引号包裹的文本。若内容包含一系列操作指令,请按以下格式重新整理:
第 1 步 - ...
第 2 步 - ...
......
第 N 步 - ...
如果文本中没有相关操作指令,直接输出:未提供步骤。
{text_2}
scss
"""
print(get_completion(prompt))
输出:
未提供步骤
案例 5:风格保持(给 AI"定人设")
python
# 来自 未命名3.ipynb
prompt = f"""
你的任务是保持统一的行文风格作答
提问:请讲讲何为耐心
回答:能凿出幽深峡谷的江河,源自涓涓细流;
恢弘壮阔的交响乐,起于单个音符;
精美繁复的织锦,始于一缕丝绒。
请问:请讲讲何为韧性。
"""
print(get_completion(prompt))
输出(AI 秒变"哲学家"):
能擎起整座穹顶的竹,先要弯下腰身;
能劈开顽石的滴水,须得日夜不歇;
能渡尽千帆的锚链,必在浪中锻打。
案例 6:引导模型逐步推理(让 AI"写过程不直接给答案")
python
# 来自 未命名3.ipynb
text = f"""
在一座风光宜人的小村庄里,姐弟俩杰克和吉尔动身前往山顶的水井取水。
两人一路欢歌向上攀登,不料意外突生------杰克被石头绊倒,滚下山坡,吉尔也跟着摔了下去。
二人虽受了些轻伤,还是回到了家中,得到家人温柔的安抚。
这场小意外并未磨灭他们冒险的兴致,此后他们依旧满心欢喜地四处游玩。
"""
prompt = f"""
执行以下操作:
将三个反引号内的文本概括为一句话。
把这句摘要翻译成法语。
列出法语摘要之中出现的所有人名。
输出JSON对象,包含字段:french_summary, num_names.
答案分行展示。
文本:
{text}
scss
"""
print(get_completion(prompt))
输出(AI 一步步来,不偷懒):
json
{
"french_summary": "Dans un charmant petit village...",
"num_names": 2
}
⚠️ 注意:LLM 的"幻觉"(AI 也会"吹牛")
python
# 来自 未命名3.ipynb
prompt = f"""
介绍一下李宇刚品牌的喜多多饮料
"""
print(get_completion(prompt))
输出(AI 开始一本正经地胡说八道):
erlang
你好!关于你提到的"博一品牌"的"喜多多饮料",我需要先帮你澄清一下...
注意:LLM 可能会编造不存在的东西!就像你问它"如何制造时光机",它也能给你编出一堆步骤,所以重要信息要自己验证哦!
🎯 总结与心得
Python 数据结构教会我的"人生哲理"
| 数据结构 | 特点 | Prompt 设计启示 |
|---|---|---|
| Dict | 通过 key 直接定位 | Prompt 要具体、清晰,别让 AI"猜谜语" |
| List | 要顺序查找(慢) | 模糊的 Prompt 效率低,AI 要"瞎蒙"半天 |
| Set | 自动去重 | Prompt 要避免说废话,一句话能说清别绕三圈 |
Prompt 设计"三字经"(来自 readme.md)
- 写清楚 - 别让 AI 猜,不然它会给你"惊喜"
- 分步走 - 让 AI 一步步思考,不容易出错
- 用模板 - f-string 太香了,可复用还易维护
核心"小抄"
- 三引号包裹 - 把内容和指令分清楚,就像外卖备注和菜品分开
- 指定输出格式 - JSON、列表、步骤...想要什么格式直接说
- 温度参数 - 0 是"严谨老教授",2 是"文艺青年",按需取用
- 少样本学习 - 给几个例子,AI 一看就懂