• 深入理解Prompt Engineering:Transformers与OpenAI的实践启示


    前言

    我最近完成了吴恩达的《ChatGPT提示工程师》课程的学习。这门课程如何通过精心设计的提示来引导模型生成我们想要的输出。然而,我必须承认,尽管这门课程的内容丰富且深入,但我在完成课程后并没有获得让我从提示词,上升到“工程化”的理解。

    在我看来,这门课程的内容和我之前使用OpenAI API的经验相差无几。我之前已经熟悉了如何使用API,如何发送请求,以及如何处理返回的结果。我也已经理解了如何通过调整一些参数,如temperature和tokens,来影响模型的输出。但是对于prompt是打开大模型这座金矿的钥匙,课程里的prompt 设计技巧,没什么感觉…

    带着这些迷茫,我投入了AI绘画炼丹,更细致的prompt,绘画专用提示词,让我感受到了prompt的效果。但是对于不搞设计的我,在绘画领域投入太多时间练习prompt工程,不会是好的方向,提示词工程的学习肯定也深入不了…

    我怎么掌握提示词工程这门AI显学呢?从哪个实战项目入手呢?最近我在玩Transformers 和 OpenAI的时候,好像有了点感悟。

    何为Transformers?

    Transformers是由Hugging Face公司开发的一个开源库,专门用于自然语言处理(NLP)任务。它提供了大量预训练的模型和分词器,可以用于各种NLP任务,如文本分类、命名实体识别、情感分析、文本生成等。在我的上一篇文章AIGC前端工程师的Transformers 入门(一):pipeline - 掘金 (juejin.cn)中有一些demo, 建议大家也玩起来。

    Transformers和OpenAI的对比

    OpenAI和Transformers都是我在探索人工智能和自然语言处理(NLP)领域的重要工具。OpenAI让我感受到了人工智能生成内容(AIGC)的力量。通过使用OpenAI,我可以生成各种各样的文本,从简单的句子到复杂的文章,甚至是编程代码。这种能力让我深感震撼,也让我对人工智能的未来充满了期待。

    与此同时,Transformers库让我深入了解了机器学习和NLP的底层原理。Transformers提供了大量的预训练模型,如BERT、GPT-2、RoBERTa等,这些模型在各种NLP任务上都表现出色。通过学习和使用这些模型,我对深度学习的工作原理有了更深的理解。我了解到,这些模型的强大性能并不是偶然的,而是建立在大量的数据和精心设计的架构之上。

    OpenAI和Transformers的结合,让我既能感受到人工智能的魅力,也能理解其背后的科学原理。这种结合让我对AIGC的学习充满了信心,同时又可以快速开展业务。

    于是我有了个想法,同类型的任务,分别用transformers 和 OpenAI,各自怎么做?

    NLP任务

    以下是Transformers情感分析的demo

    python复制代码
    !pip install transformers # 安装huggingface开源的 transformers库 
    
    from transformers import pipeline # pipeline是 transfromers的模块,专业安排各种NLP。 
    
    classifier = pipeline('sentiment-analysis') #安排了情感分析任务 
    
    result = classifier('I love you')[0] #返回情感分析结果
    
    print(f"label: {result['label']}, with score: {round(result['score'], 4)}")
    
    输出结果为 label: POSITIVE, with score: 0.9999 0.9999
    

    当时学完这个NLP任务的例子后,感觉自己可以从WEB开发,走向AI功能的开发了,transformers真的简单,好用!

    没想到,当我看到OpenAI的文本分析Demo后,惊喜连连…

    python复制代码import openai
    
    openai.api_key = "你自己的"
    
    COMPLETION_MODEL = "text-davinci-003" #文本模型
    
    def get_response(prompt, temperature = 1.0): 
        completions = openai.Completion.create( 
            engine=COMPLETION_MODEL, 
            prompt=prompt, 
            max_tokens=1024,
            n=1, 
            stop=None, 
            temperature=temperature, 
        ) 
        message = completions.choices[0].text 
        return message
        
     
    prompts = """判断一下用户的评论情感上是正面的还是负面的
    评论:买的银色版真的很好看,一天就到了,晚上就开始拿起来完系统很丝滑流畅,
    做工扎实,手感细腻,很精致哦苹果一如既往的好品质
    
    情感:正面
    评论:随意降价,不予价保,服务态度差
    情感:负面"""
    
    good_case = prompts + """评论:外形外观:苹果审美一直很好,
    金色非常漂亮拍照效果:14pro升级的4800万像素真的是没的说,太
    好了,运行速度:苹果的反应速度好,用上三五年也不会卡顿的,
    之前的7P用到现在也不卡其他特色:14pro的磨砂金真的太好看了,
    不太高调,也不至于没有特点,非常耐看,很好的
    情感:"""
    
    print(get_response(good_case))
    结果是正面
    

    原来,之前在刷《提示词工程师》这门课时,内容主要以语法介绍为主,知识点为要。要感受提示词的强大power, 得来到更具体的项目实战中。

    相比于transformers, openai 完成文本分类的NLP任务,不是很像low code或无代码编程吗?

    在上面的这个例子中,首先使用了few Shots Learning(少样本学习)的概念,构建了样本和文本分类的上下文,接着再把要处理的分类任务,设计到Completion这个接口中…

    woo, 瞬间,醍醐灌顶,这就是prompt engineering。

    之前,transformers虽然很方便的用pipeline就解决了情感分析这样的NLP任务,但是OpenAI 使用prompt 就轻松搞定了NLP任务, 我们可以从低代码,无代码这个角度去思考 Prompt 设计,我只需要把之前在低代码学习中的感受迁移到prompt 这边来, 完美。

    我想,我终于找到了prompt 的训练方案

    prompt训练方案

    • 结合项目NLP任务实战,从原来的代码思维转向无代码思维,武器是prompt

    比如以下的客服DEMO, 自然语言比代码更好用,这里的语言就是prompt…

    js复制代码
    import openai
    import os
    
    openai.api_key = os.environ.get("OPENAI_API_KEY")
    COMPLETION_MODEL = "text-davinci-003"
    
    prompt = '请你用朋友的语气回复给到客户,并称他为“亲”,他的订单
    已经发货在路上了,预计在3天之内会送达,订单号2021AEDG,
    我们很抱歉因为天气的原因物流时间比原来长,感谢他选购我们的商品。'
    
    def get_response(prompt, temperature = 1.0):
        completions = openai.Completion.create (
            engine=COMPLETION_MODEL,
            prompt=prompt,
            max_tokens=1024,
            n=1,
            stop=None,
            temperature=temperature,
        )
        message = completions.choices[0].text
        return message
        
    
    • 在传统的开发流程中加入prompt过程

      我想当我接触了更多的prompt 业务后,它将进入我的开发流程。

      它会和设计数据表一样重要, 我每天的开发工作中会拿出一定的时间来设计prompt,把开发中的一部分任务交给它…

    备注:

    以上例子分别来自 transformers-code/01-Getting Started/02-pipeline/pipeline.ipynb at master · zyds/transformers-code (github.com)

    徐文浩老师的AI大模型之美, 为避开广告之嫌疑, 就不给链接了…

    让我们一起, 走向prompt engineering 的修炼之路…

    我相信不久,提示词工程将成为我项目工程的核心部分,那么我的AI应用开发之路就正式开始了,期待,加油!

    那么,我们该如何学习大模型?

    作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

    一、大模型全套的学习路线

    学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

    L1级别:AI大模型时代的华丽登场

    L2级别:AI大模型API应用开发工程

    L3级别:大模型应用架构进阶实践

    L4级别:大模型微调与私有化部署

    一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

    以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

    二、640套AI大模型报告合集

    这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

    img

    三、大模型经典PDF籍

    随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

    img

    四、AI大模型商业化落地方案

    img

    作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

  • 相关阅读:
    ECharts数据可视化项目【10】
    YOLO和ssd的区别
    JavaScript 变量提升的作用
    VMware虚拟化环境搭建
    电脑打开图片比例太大怎么调?这个方法又快又好用
    Nginx-HTTPS 配置
    如何斑斓里公路工程资质,首次申请公路工程总承包资质有哪些要求?
    Vue之路由及Node.js环境搭建(一起探索新事物)
    1.数据库的连接、创建会话与模型
    模型预测控制(Model predictive control,MPC)
  • 原文地址:https://blog.csdn.net/2401_85324918/article/details/139333966