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

相关推荐
AlienZHOU2 小时前
从零开始,学习实现产品级 Agent Harness 系列(3)
aigc·ai编程·claude
低代码布道师3 小时前
微搭低代码MBA 培训管理系统实战 30——学习卡
学习·低代码·rxjava
低代码布道师3 小时前
微搭低代码MBA 培训管理系统实战 29——我的课表
低代码
爱吃的小肥羊8 小时前
Codex 今天开始重大更新,全面解读,确实有点东西!
aigc·openai
Luca_kill9 小时前
实战指南:用 Python + NLP 搭建一套轻量级 AI 舆情监控系统
人工智能·python·机器学习·nlp·舆情监控
3Dmax效果图渲染研习社10 小时前
ai生成的视频有没有版权?注意事项
人工智能·ai作画·aigc
OneThingAI10 小时前
网心技术 | NemoClaw 深度解析,企业级 AI 运行时
人工智能·aigc·agent·openclaw·onethingai
AITOP10010 小时前
阿里新模型happyhorse-1.0登顶LM Arena视频编辑榜,视频AI从“生成”走向“精修”
aigc·ai资讯·aitop100
小程故事多_8011 小时前
从基础Agent到复杂工作流,LangGraph如何用状态机重构智能体开发
人工智能·设计模式·重构·aigc·ai编程
阿杰学AI12 小时前
AI核心知识123—大语言模型之 KV Cache
人工智能·ai·语言模型·自然语言处理·aigc·kv cache·键值缓存