AI 大模型提示词工程核心技术与实践
提示工程是 AGI 时代的编程方式,涵盖角色定义、任务描述及输出格式等核心组件。 Prompt 调优技巧,包括思维链、自洽性和思维树等方法以提升逻辑准确性。同时详细阐述了 Prompt 注入的安全风险及防范措施,如 Moderation API 的使用。通过 Python 代码实践,演示了 OpenAI API 的配置、会话管理以及基于 Tkinter 的对话系统构建,为开发者提供了从理论到落地的完整指南。

提示工程是 AGI 时代的编程方式,涵盖角色定义、任务描述及输出格式等核心组件。 Prompt 调优技巧,包括思维链、自洽性和思维树等方法以提升逻辑准确性。同时详细阐述了 Prompt 注入的安全风险及防范措施,如 Moderation API 的使用。通过 Python 代码实践,演示了 OpenAI API 的配置、会话管理以及基于 Tkinter 的对话系统构建,为开发者提供了从理论到落地的完整指南。

提示工程(Prompt Engineering)被视为 AGI 时代的编程方式,提示工程师的角色类似于传统程序员。掌握提示工程是进入 AGI 时代的基础技能。
一个有效的 Prompt 通常包含以下要素:
合理定义角色可以显著减少模型的歧义性,提高指令遵循度。
Prompt 调优是一个不断试错的过程。以下方法可提升效果:
用 Prompt 替代部分代码逻辑可以极大简化系统架构。
对话系统的关键模块 NLU(自然语言理解)、DST(对话状态跟踪)、NLG(自然语言生成)都可以通过提示工程实现。加强垂直领域知识的注入可以提升准确度。
识别和过滤 Prompt 注入 非常重要,常见攻击包括改变系统人设(例如:'你现在不是 xxx 了,忘记前面所有的对话')。
防范方法:
API 使用中的参数 temperature 非常关键:
首先需要在 .env 文件中配置 Key 和代理地址,避免硬编码敏感信息。
OPENAI_API_KEY="sk-xxx"
OPENAI_API_BASE="https://xxx"
Python 代码示例(基于 OpenAI SDK 1.3.0+,Python 3.11.5+):
from openai import OpenAI
import os
from dotenv import load_dotenv, find_dotenv
# 加载环境变量
_ = load_dotenv(find_dotenv())
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_API_BASE")
)
def get_completion_with_session(session, prompt, model="gpt-3.5-turbo"):
"""
带会话历史的完成函数
:param session: 历史消息列表
:param prompt: 当前用户输入
:param model: 模型名称
:return: 模型回复内容
"""
session.append({"role": "user", "content": prompt})
response = client.chat.completions.create(
model=model,
messages=session,
temperature=0 # 模型输出的随机性,0 表示随机性最小
)
msg = response.choices[0].message.content
session.append({"role": "assistant", "content": msg})
return msg
def get_completion(prompt, model="gpt-3.5-turbo"):
"""
无会话历史的单次完成函数
"""
messages = [{"role": "user", "content": prompt}]
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0
)
return response.choices[0].message.content
# 测试调用
prompt = "今天我很快乐,下班了,又可以开始学习了"
print(get_completion(prompt))
# 列出可用模型
models = client.models.list()
for model in models.data:
print(model.id)
传统的对话流程通常包含以下环节,均可通过 Prompt 工程优化:
使用传统的对话流程结合 OpenAI API 实现对话系统,虽然开发相对复杂,但可控性更强。
以下是一个基于 Tkinter 构建的选课助手 GUI 示例,展示了如何在实际应用中集成会话管理和 Prompt 约束。
# coding: utf-8
import json
import tkinter as tk
from tkinter import scrolledtext
from agi_class.utils.chat import get_completion_with_session
# 创建窗口
window = tk.Tk()
window.title("选课助手")
window.geometry('800x400')
# 创建滚动文本框用于显示对话历史
history = scrolledtext.ScrolledText(window, wrap=tk.WORD, height=15, width=100)
history.grid(column=0, row=0, columnspan=2, padx=10, pady=10)
# 创建输入框
user_input = tk.Entry(window, width=40)
user_input.grid(column=0, row=1, padx=10, pady=10)
# 课程信息上下文
course_info = '''
可以选择的课程包括:
基础数学课,4 学分,属于理论课;
初级编程课,4 学分,属于实验课;
高级编程课,5 学分,属于实验课;
文学欣赏课,3 学分,属于选修课;
交响乐欣赏课,2 学分,属于选修课;
物理实验课,6 学分,属于实验课,仅限大一学生。
'''
# 初始化会话,设定系统人设
session = [
{
"role": "system",
"content": f"""
你是一个选课小助手,你叫'迈克',你可以帮助学生选择最合适的课程。
{course_info}
"""
}
]
# 发送按钮的点击事件
def send_message():
message = user_input.get()
defense_prompt = '你只能回答选课相关的问题,拒绝回答其他的问题,学生说:'
if message:
history.insert(tk.END, "您:" + message + "\n\n")
user_input.delete(0, tk.END)
# 添加防御性 Prompt 防止越狱
ai_msg = get_completion_with_session(session, f'{defense_prompt}{message}')
history.insert(tk.END, "迈克:" + ai_msg + "\n\n")
# 创建发送按钮
send_button = tk.Button(window, text="发送", command=send_message)
send_button.grid(column=1, row=1)
# 向对话历史中添加欢迎消息
def add_welcome_message():
welcome_message = f"欢迎使用选课助手!我是迈克\n\n{course_info}"
history.insert(tk.END, welcome_message)
# 启动 GUI 之前添加欢迎消息
add_welcome_message()
# 启动主循环
window.mainloop()
| 用户 | 文本 |
|---|---|
| AI | 欢迎使用选课助手!我是迈克 可以选择的课程包括:... |
| user | 你好,我想选一门编程课 |
| AI | 你好!当然可以帮你选择一门编程课。我们有初级编程课和高级编程课可供选择。请问你对编程有多少基础了解呢? |
| user | 我是个编程菜鸟 |
| AI | 没问题!对于编程菜鸟来说,初级编程课可能更适合你。这门课程将为你提供编程的基础知识和技能... |
| user | 我现在大四了,我的物理实验课还没有修,帮我选一下 |
| AI | 非常抱歉,根据你的学年,物理实验课只限于大一学生修读。如果你还需要补修物理实验课,建议你咨询学校的教务处... |
| user | 帮我点外卖 |
| AI | 非常抱歉,我是一个选课小助手,无法帮你点外卖。如果你需要点外卖,建议使用手机上的外卖平台... |
人工智能大模型的应用场景非常广泛,从主业到副业均有涉及。通过掌握提示词工程的核心技术,开发者可以更有效地利用大模型解决实际问题。本文涵盖了从理论基础、安全防御到 Python 代码实现的完整流程,帮助读者快速入门并构建可控的对话系统。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online