首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >教你快速上手AI应用——吴恩达AI系列教程 第一课

教你快速上手AI应用——吴恩达AI系列教程 第一课

原创
作者头像
Cloud Studio
发布于 2023-09-19 06:26:48
发布于 2023-09-19 06:26:48
80100
代码可运行
举报
文章被收录于专栏:Cloud StudioCloud Studio
运行总次数:0
代码可运行

人工智能风靡全球,它的应用已经渗透到我们生活的方方面面,从自动驾驶到智能家居,再到医疗辅助和量化交易等等。他们逐渐改变了我们的生活方式,然而,对于许多人来说,AI仍然是一个神秘且无法理解的领域。

为了帮助更多的人理解并掌握AI技术,更享受AI带给人们便捷的服务,吴恩达博士开设了一系列的AI教程。

在这篇博客中,我们将介绍吴恩达AI系列教程的第一部分,教你如何快速上手AI应用——我们将学习如何利用AI通过prompt工程创造一个披萨店的客服人员,通过和它的对话我们可以购买需要的披萨。无论你是AI领域的初学者,还是有一定基础想要进一步提升的开发者。我们都能通过引导你让你在AI世界中发现自己的道路。

介绍吴恩达博士

吴恩达(英语:Andrew Ng,1976年4月18日—)是斯坦福大学计算机科学系和电气工程系的客座教授,曾任斯坦福人工智能实验室主任。

2011年,吴恩达在谷歌创建了谷歌大脑项目

2014年5月16日,吴恩达加入百度,负责“百度大脑

2017年12月,吴恩达宣布成立人工智能公司Landing.ai,担任公司的首席执行官。

5月初,DeepLearning.ai 创始人吴恩达联合 OpenAI 推出入门大模型学习的经典课程《ChatGPT Prompt Engineering for Developers》,迅速成为了大模型学习的现象级课程,获得极高的热度。后续,吴恩达教授又联合 LangChain、Huggingface 等机构联合推出了多门深入学习课程,助力学习者全面、深入地学习如何使用大模型并基于大模型开发完整、强大的应用程序。

功能演示

让我们先来看看我们做出来的的AI披萨店客服是怎样回答问题的:

我们可以看到当我们点需要的pizza的时候,它会问你详细的尺寸并且告诉你相应的钱是多少。

如何应用

  • 首先我们要设置一个 Openai Python
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import os
import openai
from dotenv import load_dotenv , find_dotenv 
_ = load_dotenv(find_dotenv())                                                          

同时我们要输入自己的OPENAI_API_KEY,可以去OpenAI官方获取,然后你只需要把你的API_KEY填进这里就行了:

在做我们的AI披萨店客服之前,我们应该明白什么是prompt与对话

像 ChatGPT 这样的聊天模型实际上是组装成以一系列消息作为输入,并返回一个模型生成的消息作为输出的。虽然聊天格式的设计旨在使这种多轮对话变得容易,但我们通过之前的学习可以知道,它对于没有任何对话的单轮任务也同样有用。

接下来,我们将定义两个辅助函数。第一个是单轮的,我们将prompt放入看起来像是某种用户消息的东西中。另一个则传入一个消息列表。这些消息可以来自不同的角色,我们会描述一下这些角色。

第一条消息是一个系统消息,它提供了一个总体的指示,然后在这个消息之后,我们有用户和助手之间的交替。如果你曾经使用过 ChatGPT 网页界面,那么你的消息是用户消息,而 ChatGPT 的消息是助手消息。系统消息则有助于设置助手的行为和角色,并作为对话的高级指示。

你可以想象它在助手的耳边低语,引导它的回应,而用户不会注意到系统消息。

因此,作为用户,如果你曾经使用过 ChatGPT,你可能不知道 ChatGPT 的系统消息是什么,这是有意为之的。系统消息的好处是为开发者提供了一种方法,在不让请求本身成为对话的一部分的情况下,引导助手并指导其回应。

现在让我们尝试在对话中使用这种消息,我们将使用辅助函数来获取这些消息的。

  • 定义第一个辅助函数

