Prompt工程核心与Python 字典

这是一篇学习笔记式的技术博客,内容源自对 Prompt 工程、Python 数据结构及 JavaScript 基础的系统整理,适合用来复习和分享。


一、Prompt 工程两大核心原则

1. 撰写清晰、具体的指令

让大模型输出符合预期,关键在于指令要具体。不要把"清晰"和"精简"混为一谈------很多时候,篇幅更长的提示词能提供更完整的背景信息,让输出更加详实。

示例:总结文本

python 复制代码
text = """
你应当通过尽可能清晰、具体的指令,来明确你希望模型完成的任务。
这能引导模型产出符合预期的结果,同时降低回复内容偏离主题或出现错误的概率。
不要把编写清晰的提示词和精简提示词混为一谈。
很多时候,篇幅更长的提示词能为模型提供更完整的说明与背景信息,进而让输出内容更加详实、贴合需求。
"""

prompt = f"""
将三个反引号之间的文本总结为一句话
```{text}```
"""
# 输出:清晰的指令应具体且详尽,而非简单精简,长提示词能提供更完整的背景信息,
#        从而提升模型输出的准确性和相关性。

示例:指定输出格式

python 复制代码
prompt = """
请列出四大名著,并标注对应的作者与书籍类型。
使用JSON格式呈现,需包含以下字段:book_id、title、author、desc、genre
"""

示例:分步骤提取指令

python 复制代码
text = """
泡一杯茶其实很简单!首先把水烧开,烧水的同时,拿出茶杯放入茶包,
水开之后将开水冲入杯中浸泡茶包。静止片刻后让茶香析出。
几分钟后,根据个人口味,还可以加入糖或牛奶。这样一杯美味的茶饮就泡好了。
"""

prompt = """
若文本中包含一系列操作指令,请按照下述格式重新整理:
步骤1、...
步骤2、...
如果文本中没有一系列操作指引,直接输出"没有提供步骤。"
"""
# 输出:
# 步骤1、把水烧开。
# 步骤2、烧水的同时,拿出茶杯放入茶包。
# 步骤3、水开之后将开水冲入杯中浸泡茶包。
# ...

2. 引导模型逐步推理(Chain of Thought)

对于复杂任务,让模型分步执行比一次性输出效果更好。

python 复制代码
text = """
在一座风光宜人的小村庄里,姐弟俩杰克和吉尔动身前往山顶的水井取水...
"""

prompt = """
执行以下操作:
1. 将文本概括为一句话
2. 把摘要翻译成法语
3. 列出法语摘要中出现的所有人名
4. 输出JSON对象,包含字段:french_summary、num_names
"""
# 模型会按步骤逐一完成,最终返回结构化的 JSON 结果

3. Few-Shot 提示:给模型打个样

给 LLM 提供少量样本,让它模仿统一的风格和格式。

python 复制代码
prompt = """
你的任务是保持统一的行文风格作答。

提问:请讲讲何为耐心?
回答:凿出幽深峡谷的江河,源自涓涓细流;
恢弘壮阔的交响乐,起于一个个音符;
精美繁复的织锦,始于一缕缕丝绒。

请讲讲何为伟大?
"""

二、LLM API 调用封装

基本调用函数

python 复制代码
from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

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,   # 控制输出长度
    )
    return response.choices[0].message.content

关键参数说明

参数 说明
model 模型名称,如 deepseek-chatgpt-4
messages 对话列表,每条消息包含 role(user/assistant/system)和 content
temperature 0~2,0 代表确定性最高,2 代表随机性最强
max_tokens 限制输入+输出的 token 总量

f-string 多行字符串

python 复制代码
text = f"""
这是一个多行字符串模板,
可以直接嵌套 {变量},
非常适合用来构造 Prompt。
"""

三、Python Dict 与 HashTable 原理

为什么叫"字典"?

Dict(字典)的核心优势是 O(1) 时间复杂度查找------就像查字典时通过偏旁部首或字母索引直接定位,不需要从第一个字翻到最后一个字(O(n))。

