一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Prompt工程核心技术与Python字典应用解析

时间:2026-06-01 14:10:01 编辑:袖梨 来源:一聚教程网

掌握Prompt工程技巧能显著提升大模型输出质量,本文将从五大模块系统讲解核心知识点与应用实例。


一、Prompt 工程两大核心原则

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

精准的大模型输出取决于指令的具体程度。值得注意的是,"清晰"并不等同于"简短"——某些情况下,较长的提示词反而能提供更全面的背景信息,从而获得更丰富的输出内容。

Prompt工程核心与Python 字典

文本总结示例

text = """
你应当通过尽可能清晰、具体的指令,来明确你希望模型完成的任务。
这能引导模型产出符合预期的结果,同时降低回复内容偏离主题或出现错误的概率。
不要把编写清晰的提示词和精简提示词混为一谈。
很多时候,篇幅更长的提示词能为模型提供更完整的说明与背景信息,进而让输出内容更加详实、贴合需求。
"""prompt = f"""
将三个反引号之间的文本总结为一句话
```{text}```
"""
# 输出:清晰的指令应具体且详尽,而非简单精简,长提示词能提供更完整的背景信息,
#        从而提升模型输出的准确性和相关性。

格式指定示例

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

分步指令示例

text = """
泡一杯茶其实很简单!首先把水烧开,烧水的同时,拿出茶杯放入茶包,
水开之后将开水冲入杯中浸泡茶包。静止片刻后让茶香析出。
几分钟后,根据个人口味,还可以加入糖或牛奶。这样一杯美味的茶饮就泡好了。
"""prompt = """
若文本中包含一系列操作指令,请按照下述格式重新整理:
步骤1、...
步骤2、...
如果文本中没有一系列操作指引,直接输出"没有提供步骤。"
"
# 输出:
# 步骤1、把水烧开。
# 步骤2、烧水的同时,拿出茶杯放入茶包。
# 步骤3、水开之后将开水冲入杯中浸泡茶包。
# ...

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

处理复杂任务时,引导模型分步执行通常比要求一次性输出更能获得理想结果。

text = """
在一座风光宜人的小村庄里,姐弟俩杰克和吉尔动身前往山顶的水井取水...
"""prompt = """
执行以下操作:
1. 将文本概括为一句话
2. 把摘要翻译成法语
3. 列出法语摘要中出现的所有人名
4. 输出JSON对象,包含字段:french_summary、num_names
"
# 模型会按步骤逐一完成,最终返回结构化的 JSON 结果

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

为语言模型提供少量示范样本,能有效引导其遵循特定的风格和格式要求。

prompt = """
你的任务是保持统一的行文风格作答。提问:请讲讲何为耐心?
回答:凿出幽深峡谷的江河,源自涓涓细流;
恢弘壮阔的交响乐,起于一个个音符;
精美繁复的织锦,始于一缕缕丝绒。请讲讲何为伟大?
"

二、LLM API 调用封装

基本调用函数

from openai import OpenAIclient = 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
temperature0~2,0 代表确定性最高,2 代表随机性最强
max_tokens限制输入+输出的 token 总量

f-string 多行字符串

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

三、Python Dict 与 HashTable 原理

为什么叫"字典"?

字典(Dict)的核心价值在于其O(1)时间复杂度的查找效率——这与查字典时通过索引快速定位词条的原理如出一辙,避免了线性查找(O(n))的耗时过程。

以查找学生成绩为例,不使用字典的实现方式:

# 使用平行列表存储数据
names = ["张三", "李四", "王五"]
scores = [90, 85, 92]# 查找李四的成绩
index = names.index("李四")  # 线性查找效率较低
score = scores[index]

HashTable 工作原理

key → hash(key) → 唯一整数 → 取模 → 数组索引 → 值的内存地址 → 拿到 value
  1. 键值必须唯一且可哈希,即必须是不可变对象
  2. 可变对象(如列表)作为键会导致哈希结果不稳定,造成字典内部混乱
  3. 尝试使用key = [1,2,3]会触发unhashable type: 'list'错误

Dict vs List

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

Set

集合(Set)与字典采用相同实现原理,区别在于集合仅存储键而不存储值。由于键具有唯一性,集合天然具备去重功能。

不可变对象再谈

a = 'abc'
a.replace('a', 'A')
print(a)  # 输出仍为 'abc'# str是变量名,'abc'才是字符串对象
# replace方法作用于字符串对象,返回新字符串'Abc',原对象保持不变

四、JavaScript 变量提升(Hoisting)

函数声明优先于 var 声明

// 输出结果为 1
showName();
function showName() {
    console.log(1);
}
var showName = function() {
    console.log(2);
}

JavaScript引擎实际执行顺序如下:

function showName() { console.log(1); }  // 函数声明提升至顶部
// var showName; (因存在同名函数声明而被忽略)
showName();
showName = function() { console.log(2); };

同名函数,后者覆盖前者

var showName = function() { console.log('极客帮'); }
showName();  // 极客帮
var showName = function() { console.log('极客时间'); }
showName();  // 极客时间

函数声明方式同样遵循最后定义优先原则:

function showName() { console.log('极客帮'); }
showName();  // 极客时间
function showName() { console.log('极客时间'); }
showName();  // 极客时间

五、LLM 幻觉

大语言模型有时会产生看似合理实则错误的信息。例如询问"Niko的Major冠军经历",尽管该选手从未获得此项荣誉,模型仍可能生成详细的"夺冠过程"。这提醒我们在使用AI时需保持审慎态度。


总结

本文系统讲解了Prompt工程、API调用、数据结构等核心知识点,掌握这些内容将帮助您更高效地运用大模型技术解决实际问题。

热门栏目