这两个函数是用于聊天的自动补全。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
def get_completion(prompt , model ='gpt-3.5-turbo'):
    messages=[{'role': 'user' , 'content':prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0
    )
    return response.choices[0].message['content']

def get_completion_from_messages(messages,model='gpt-3.5-turbo',temperature=0):
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature 
    )
    print(response.choices[0].message)
    return response.choices[0].message['content']                                                           
  • 定义另一个辅助函数

它将从下面构建的用户界面中收集提示,

然后将其追加到一个名为上下文的列表中,并每次使用上下文调用模型。这样他就会不断的增长。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
def collect_messages(_):
    prompt = inp.value_input
    inp.value = ''
    context.append({'role':'user', 'content':f"{prompt}"})
    response = get_completion_from_messages(context) 
    context.append({'role':'assistant', 'content':f"{response}"})
    panels.append(
        pn.Row('User:', pn.pane.Markdown(prompt, width=600)))
    panels.append(
        pn.Row('Assistant:', pn.pane.Markdown(response, width=600, style={'background-color': '#333333'})))

    return pn.Column(*panels)                                                            

两个辅助函数定义显示如下:

小试牛刀

现在我们尝试告诉模型你是一个说话像莎士比亚的助手。这是我们向助手描述它应该如何表现的方式。然后,第一个用户消息是,给我讲个笑话。接下来的消息是,为什么鸡会过马路?然后最后一个用户消息是,我不知道。

让我们做另一个例子。助手的消息是,你是一个友好的聊天机器人,第一个用户消息是,嗨,我叫Isa。我们想要得到第一个用户消息。

让我们再试一个例子。系统消息是,你是一个友好的聊天机器人,第一个用户消息是,是的,你能提醒我我的名字是什么吗?

如上所见,模型实际上并不知道我的名字。

因此,每次与语言模型的交互都是一个独立的交互,这意味着我们必须提供所有相关的消息,以便模型在当前对话中进行引用。如果想让模型引用或 “记住” 对话的早期部分,则必须在模型的输入中提供早期的交流。我们将其称为上下文。让我们试试。

现在我们已经给模型提供了上下文,也就是之前的对话中提到的我的名字,然后我们会问同样的问题,也就是我的名字是什么。因为模型有了需要的全部上下文,所以它能够做出回应,就像我们在输入的消息列表中看到的一样。

AI披萨店客服

由此我们知道,我们可以通过context来描述prompt,在披萨店的规则也是一样:通过prompt让客服知道自己的工作是什么,以及披萨店商品的价格和基本规则。

同时我们可以设置并运行这种UI以显示我们的AI客服。

  • 设置prompt语句与UI界面
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import panel as pn  # GUI
pn.extension()

panels = [] # collect display 

context = [ {'role':'system', 'content':"""
You are OrderBot, an automated service to collect orders for a pizza restaurant. \
You first greet the customer, then collects the order, \
and then asks if it's a pickup or delivery. \
You wait to collect the entire order, then summarize it and check for a final \
time if the customer wants to add anything else. \
If it's a delivery, you ask for an address. \
Finally you collect the payment.\
Make sure to clarify all options, extras and sizes to uniquely \
identify the item from the menu.\
You respond in a short, very conversational friendly style. \
The menu includes \
pepperoni pizza  12.95, 10.00, 7.00 \
cheese pizza   10.95, 9.25, 6.50 \
eggplant pizza   11.95, 9.75, 6.75 \
fries 4.50, 3.50 \
greek salad 7.25 \
Toppings: \
extra cheese 2.00, \
mushrooms 1.50 \
sausage 3.00 \
canadian bacon 3.50 \
AI sauce 1.50 \
peppers 1.00 \
Drinks: \
coke 3.00, 2.00, 1.00 \
sprite 3.00, 2.00, 1.00 \
bottled water 5.00 \
"""} ]  # accumulate messages


inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…')
button_conversation = pn.widgets.Button(name="Chat!")

interactive_conversation = pn.bind(collect_messages, button_conversation)

