提示词工程:这样跟AI说话,它才听你的!

哈,提示词工程这个相对来说比较简单,不像上一篇文章难懂,本文快速过一下!

“这个AI根本不好用,给出的回答都是泛泛而谈!”
“为什么同一个问题,别人能获得高质量答案,而我只能得到平庸的结果?”

如果你曾有过这样的困惑,问题可能不在于AI的能力,而在于你与它对话的方式。今天,我们就来揭开提示词工程的神秘面纱,掌握与AI高效沟通的秘诀。

为什么需要学习提示词工程?

想象一下,你向一位助手交代任务:“帮我写个PPT”和“帮我写一篇主题是春季健身注意事项的PPT,风格轻松有趣,面向20-35岁的上班族”——哪个指令能得到更符合预期的结果?

AI也是如此。提示词(Prompt)就是你与AI沟通的指令,质量直接决定回答的质量。

核心四步法:让AI听懂你的话

1. 明确角色:你是谁?

在提问前,先为AI设定一个专业角色。

普通提问:
“告诉我如何学习英语”

角色设定提问:
“假设你是一位有10年教学经验的英语教授,为一名有一定基础但缺乏系统性的中文母语者设计一个6个月的英语提升计划”

看,角色设定让AI的回答更具专业性和针对性。

2. 定义任务:你要什么?

清晰、具体地描述你的需求,避免模糊表述。

模糊任务:
“帮我写销售文案”

明确任务:
“为一款智能手环撰写朋友圈广告文案,突出其心率监测和睡眠分析功能,目标用户是关注健康的年轻人,字数在150字以内”

3. 补充细节:在什么情况下?

提供背景信息、约束条件和具体要求。

缺乏细节:
“总结这篇文章”

丰富细节:
“用三个 bullet points 总结这篇关于人工智能的文章,每点不超过20字,面向完全不懂技术的小白读者”

4. 指定输出:要什么形式?

明确告诉AI你期望的回答格式。

不指定格式:
“给我一些项目创意”

指定格式:
“列出5个Python初学者可以在一周内完成的小项目创意,每个包括:项目名称、难度等级(1-5星)、所需技能和预期收获”

接下来,老规矩,上实战


import requests
import json
import time
import pandas as pd

# ==================== 全局配置 ====================
# 请根据你的聚合平台信息修改以下配置
BASE_URL = "https://api.ufunai.cn/v1"  # 替换为你的平台地址
API_KEY = "sk-xxxxx"  # 替换为你的API密钥
MODEL_NAME = "gpt-4-turbo"  # 指定要测试的模型名称


# =================================================

def test_prompts(prompts, max_tokens=500, temperature=0.7):
    """
    测试不同提示词在指定模型上的效果

    参数:
        prompts: 提示词列表
        max_tokens: 最大生成长度
        temperature: 温度参数
    """
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {API_KEY}'
    }

    results = []

    print(f"开始测试 {len(prompts)} 个提示词在模型 '{MODEL_NAME}' 上的效果")
    print("=" * 60)

    for i, prompt in enumerate(prompts, 1):
        print(f"\n测试 {i}/{len(prompts)}: {prompt}")
        print("-" * 40)

        payload = {
            "model": MODEL_NAME,
            "messages": [{"role": "user", "content": prompt}],
            "max_tokens": max_tokens,
            "temperature": temperature
        }

        try:
            start_time = time.time()
            response = requests.post(
                f"{BASE_URL}/chat/completions",
                headers=headers,
                json=payload,
                timeout=60
            )
            response_time = time.time() - start_time

            if response.status_code == 200:
                result = response.json()
                content = result['choices'][0]['message']['content']
                usage = result.get('usage', {})

                print(f"生成结果: {content[:200]}...")
                print(f"响应时间: {response_time:.2f}秒")
                print(f"Token使用: {usage.get('total_tokens', 'N/A')}")

                results.append({
                    "提示词": prompt,
                    "生成内容": content,
                    "响应时间(秒)": response_time,
                    "总token数": usage.get('total_tokens', 0),
                    "提示token数": usage.get('prompt_tokens', 0),
                    "生成token数": usage.get('completion_tokens', 0)
                })
            else:
                print(f"请求失败: HTTP {response.status_code} - {response.text}")
                results.append({
                    "提示词": prompt,
                    "生成内容": f"错误: HTTP {response.status_code}",
                    "响应时间(秒)": response_time,
                    "总token数": 0,
                    "提示token数": 0,
                    "生成token数": 0
                })

        except Exception as e:
            print(f"请求异常: {str(e)}")
            results.append({
                "提示词": prompt,
                "生成内容": f"异常: {str(e)}",
                "响应时间(秒)": 0,
                "总token数": 0,
                "提示token数": 0,
                "生成token数": 0
            })

        # 添加延迟避免API限制
        time.sleep(1)

    return results


