当前位置: 首页 > article >正文

【Prompt Engineering】4 推断

一、引言

  • 推断任务涉及模型接收文本输入并执行分析,如提取标签、实体、理解情感等。
  • 传统机器学习需要大量工作:收集数据、训练模型、部署模型。
  • LLM(大型语言模型)允许通过编写Prompt快速开始任务,无需大量工作。
  • 可以使用单一模型和API执行多种任务,无需训练和部署多个模型。
from zhipuai import ZhipuAI
# 导入第三方库

key = " "
zhipu_client = ZhipuAI(api_key = key)
def get_completion(prompt, model="glm-3-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = zhipu_client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0, # this is the degree of randomness of the model's output
    )
    return response.choices[0].message.content

二、情感推断与信息提取

2.1 情感分类
  • 电商平台台灯评论的情感二分类(正向/负向)。
  • 使用Prompt分类情感,输出结果为“积极”或“消极”。
# 中文
lamp_review_zh = """
我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。\
我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。\
几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!\
在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!
"""
# 中文
prompt = f"""
以下用三个反引号分隔的产品评论的情感是什么?

评论文本: ```{lamp_review_zh}```
"""
response = get_completion(prompt)
print(response)
prompt = f"""
以下用三个反引号分隔的产品评论的情感是什么?

用一个单词回答:「正面」或「负面」。

评论文本: ```{lamp_review_zh}```
"""
response = get_completion(prompt)
print(response)
2.2 识别情感类型
  • 识别评论中的情感类型,输出不超过五项的情感列表。
# 中文
prompt = f"""
识别以下评论的作者表达的情感。包含不超过五个项目。将答案格式化为以逗号分隔的单词列表。

评论文本: ```{lamp_review_zh}```
"""
response = get_completion(prompt)
print(response)
2.3 识别愤怒
  • 判断评论作者是否表达愤怒,输出“是”或“否”。
# 中文
prompt = f"""
以下评论的作者是否表达了愤怒?评论用三个反引号分隔。给出是或否的答案。

评论文本: ```{lamp_review_zh}```
"""
response = get_completion(prompt)
print(response)
2.4 商品信息提取
  • 从评论中提取购买物品和制造物品的公司名称。
  • 输出格式化为JSON对象,包含“Item”和“Brand”键。
    # 中文
    prompt = f"""
    从评论文本中识别以下项目:
    - 评论者购买的物品
    - 制造该物品的公司
    
    评论文本用三个反引号分隔。将你的响应格式化为以 “物品” 和 “品牌” 为键的 JSON 对象。
    如果信息不存在,请使用 “未知” 作为值。
    让你的回应尽可能简短。
      
    评论文本: ```{lamp_review_zh}```
    """
    response = get_completion(prompt)
    print(response)
2.5 综合完成任务
  • 编写单个Prompt提取情感、愤怒、物品和品牌信息。
  • 输出格式化为JSON对象,包含“Sentiment”、“Anger”、“Item”和“Brand”键。
# 中文
prompt = f"""
从评论文本中识别以下项目:
- 情绪(正面或负面)
- 审稿人是否表达了愤怒?(是或否)
- 评论者购买的物品
- 制造该物品的公司

评论用三个反引号分隔。将您的响应格式化为 JSON 对象,以 “Sentiment”、“Anger”、“Item” 和 “Brand” 作为键。
如果信息不存在,请使用 “未知” 作为值。
让你的回应尽可能简短。
将 Anger 值格式化为布尔值。

评论文本: ```{lamp_review_zh}```
"""
response = get_completion(prompt)
print(response)

三、主题推断

  • 推断长文本的主题,如新闻报道。