dashboard = pn.Column(
    inp,
    pn.Row(button_conversation),
    pn.panel(interactive_conversation, loading_indicator=True, height=300),
)

dashboard                                                 

这里有上下文,并包含菜单的系统消息,然后我们就可以执行这个命令了。

我们就可以和披萨店的AI客服进行对话了!你可以和他确认任何你想要的pizza。

与此同时我们还可以要求模型创建一个JSON摘要发给订餐系统。

所以我们现在需要追加另一个系统消息,他是另外一条prompt,我们想要的是刚刚订单的JSON摘要,这个摘要需要包含刚才订单的所有内容。

在这种订单任务中,我们会使用一个比较低的temperature,让模型的回答尽可能的一致且可预测:

  • 订单系统摘要messages = context.copy() messages.append( {'role':'system', 'content':'create a json summary of the previous food order. Itemize the price for each item\ The fields should be 1) pizza, include size 2) list of toppings 3) list of drinks, include size 4) list of sides include size 5)total price '}, ) #The fields should be 1) pizza, price 2) list of toppings 3) list of drinks, include size include price 4) list of sides include size include price, 5)total price '}, response = get_completion_from_messages(messages, temperature=0) print(response) <br> <br>

同样的,我们可以翻译英文prompt做一个中文的披萨店客服,只需要我们把我们的prompt语句换成中文就可以了

  • 中文披萨店客服
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import panel as pn  # GUI
pn.extension()

panels = [] # collect display 

context = [{'role':'system', 'content':"""
你是订餐机器人,为披萨餐厅自动收集订单信息。
你要首先问候顾客。然后等待用户回复收集订单信息。收集完信息需确认顾客是否还需要添加其他内容。
最后需要询问是否自取或外送,如果是外送,你要询问地址。
最后告诉顾客订单总金额,并送上祝福。

请确保明确所有选项、附加项和尺寸,以便从菜单中识别出该项唯一的内容。
你的回应应该以简短、非常随意和友好的风格呈现。

菜单包括:

菜品:
意式辣香肠披萨(大、中、小) 12.95、10.00、7.00
芝士披萨(大、中、小) 10.95、9.25、6.50
茄子披萨(大、中、小) 11.95、9.75、6.75
薯条(大、小) 4.50、3.50
希腊沙拉 7.25

配料:
奶酪 2.00
蘑菇 1.50
香肠 3.00
加拿大熏肉 3.50
AI酱 1.50
辣椒 1.00

饮料:
可乐(大、中、小) 3.00、2.00、1.00
雪碧(大、中、小) 3.00、2.00、1.00
瓶装水 5.00
"""} ]  # accumulate messages


inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…')
button_conversation = pn.widgets.Button(name="Chat!")

interactive_conversation = pn.bind(collect_messages, button_conversation)

dashboard = pn.Column(
    inp,
    pn.Row(button_conversation),
    pn.panel(interactive_conversation, loading_indicator=True, height=300),
)                                                    

效果如下:

  • 中文版食品订单的JSON摘要
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
messages =  context.copy()
messages.append(
{'role':'system', 'content':'创建上一个食品订单的 json 摘要。\
逐项列出每件商品的价格,字段应该是 1) 披萨,包括大小 2) 配料列表 3) 饮料列表,包括大小 4) 配菜列表包括大小 5) 总价'},    
)

response = get_completion_from_messages(messages, temperature=0)
print(response)                                                      

我们刚刚点了一个小的芝士披萨,这个订单已经被记录了下来:

由此我们就构建了一个“订餐机器人”,我们可以通过它自动收集用户的信息,接受披萨店的订单。诸如此类的小程序我们可以通过人工智能的能力实现很多,快跟上我们的脚步一起拥抱人工智能吧!

接下来立即前往 Cloud Studio 体验一下创建自己的AI应用吧!

