【OpenAI官方课程】第四课:ChatGPT文本推断Summarizing

本文介绍了如何通过OpenAIAPI和大型语言模型(LLM)如ChatGPT创建应用程序,课程内容包括LLM的工作原理、工程实践以及如何运用API进行情绪分析,如从产品评论中推断情绪和主题。
摘要由CSDN通过智能技术生成

欢迎来到ChatGPT 开发人员提示工程课程(ChatGPT Prompt Engineering for Developers)!本课程将教您如何通过OpenAI API有效地利用大型语言模型(LLM)来创建强大的应用程序。

本课程由OpenAI 的Isa Fulford和 DeepLearning.AI 的Andrew Ng主讲,深入了解 LLM 的运作方式,提供即时工程的最佳实践,并演示 LLM API 在各种应用程序中的使用。

推断

在本课程中,您将从产品评论和新闻文章中推断情绪和主题。

设置

import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # 读取本地的 .env 文件

openai.api_key  = os.getenv('OPENAI_API_KEY')
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"]

产品评论文本

lamp_review = """
我需要卧室里的一个好看的灯,这个灯还带有额外的储物功能,价格也不太高。
发货速度很快。我们灯的绳子在运输过程中断了,公司很乐意寄给我们一个新的。
几天内就收到了。组装起来很容易。我缺了一个零件,所以我联系了客服,他们很快就给我寄来了缺失的部分!
Lumina 看起来是一家很关心客户和产品的好公司!!
"""

情绪(积极/消极)

prompt = f"""
以下产品评论的情绪是什么?
评论文本:'''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

产品评论的情绪是积极的。

prompt = f"""
以下产品评论的情绪是什么?
请以单个词回答,要么是 "积极",要么是 "消极"。
评论文本:'''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

积极

识别情感类型

prompt = f"""
识别以下评论作者表达的情感列表。列表中不超过五项。
以逗号分隔的小写单词列表形式呈现你的答案。

评论文本:'''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

高兴的,满意的,感激的,印象深刻的,满足的

识别愤怒

prompt = f"""
以下评论作者表达了愤怒吗?
评论用三个反引号分隔。
以 "是" 或 "否" 回答。

评论文本:'''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

从客户评论中提取产品和公司名称

prompt = f"""
从评论文本中识别以下内容:

评论者购买的物品
制造该物品的公司
评论用三个反引号分隔。
将你的响应格式化为一个 JSON 对象,
以 "Item" 和 "Brand" 作为键。
如果信息不存在,请将值设为 "unknown"。
尽可能简洁。

评论文本:'''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

{
“Item”: “灯”,
“Brand”: “Lumina”
}

同时执行多项任务

prompt = f"""
从评论文本中识别以下内容:

情绪(积极或消极)
评论者是否表达了愤怒?(true 或 false)
评论者购买的物品
制造该物品的公司
评论用三个反引号分隔。
将你的响应格式化为一个 JSON 对象,
以 "Sentiment"、"Anger"、"Item" 和 "Brand" 作为键。
如果信息不存在,请将值设为 "unknown"。
尽可能简洁。
将愤怒值格式化为布尔值。

评论文本:'''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

{
“Sentiment”: “积极”,
“Anger”: false,
“Item”: “带有额外储物的灯”,
“Brand”: “Lumina”
}

推断主题

story = """
最近政府进行的一项调查中,
公共部门员工被要求评价他们所在部门的满意度。
结果显示,NASA 是最受欢迎的部门,满意度达到 95%。

一名 NASA 员工 John Smith 对调查结果发表评论,
他说:“我对 NASA 获得第一名并不感到惊讶。
那是一个极好的工作地方,有着出色的人才和令人难以置信的机遇。
我为能成为这样一个创新组织的一部分感到自豪。”

NASA 的管理团队也对结果表示欢迎,
主任 Tom Johnson 表示:“我们很高兴听到我们的员工对 NASA 的工作满意。
我们有一个才华横溢、敬业的团队,他们不知疲倦地工作以实现我们的目标,
看到他们的辛勤工作取得成果真是太棒了。”

调查还显示,社会安全局的满意度最低,
只有 45% 的员工表示对工作满意。
政府承诺解决调查中员工提出的问题,
努力提高所有部门的工作满意度。
"""

推断五个主题

prompt = f"""
确定以下文本中正在讨论的五个主题,
文本用三个反引号分隔。

将每个项目设为一个或两个单词。

将你的响应格式化为一个以逗号分隔的项目列表。

文本示例:'''{story}'''
"""
response = get_completion(prompt)
print(response)

政府调查,工作满意度,NASA,社会安全局,员工关切

response.split(sep=',')

[‘政府调查’,
’ 工作满意度’,
’ NASA’,
’ 社会安全局’,
’ 员工关切’]

topic_list = ['政府调查','工作满意度','NASA','社会安全局','员工关切']

制作关于特定主题的新闻提醒

prompt = f"""
确定以下主题列表中的每一项是否是下文中的一个主题,
下文用三个反引号分隔。

以列表形式给出每个主题的 0 或 1 的答案。

主题列表:{", ".join(topic_list)}

文本示例:'''{story}'''
"""
response = get_completion(prompt)
print(response)
nasa: 1
local government: 0
engineering: 0
employee satisfaction: 1
federal government: 1
topic_dict = {i.split(': ')[0]: int(i.split(': ')[1]) for i in response.split(sep='\n')}
if topic_dict['nasa'] == 1:
print("提醒:有关 NASA 的新闻!")

提醒:有关 NASA 的新闻!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值