def save_results(results, filename=None):
    """保存结果到文件"""
    if filename is None:
        timestamp = time.strftime("%Y%m%d-%H%M%S")
        filename = f"prompt_test_{MODEL_NAME}_{timestamp}.xlsx"

    df = pd.DataFrame(results)
    df.to_excel(filename, index=False)
    print(f"\n结果已保存到: {filename}")
    return filename


def main():
    """主函数"""
    # 检查配置
    if BASE_URL == "https://your-aggregator-platform.com/api/v1" or API_KEY == "your-api-key-here":
        print("请先修改代码开头的全局配置 (BASE_URL 和 API_KEY)")
        return

    # 定义要测试的提示词
    prompts = [
        # 基础提示词
        "写一篇关于人工智能的文章",

        # 具体指令
        "请以科普作者的身份,用通俗易懂的语言写一篇关于人工智能发展现状的文章",

        # 角色扮演
        "假设你是一位科技杂志主编,为普通读者撰写一篇关于人工智能的专题报道",

        # 结构化要求
        """写一篇关于人工智能的文章,要求:
        1. 开头引人入胜
        2. 主题:对比分析传统编程与人工智能编程的异同点
        3. 中间分析三个主要应用领域
        4. 结尾给出未来展望
        """,
    ]

    # 执行测试
    results = test_prompts(prompts)

    # 保存结果
    filename = save_results(results)

    # 简单总结
    print("\n" + "=" * 60)
    print("测试总结:")
    print("=" * 60)

    success_count = sum(1 for r in results if not r["生成内容"].startswith(("错误:", "异常:")))
    avg_time = sum(r["响应时间(秒)"] for r in results) / len(results)
    avg_tokens = sum(r["总token数"] for r in results) / len(results)

    print(f"测试提示词数量: {len(prompts)}")
    print(f"成功生成数量: {success_count}")
    print(f"平均响应时间: {avg_time:.2f}秒")
    print(f"平均Token使用: {avg_tokens:.0f}")

    # 显示每个提示词的生成内容长度
    print("\n各提示词生成内容长度:")
    for i, result in enumerate(results, 1):
        status = "✓" if not result["生成内容"].startswith(("错误:", "异常:")) else "✗"
        print(f"{i}. {status} 长度:{len(result['生成内容']):4d} - {result['提示词']}...")


if __name__ == "__main__":
    main()

输出结果:

图片

同样是让AI写文章,但四个提示词得到的结果截然不同:

  • 第一个:泛泛而谈的科普文

  • 第二个:生动有趣的科普文

  • 第三个:专业深度的报道

  • 第四个:结构清晰的专题分析

结论: 只要需求提得好,AI没有啥干不了!

进阶技巧:成为提示词魔法师

技巧1:分步思考
对于复杂问题,让AI一步步推理:“首先分析这个问题的主要难点,然后提出解决思路,最后给出具体方案”

技巧2:示例引导
提供输入输出示例:“参照这个格式:输入‘会议安排’,输出‘您好,请提供会议时间、参与人员和主题,我将为您安排’”

技巧3:反向验证
“如果我想要相反的结果,你会怎么做?”这有助于检验AI理解的深度。

常见陷阱与避免方法

  1. 假设AI有背景知识:总是提供必要的上下文

  2. 一次性要求太多:复杂任务拆分成多个步骤

  3. 使用模糊词汇:用“300字左右”代替“短一点”

  4. 忽略迭代优化:第一次不满意,继续细化你的提示词

结语

提示词工程不是一朝一夕就能精通的魔法,而是一项可通过练习不断提升的技能。每次与AI对话,都是锻炼这一能力的机会。

记住,优质的输入决定优质的输出。掌握了与AI高效沟通的艺术,你就拥有了驾驭智能时代的超级能力。

现在,就尝试用今天学到的方法,去命令AI为你创造些惊喜吧!

是不是很简单!!

源代码如需获取,请关注公众号,发送消息ufunai-prompt获取,扫一扫即可获取!

创作不易,码字更不易,如果觉得这篇文章对你有帮助,记得点个关注、在看或收藏,给作者一点鼓励吧~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

softkit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值