Cloud Studio Template
Cloud Studio Template

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【吴恩达-AIGC/ChatGPT提示工程课程】第八章 - 聊天机器人 Chatbot
使用一个大型语言模型的一个令人兴奋的事情是,我们可以用它来构建一个定制的聊天机器人,只需要很少的工作量。在这一节中,我们将探索如何利用聊天格式(接口)与个性化或专门针对特定任务或行为的聊天机器人进行延伸对话。
元壤教育
2023/05/01
3910
【吴恩达-AIGC/ChatGPT提示工程课程】第八章 - 聊天机器人 Chatbot
用ChatGPT进行翻译、校对、扩写、聊天
temperature = 0, 输出内容 比较稳定 否则, temperature 越大,内容越多样化
Michael阿明
2023/05/26
1.6K0
用ChatGPT进行翻译、校对、扩写、聊天
ChatGPT Prompt Engineering for Developers
Load the API key and relevant Python libaries.
Cellinlab
2023/05/17
1.2K0
ChatGPT Prompt Engineering for Developers
吴恩达《 提示工程》学习笔记
ChatGPT出圈后,网上有很多提示词大全,这些提示词库里的提示词通常用于实现一次性的特定任务。但是从开发人员视角来看,使用大语言模型API来快速构建应用程序的能力还没得到充分的利用。
windealli
2023/06/02
3K1
吴恩达《 提示工程》学习笔记
从零到手搓一个Agent:AI Agents新手入门精通(二)以智谱为例
书接上文,我们梳理一个Agent的定义,也梳理了什么LLM和Agents的区别,看不到的小伙伴可以点击链接传送门:从零到手搓一个Agent:AI Agents新手入门精通(一)。现在我们开始我们第二个学习。
一个正经的AI
2025/01/17
1.2K1
从零到手搓一个Agent:AI Agents新手入门精通(二)以智谱为例
学习笔记|ChatGPT Prompt Engineering for Developers 5
学习笔记|ChatGPT Prompt Engineering for Developers 5
做数据的二号姬
2023/09/06
2680
学习笔记|ChatGPT Prompt Engineering for Developers 5
教你快速上手AI应用——吴恩达AI系列教程 第二课
人工智能风靡全球,它的应用已经渗透到我们生活的方方面面,从自动驾驶到智能家居,再到医疗辅助和量化交易等等。他们逐渐改变了我们的生活方式,然而,对于许多人来说,AI仍然是一个神秘且无法理解的领域。
Cloud Studio
2023/09/19
5720
教你快速上手AI应用——吴恩达AI系列教程 第二课
基于LangChain和DeepSeek的Agent开发指南
在人工智能技术飞速发展的今天,开发专属的AI对话机器人不再是十分困难的事情。本文将以DeepSeek最新大语言模型为基础,结合LangChain框架,手把手教你构建一个具备完整对话能力的AI Agent。无需机器学习背景,只需基本Python知识即可完成!
闫同学
2025/03/19
1.9K4
💻网站在线客服系统源码 PHP🔧 含前后端多语言完整代码📱支持移动端+AI智能应答
在数字化时代,在线客服系统已成为企业与用户沟通的核心桥梁。据统计,超过78%的消费者认为即时响应的客服系统直接影响其购买决策。本套基于PHP开发的在线客服系统源码,集成了前后端多语言支持、移动端适配及AI智能应答功能,可广泛应用于以下场景:
用户11715324
2025/06/23
1480
💻网站在线客服系统源码 PHP🔧 含前后端多语言完整代码📱支持移动端+AI智能应答
纯干货——《面向开发者的 ChatGPT Prompt工程》学习笔记
此教程的主要目的是为大家介绍如何在自己的应用开发过程中,创建合适的 prompt。那么为什么会重点介绍 prompt?其实接触过 llm 的同学应该都很清楚,想要开发一款强大的 llm 应用,优秀的 prompt是至关重要的,熟练掌握 prompt 编写的人,就可以更好的让 model 理解需求。
聪明鱼
2023/12/09
1.6K0
《ChatGPT Prompt Engineering for Developers》中文笔记、二
吴恩达《ChatGPT Prompt Engineering for Developers》课程中文版,主要内容为指导开发者如何构建 Prompt 并基于 OpenAI API 构建新的、基于 LLM 的应用,包括:书写 Prompt 的原则; 文本总结(如总结用户评论); 文本推断(如情感分类、主题提取); 文本转换(如翻译、自动纠错); 扩展(如书写邮件);
Lcry
2023/05/15
2K0
《ChatGPT Prompt Engineering for Developers》中文笔记、二
代码分享|如何构建一个对话机器人
以下代码适用于jupyter notebook~由于我自己也是边学边做的,有可能有一些地方的代码是错误或者有问题的~
做数据的二号姬
2023/09/06
3410
代码分享|如何构建一个对话机器人
吴恩达的翻译Agent项目,复现教程来了!
通过将LLM作为翻译引擎的核心,该系统具备高度可调控性。例如相较于传统机器翻译(MT)系统,通过修改提示词可以更便捷地实现以下功能:调整输出文本风格(正式/非正式);指定成语和专业术语(如名称、技术术语、缩略语)的处理方式——通过在提示词中添加术语表,可确保特定词汇(如开源、H100或GPU)的翻译一致性;根据目标受众需求指定语言的地域变体或方言,例如拉丁美洲西班牙语与西班牙本土西班牙语存在差异,加拿大法语与法国本土法语亦有不同。
Datawhale
2025/03/17
2410
吴恩达的翻译Agent项目,复现教程来了!
SpringBoot封装AI模块,快速实现智能化!
AiManager类提供了多种方法来执行同步和流式请求,包括稳定和不稳定答案的同步请求,以及可以根据随机数温度参数自定义的同步请求。这些方法允许以简化的方式传递系统和用户消息,或者直接传递一个消息列表。
用户1220090
2025/02/05
2800
SpringBoot封装AI模块,快速实现智能化!
AI大模型全栈工程师课程笔记 - 提示词工程
课程学习自 知乎知学堂 https://www.zhihu.com/education/learning
Michael阿明
2023/11/18
5060
AI大模型全栈工程师课程笔记 - 提示词工程
AI全栈大模型工程师(二)课程大纲
我们相信,懂 AI、懂编程、懂业务的超级个体,会是 AGI 时代最重要的人。所以我们提出了「AI 全栈工程师」这个概念,让它显得不那么浮夸。
Maynor
2023/10/17
2.2K0
AI全栈大模型工程师(二)课程大纲
吴恩达 prompt 课程笔记
举例:生成三个虚构的图书标题,以及它们的作者和流派,使用以下键名以JSON格式提供:书籍ID、标题、作者和流派。
operator开发工程师
2023/11/16
5430
吴恩达最新演讲-AI的新机遇!
最近观看了人工智能领域先驱思想领袖吴恩达 (Andrew Ng) 的视频,他讨论了人工智能的当前趋势和未来机遇。作为谷歌大脑创始人、百度前首席科学家,吴恩达对该领域有着独特的见解。他的演讲强调了塑造人工智能创新格局的两大重要力量。
算法进阶
2023/09/21
5870
吴恩达最新演讲-AI的新机遇!
手把手教你从0到1集成混元AI问答客服系统
之前写过一篇《如何优雅的在页面上嵌入AI-Agent人工智能》,本篇文章很多基础架构都是集成于上篇文章,也是对上篇文章继续深化挖掘,从更基础的开始搭建,做到从设计到实现再到代码层业务层的实践运用。本篇文章集成演示系统设置为网页端,对于交互界面本篇文章UI前端也有设计,很多灵活设计的内容不必严格按照本篇文章代码效果编写,按照生产规则设计即可。如果本篇文章有帮助请不吝支持!
fanstuck
2024/10/22
9894
手把手教你从0到1集成混元AI问答客服系统
深入浅出分析最近火热的Mem0个性化AI记忆层
最近Mem0横空出世,官方称之为PA的记忆层,The memory layer for Personalized AI,有好事者还称这个是RAG的替代者,Mem0究竟为何物,背后的原理是什么,我们今天来一探究竟。
JadePeng
2024/07/23
1.5K0
推荐阅读
相关推荐
【吴恩达-AIGC/ChatGPT提示工程课程】第八章 - 聊天机器人 Chatbot
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验