传统机器学习处理文本分析任务(如情感分析、实体提取)需经历繁琐的数据收集、模型训练与部署流程,且各项任务需独立模型。
而大语言模型只需编写Prompt即可直接输出结果,极大简化了开发流程,允许仅凭单一模型和API高效完成多种任务,显著提升应用开发速度。
通过“台灯评论”和“政府调查新闻”两个案例,展示了推理的四大核心能力:
1.识别情感类型
判断评论的情绪倾向,甚至可以细化到具体的情绪类型。
lamp_review_zh = """ 我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。\ 我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。\ 几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!\ 在我看来,Lumina 是一家非常关心顾客和产品的优秀公司! """- 基础情感分类:判断是“正面”还是“负面”。
- Prompt:用一个单词回答:「正面」或「负面」。->输出:正面。
- 特定情绪识别:
- 愤怒检测:判断客户是否生气(用于触发紧急客服介入)。
- Prompt:“评论作者是否表达了愤怒?回答是或否。” ->输出:否。
- 情绪列表:提取具体的情绪词。
- Prompt:“识别作者表达的情绪列表,不超过5项。” ->输出:满意、感激、印象深刻。
- 愤怒检测:判断客户是否生气(用于触发紧急客服介入)。
例如:
#其中prompt的内容可根据自己的需求进行修改 prompt = f""" 识别以下评论的作者表达的情感。包含不超过五个项目。将答案格式化为以逗号分隔的单词列表。 评论文本: ```{lamp_review_zh}``` """ response = get_completion(prompt) print(response)结果:
满意,感激,信任,赞扬,愉快
2. 信息提取
从非结构化文本中提取结构化数据(如产品名称、品牌、具体数值)。
- 提取实体:
- Prompt:“识别购买物品和制造公司。”
- 输出:物品是“lamp with storage”,品牌是“Lumina”。
- 格式化输出(JSON):
- 这是推理的高级用法。可以要求模型将提取的信息直接变成代码可读的 JSON 格式。
- Prompt:“将响应格式化为 JSON 对象,键为 'Item' 和 'Brand'。”
- 输出:
{ "物品": "卧室灯", "品牌": "Lumina" }
prompt = f""" 从评论文本中识别以下项目: - 评论者购买的物品 - 制造该物品的公司 评论文本用三个反引号分隔。将你的响应格式化为以 “物品” 和 “品牌” 为键的 JSON 对象。 如果信息不存在,请使用 “未知” 作为值。 让你的回应尽可能简短。 评论文本: ```{lamp_review_zh}``` """ response = get_completion(prompt) print(response)3. 综合推理(多任务合一)
不需要为每个任务写一个 Prompt,可以一次性让模型完成所有分析。
- 示例 Prompt:
prompt = f""" 从评论文本中识别以下项目: - 情绪(正面或负面) - 审稿人是否表达了愤怒?(是或否) - 评论者购买的物品 - 制造该物品的公司 评论用三个反引号分隔。将您的响应格式化为 JSON 对象,以 “Sentiment”、“Anger”、“Item” 和 “Brand” 作为键。 如果信息不存在,请使用 “未知” 作为值。 让你的回应尽可能简短。 将 Anger 值格式化为布尔值。 评论文本: ```{lamp_review_zh}``` """ response = get_completion(prompt) print(response)结果:
{ "Sentiment": "正面", "Anger": false, "Item": "卧室灯", "Brand": "Lumina" }4. 主题推断与新闻提醒
分析长篇文章讨论了什么,并根据预设列表进行匹配。
story_zh = """ 在政府最近进行的一项调查中,要求公共部门的员工对他们所在部门的满意度进行评分。 调查结果显示,NASA 是最受欢迎的部门,满意度为 95%。 一位 NASA 员工 John Smith 对这一发现发表了评论,他表示: “我对 NASA 排名第一并不感到惊讶。这是一个与了不起的人们和令人难以置信的机会共事的好地方。我为成为这样一个创新组织的一员感到自豪。” NASA 的管理团队也对这一结果表示欢迎,主管 Tom Johnson 表示: “我们很高兴听到我们的员工对 NASA 的工作感到满意。 我们拥有一支才华横溢、忠诚敬业的团队,他们为实现我们的目标不懈努力,看到他们的辛勤工作得到回报是太棒了。” 调查还显示,社会保障管理局的满意度最低,只有 45%的员工表示他们对工作满意。 政府承诺解决调查中员工提出的问题,并努力提高所有部门的工作满意度。 """- 主题概括:
- Prompt:“确定文本中讨论的5个主题,每个主题1-2个词。
- 输出:调查结果, NASA, 社会保障管理局, 员工满意度, 政府承诺
prompt = f""" 确定以下给定文本中讨论的五个主题。 每个主题用1-2个单词概括。 输出时用逗号分割每个主题。 给定文本: ```{story_zh}``` """ response = get_completion(prompt) print(response)- 智能新闻提醒(Zero-Shot 分类):
- 场景:我有一个感兴趣的主题列表(如 NASA、工程、地方政府),我想知道这篇文章是否包含这些主题。
- Prompt:“判断以下主题列表中哪些在文本中提到了?用 0 或 1 表示。”
- 逻辑:如果
NASA: 1,则触发代码print("ALERT: New NASA story!")。
prompt = f""" 判断主题列表中的每一项是否是给定文本中的一个话题, 以列表的形式给出答案,每个主题用 0 或 1。 主题列表:美国航空航天局、地方政府、工程、员工满意度、联邦政府 给定文本: ```{story_zh}``` """ response = get_completion(prompt) print(response) topic_dict = {i.split(':')[0]: int(i.split(':')[1]) for i in response.split(sep='\n')} if topic_dict['美国航空航天局'] == 1: print("提醒: 关于美国航空航天局的新消息")总结
Prompt 推理就是利用大模型的语义理解能力,将杂乱的文本瞬间转化为结构化的数据(如情感标签、JSON对象、关键词),从而让计算机程序能够自动处理和分析这些信息。