深入理解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应用开发之路就正式开始了,期待,加油!

相关推荐
爱吃的小肥羊10 小时前
Claude Code 推出Agent View,一个人同时指挥十个 AI 写代码!
aigc·ai编程
爱吃的小肥羊12 小时前
又搞事情,OpenAI 开始关闭微调服务!
aigc·openai
imbackneverdie12 小时前
一天怎么完成论文初稿
人工智能·自然语言处理·aigc·ai写作·论文写作·论文投稿·科研工具
用户51914958484512 小时前
图片上传绕过与存储型XSS漏洞利用技术详解
人工智能·aigc
AI先驱体验官12 小时前
臻灵短剧平台 · 用户操作手册
大数据·人工智能·深度学习·重构·aigc
Filwaod13 小时前
Java面试:AIGC场景下的技术深度拷问-谢飞机篇
spring boot·缓存·微服务·消息队列·aigc·java面试·ai技术
搭贝14 小时前
建筑多分支企业数字化实战:凯驿景澄建设项目管理系统落地案例
大数据·人工智能·低代码·数字化·工程项目技术方案
Jeking21716 小时前
低代码平台表单设计器 unione-form-editor 组件介绍 -- 数据字典
低代码·动态表单·表单设计·表单引擎·unione cloud
冲浪中台16 小时前
【无标题】
前端·低代码
92year18 小时前
FastMCP 实战——从本地 stdio 到生产级 HTTP + 鉴权 + 后台任务
aigc