# 中文
story_zh = """
在政府最近进行的一项调查中,要求公共部门的员工对他们所在部门的满意度进行评分。
调查结果显示,NASA 是最受欢迎的部门,满意度为 95%。

一位 NASA 员工 John Smith 对这一发现发表了评论,他表示:
“我对 NASA 排名第一并不感到惊讶。这是一个与了不起的人们和令人难以置信的机会共事的好地方。我为成为这样一个创新组织的一员感到自豪。”

NASA 的管理团队也对这一结果表示欢迎,主管 Tom Johnson 表示:
“我们很高兴听到我们的员工对 NASA 的工作感到满意。
我们拥有一支才华横溢、忠诚敬业的团队,他们为实现我们的目标不懈努力,看到他们的辛勤工作得到回报是太棒了。”

调查还显示,社会保障管理局的满意度最低,只有 45%的员工表示他们对工作满意。
政府承诺解决调查中员工提出的问题,并努力提高所有部门的工作满意度。
"""
3.1 推断讨论主题
  • 确定文本中讨论的五个主题,每个主题用1-2个单词描述,输出为逗号分隔的列表。
# 中文
prompt = f"""
确定以下给定文本中讨论的五个主题。

每个主题用1-2个单词概括。

输出时用逗号分割每个主题。

给定文本: ```{story_zh}```
"""
response = get_completion(prompt)
print(response)
3.2 为特定主题制作新闻提醒
  • 确定特定主题列表中的每个项目是否是文本中的主题,输出为0或1的答案列表。
  • 根据输出结果,可以生成新闻提醒,例如关于NASA的新消息。
# 中文
prompt = f"""
判断主题列表中的每一项是否是给定文本中的一个话题,

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

主题列表:美国航空航天局、当地政府、工程、员工满意度、联邦政府


给定文本: ```{story_zh}```
"""
response = get_completion(prompt)
print(response)
topic_dict = {}
for i in response.split('\n'):
    words = i.split(': ')
    if len(words) > 1 and words[1].strip():
        topic_dict[words[0].strip()] = words[1].strip()
print(topic_dict)
if topic_dict['- 美国航空航天局'] == '1':
    print("提醒: 关于美国航空航天局的新消息")

总结

  • 使用LLM和Prompt可以快速构建用于文本推理的系统,无需传统机器学习的复杂流程。
  • 可以快速执行情感分析、信息提取和主题推断等NLP任务。
  • 这种方法对于熟练的机器学习开发人员和新手都非常有用,可以显著提高开发速度。

http://www.kler.cn/a/445976.html

相关文章:

  • datasets 笔记:加载数据集(基本操作)
  • 点击展示大图预览
  • 介绍 Html 和 Html 5 的关系与区别
  • Android详解——ConstraintLayout约束布局
  • C05S07-Tomcat服务架设
  • word实现两栏格式公式居中,编号右对齐
  • 登山第十六梯:深度恢复——解决机器人近视问题
  • 2、C#基于.net framework的应用开发实战编程 - 设计(二、二) - 编程手把手系列文章...
  • 获取显示器(主/副屏)友好名称(FriendlyName)
  • Android 设置沉浸式状态栏
  • shell7
  • 【C++】刷题强训(day16)--字符串替换、神奇数、DNA序列
  • MyBatis-Plus中isNull与SQL语法详解:处理空值的正确姿势
  • CICD篇之通过Jenkins中书写pipeline构建编译打包发布流程
  • Power Automate 简介
  • 【bash】linux中打包某个可执行文件及其依赖文件
  • Python实现应用最小二乘法融合SVM-LSTM回归模型电力负荷预测项目实战
  • AWR microwave office 仿真学习(二)使用多层结构天线/超表面的S参数确定层间距
  • jdk17用jmap -hea打印JVM堆信息报错Cannot connect to core dump or remote debug server
  • 岁末回望,追梦远方
  • tauri2中创建新的窗口方式,和tauri1不一样了哦
  • 【HTML】Shadow DOM
  • 对uniApp 组件 picker-view 的二次封装,实现日期,时间、自定义数据滚动选择,容易扩展
  • C#代码实现把中文录音文件(.mp3 .wav)转为文本文字内容
  • 使用Unity做一个3D吃豆人小游戏
  • 【人工智能】物联网技术及其应用