假设要根据名字查成绩,不用字典的替代方案:

python 复制代码
# 两个平行列表,靠下标对应
names = ["张三", "李四", "王五"]
scores = [90, 85, 92]

# 查李四的成绩
index = names.index("李四")  # O(n) 线性查找
score = scores[index]

HashTable 工作原理

scss 复制代码
key → hash(key) → 唯一整数 → 取模 → 数组索引 → 值的内存地址 → 拿到 value
  • key 必须唯一且可哈希(hashable) ,即必须是不可变对象
  • 若 key 可变(如 list),每次 hash 的结果可能不同,dict 内部就会混乱
  • key = [1,2,3] 会报错 unhashable type: 'list'

Dict vs List

Dict List
查找/插入速度 极快,不随数据量增长而变慢 随元素增加而变慢
内存占用
适用场景 高速查找 节省内存

Set

Set 和 Dict 原理一致,区别是 Set 只存 key,不存 value。由于 key 不能重复,Set 天然去重。

不可变对象再谈

python 复制代码
a = 'abc'
a.replace('a', 'A')
print(a)  # 仍然是 'abc'

# str 是变量,'abc' 才是字符串对象
# replace 作用在对象上,返回新字符串 'Abc',原对象不变

四、JavaScript 变量提升(Hoisting)

函数声明优先于 var 声明

javascript 复制代码
// 结果输出 1
showName();
function showName() {
    console.log(1);
}
var showName = function() {
    console.log(2);
}

JS 引擎执行时等价于:

javascript 复制代码
function showName() { console.log(1); }  // 函数声明提到最前
// var showName; (被忽略,因为已有同名函数)
showName();
showName = function() { console.log(2); };

同名函数,后者覆盖前者

javascript 复制代码
var showName = function() { console.log('极客帮'); }
showName();  // 极客帮
var showName = function() { console.log('极客时间'); }
showName();  // 极客时间

如果是函数声明方式,同样最后一个生效:

javascript 复制代码
function showName() { console.log('极客帮'); }
showName();  // 极客时间
function showName() { console.log('极客时间'); }
showName();  // 极客时间

五、LLM 幻觉

LLM 有时会生成看似合理但实际不正确的信息。比如问"niko 的 major 冠军"------实际上 Niko 从未获得过 Major 冠军,但模型可能会生成看似详细的"夺冠经历"。这是使用大模型时需要始终警惕的问题。


总结

模块 要点
Prompt 原则 清晰具体 + 引导逐步推理 + Few-Shot 样本
API 参数 temperature(随机性)、max_tokens(长度控制)
Dict/Hash O(1) 查找、key 必须可哈希(不可变)
Set 只有 key 没有 value,天然去重
JS 变量提升 函数声明 > var 声明,同名函数后者覆盖
LLM 幻觉 模型会编造看似合理的内容,需保持警惕
相关推荐
feeday2 小时前
gpt4o 图像反推提示词
开发语言·人工智能·python
Bigger2 小时前
mini-cc 权限安全:给 AI 戴上枷锁
人工智能·ai编程·claude
guyoung2 小时前
BoxAgnts介绍(7)——OpenAI-API与Anthropic-API
openai·agent·ai编程
沈浩(种子思维作者)2 小时前
没有错误,正确将一文不值
人工智能·python·算法·量子计算
喵个咪2 小时前
AI重构软件开发范式:框架与脚手架为何仍是生产级开发的刚需?
架构·go·ai编程
smith成长之旅2 小时前
06 | Mem0 框架分析:为什么要从记忆中提取实体?——Entity Store 的设计动机与工程实现
人工智能·python
zzzzz3692 小时前
快速搭建SpringAi项目 集成智能问答,RAG,FUINCTION_CALLING等功能
java·ai编程
smith成长之旅2 小时前
07 | Mem0 框架分析:三路信号融合——语义 + BM25 + Entity Boost 的混合检索
python·算法
Cho1yon2 小时前
【AI Agent 第十期:Claude Code 完全配置指南:三系统一步到位,AI编程助手轻松上手】
人工智能·ai编程