LLM指令微调Prompt的最佳实践(四):编写推理的Prompt


1. 前言

前情提要:
《LLM指令微调Prompt的最佳实践(一):Prompt原则

《LLM指令微调Prompt的最佳实践(二):Prompt迭代优化》
《LLM指令微调Prompt的最佳实践(三):编写文本摘要的Prompt》

本文根据《面向开发者的LLM入门教程》 ,总结凝练核心内容,加深印象,同时方便快速查阅浏览。

2. Prompt定义

Prompt 是给语言模型提供的输入文本或问题,用于引导模型生成相应的输出或回答。Prompt 可以看作是一个提示或引导,帮助模型理解用户的需求或意图,并生成相关的响应。

主要特点:
(1)引导模型行为:Prompt 用于引导和控制模型的生成行为。通过设计不同的 Prompt,可以让模型生成不同类型的输出,例如回答问题、完成句子、生成故事等。

(2)上下文提供:Prompt 通常包括上下文信息或问题陈述,以帮助模型更好地理解生成任务。例如,给定一段文本让模型续写或提出一个问题让模型回答。

(4)灵活性和适应性:Prompt 可以根据具体任务进行调整和优化,从而提高模型在特定任务上的性能。良好的 Prompt 设计可以显著改善模型输出的质量和相关性。

3. 编写推理的Prompt

3.1 情感推断

3.1.1 情感倾向分析

以一则电商平台上的台灯评论为例,学习如何对评论进行情感二分类(正面/负面)。

Prompt 添加另一个指令:用一个单词回答:「正面」或「负面」,使得输出更加统一,方便后续处理。

lamp_review = """
我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。\
我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。\
几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!\
在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!
"""

编写Prompt

prompt = f"""
以下用三个反引号分隔的产品评论的情感是什么?

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

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

正面

3.1.2 识别情感类型

识别出所表达的情感,并

### Prompt Tuning 和 Chain of Thought (CoT) 的概念 #### Prompt Tuning Prompt tuning 是一种微调技术,通过调整预定义提示模板中的可学习参数来优化模型的表现。这种方法的核心在于设计特定的任务导向型提示词(prompts),并通过少量的训练样本来更新这些提示词对应的嵌入向量[^2]。相比于传统的全模型微调prompt tuning 更加高效,因为它仅需优化一小部分参数。 #### Chain of Thought (CoT) Chain of Thought (CoT) 是指引导大型语言模型逐步推理复杂问题的一种方法。它通过提供多步逻辑推导的方式帮助模型理解并解决问题。具体而言,在输入中加入中间推理步骤可以显著提升模型在涉及数值计算、常识推理等问题上的表现[^1]。这种策略不仅增强了模型的解释性,还提高了其解决多阶段任务的能力。 --- ### Prompt Tuning 和 CoT 的主要区别 | 特征 | **Prompt Tuning** | **Chain of Thought (CoT)** | |---------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | **核心机制** | 调整提示模板中的连续表示形式(如嵌入矩阵)。 | 提供分步式的显式推理路径给模型作为输入的一部分。 | | **适用场景** | 主要用于分类、生成等结构化任务,特别是在标注数据有限的情况下表现出色。 | 面向需要多层次思维过程才能完成的任务,比如算术运算、逻辑推理或科学问答等领域。 | | **实现方式** | 利用领域知识构建离散标签映射到连续空间的方法,例如 KPT 方法。 | 基于 Zero-Shot、One-Shot 或 Few-Shot 学习框架引入额外的信息支持更深层次的理解[^3]。 | --- ### 应用场景分析 #### Prompt Tuning 的典型应用场景 - 文本分类:通过对不同类别分配独特的 prompt 来提高区分度。 - 自然语言生成:定制个性化的写作风格或者对话模式。 示例代码展示如何设置简单的 prompt tuning 过程如下所示: ```python from transformers import AutoModelForMaskedLM, AutoTokenizer model_name = "bert-base-cased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForMaskedLM.from_pretrained(model_name) # 定义一个软提示 soft_prompt = ["This is a", "[MASK]", "example"] input_ids = tokenizer(soft_prompt, return_tensors="pt")["input_ids"] outputs = model(input_ids=input_ids) predicted_token_id = outputs.logits.argmax(dim=-1).tolist()[0][1] print(f"Predicted token: {tokenizer.decode(predicted_token_id)}") ``` #### Chain of Thought (CoT) 的典型应用场景 - 数学求解:当面对复杂的代数方程式时,可以通过分解成若干子问题逐一解答。 - 科技咨询:针对某些跨学科难题,借助已知事实串联起完整的解决方案链条。 以下是利用 CoT 解决简单数学题目的例子: 假设问题是:“如果 John 每天存 $5 并持续一年,则他年底会有多少钱?” 可以这样表述该问题以便让 LLM 使用链式思考法作答: > “每天存款金额为$5;一周有7天所以每周存款=$5*7=...” 最终得到全年总储蓄数额的结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallerFL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值