提示词工程 & AI大模型开发核心笔记

一、提示词工程核心原则

1.1 核心设计原则

1.2 经典提示词模板(代码化封装)

# 通用提示词模板封装
def build_prompt(task, requirements, examples=None, format="text"):
    """
    构建标准化提示词
    :param task: 任务描述(如"文本摘要"、"代码生成")
    :param requirements: 具体要求(如"摘要不超过200字")
    :param examples: 示例(可选)
    :param format: 输出格式(text/json/markdown)
    :return: 完整提示词
    """
    prompt = f"""
    你是一名专业的AI助手,请完成以下任务:
    任务:{task}
    要求:{requirements}
    输出格式:{format}
    """
    if examples:
        prompt += f"\n示例:\n{examples}"
    return prompt.strip()

# 调用示例
prompt = build_prompt(
    task="电商评论情感分析",
    requirements="仅输出'正面'/'负面'/'中性',无需解释",
    examples="输入:'这款商品质量很好!' → 输出:正面"
)
print(prompt)
                

二、OpenAI/国产大模型API调用

2.1 OpenAI API 基础调用

# 安装依赖:pip install openai
import openai
import os

# 配置API密钥
openai.api_key = os.getenv("OPENAI_API_KEY")  # 从环境变量获取密钥
# 或直接设置:openai.api_key = "your-api-key"

# 基础对话调用
def call_gpt(prompt, model="gpt-3.5-turbo", temperature=0.7):
    try:
        response = openai.ChatCompletion.create(
            model=model,
            messages=[
                {"role": "system", "content": "你是一名专业的提示词工程师"},
                {"role": "user", "content": prompt}
            ],
            temperature=temperature,  # 随机性:0(严谨)-1(创意)
            max_tokens=1000
        )
        return response.choices[0].message.content.strip()
    except Exception as e:
        return f"调用失败:{str(e)}"

# 调用示例
result = call_gpt(prompt="写一个Python函数,实现列表去重")
print(result)
                

2.2 国产大模型(通义千问)调用示例

# 安装依赖:pip install dashscope
from dashscope import Generation

# 配置API密钥
os.environ["DASHSCOPE_API_KEY"] = "your-dashscope-key"

def call_qwen(prompt, model="qwen-turbo"):
    response = Generation.call(
        model=model,
        messages=[
            {"role": "user", "content": prompt}
        ],
        result_format='text',
        temperature=0.5,
        top_p=0.8
    )
    if response.status_code == 200:
        return response.output.choices[0].message.content
    else:
        return f"调用失败:{response.code} - {response.message}"

# 提示词优化示例
optimize_prompt = """
优化以下提示词,使其更清晰、更易被大模型理解:
原始提示:写一篇关于提示词工程的文章
优化要求:结构清晰(分3部分)、字数800字、适合新手阅读
"""
result = call_qwen(optimize_prompt)
print(result)
                

三、实战技巧与避坑指南

3.1 多轮对话提示词设计

# 多轮对话上下文管理
class ChatManager:
    def __init__(self):
        self.context = [{"role": "system", "content": "你是一名电商客服助手"}]

    def add_message(self, role, content):
        # 控制上下文长度,避免token超限
        if len(self.context) > 10:
            self.context = self.context[:2] + self.context[-8:]
        self.context.append({"role": role, "content": content})

    def get_response(self, user_input):
        self.add_message("user", user_input)
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=self.context,
            temperature=0.3
        )
        assistant_reply = response.choices[0].message.content
        self.add_message("assistant", assistant_reply)
        return assistant_reply

# 使用示例
chat = ChatManager()
print(chat.get_response("请问退货流程是什么?"))
print(chat.get_response("需要提供哪些材料?"))  # 模型可关联上一轮问题
                

3.2 提示词优化对比表

优化前(低效) 优化后(高效) 优化点
写一个排序算法 用Python实现快速排序算法,要求:1. 注释清晰 2. 包含测试用例 3. 时间复杂度标注 明确语言、要求、输出格式
总结这篇文章 总结以下文章,要求:1. 不超过200字 2. 包含核心观点 3. 输出Markdown格式 限定长度、明确输出内容/格式
核心避坑点:
1. 避免模糊表述(如"写得好一点"),需量化要求;
2. 控制提示词长度,避免超出模型上下文窗口;
3. 复杂任务拆分为多轮提示,而非单次超长提示。