【AI学习从零至壹】LLM模型prompt开发及⼤模型应⽤

发布于:2025-06-29 ⋅ 阅读:(18) ⋅ 点赞:(0)

⼤语⾔模型 LLM

引⾔
⼤型语⾔模型模型,⼴义上的理解:就是⼀种通过特定的算法和数据结构⽽构建的⼀种机器学习推理模型。⽽狭义上我们还
可以把它理解为:通过超⼤的算法模型所构建的⼀种⼈机交互系统。
对于⼴义⽅式的理解,恐怕很多不了解相关技术概念名称的⼈是很困难的。但对于狭义的⽅式(或者理解为从“它能做什么ˮ)这个⻆度出发,我们倒是可以通过⼀个有趣的解释来理解为什么说 “⼤语⾔模型是⼀种⼈机交互系统ˮ。
从⼈类发明并创造 电脑(Computer) 这种设备以来,无论是⼤型化,⼩型化,还是微型化。我们都在不予余⼒的想要通过 电脑(Computer) 为⼈类达到⼀个目的:帮助⼈类解决现实⽣生活活中的各类需求和问题。
这个目标或者说是理想,在之前很⻓⼀段时间实现起来都是非常困难的。原因有两个:⼀是因为电脑创造之初,就是数学和⼯程的天才作品,其结构和⼯作原理不是普通⼈能够轻松理解的。⼆是因为其结构和⼯作形式并不能直接和⼈类的思想和⾏为习惯直接对接。
随着软件系统的规模和复杂度不断上升,我们也不得不接收这样的⼀个现实:想要让计算机帮助我们完成某项任务,我们必
须要先通过学习才能掌握它,让它为我们服务。

如何构建⼀个AI对话系统

怎么构建⼀台能与我们对话的系统呢?最有效的⼀种⽅法就是让机器去倾听(把⽂本内容输⼊给AI 对话系统)。设计这类机器系统的主要⼯作就是让机器系统⼤量的学习⼈类的语⾔和对话;
但仅靠倾听还远远不能实现我们所想要得到的 “聪明的ˮ 智能AI对话系统。实际上,⼤语⾔模型(LLM)所练习的是 “最⼤程度的积极地倾听ˮ:让智能对话系统不断连续地尝试预测说话者的下⼀句话内容。
注意:这⾥所说的“连续ˮ是指按 字符的⽅式逐个尝试预测
在这里插入图片描述

关于模型的训练

也许在刚刚上⾯提到的最后⼀句话中,我们提到 训练“trainˮ 这个词。按照常识,“trainˮ 就是意味着某种形式的监督,也可以表⽰为某种形式的⽅法和⼿段。
训练对话系统(Chat GPT)的学习材料都是从互联⽹上抓取的⽂本内容,所以内容的连续性是可以确保的,训练所需要
的前提条件完全可以满⾜。
所以模型的训练就是:监督者负责将对话系统预测的内容与⽂本中的实际内容进⾏对⽐,不断训练模型正确地预测⽂本后⾯的内容。
所以说,⼤语⾔模型的训练是⽅法问题。

ollama

ollama 是⼀个让⼤语⾔模型在本地运⾏的软件⼯具。
ollama 快速上⼿
安装成功后,可以在系统的终端下直接通过指令运⾏。它会根据指令和指定的模型⾃动下载,存⼊本地后运⾏。

调⽤LLM模型

⼤语⾔模型的本地化调⽤与API调⽤这两种⽅式各有其独特的特点和差异性
⼤语⾔模型的调⽤分为本地化和远程调⽤⽅式:
本地化调⽤:

from transformers import pipeline, set_seed
if __name__ == '__main__':
 generator = pipeline('text-generation', model='openai-community/gpt2')
 set_seed(33)
 text = generator("你好!我是⼀个AI助⼿,", max_length=50, num_return_sequences=5,
 print(text)

在这里插入图片描述

优点

  • 能够完全控制数据和模型,确保数据隐私和安全;
  • 可以根据特定需求进⾏定制和优化;
  • ⽆需依赖外部服务,避免⽹络延迟。

缺点

  • 需要强⼤的计算资源和基础设施
  • 维护和更新成本⾼
  • 初始设置复杂,技术⻔槛⾼。

远程调⽤:

import requestsimport jsonif __name__ == '__main__':
 # url = 'http://localhost:11434/api/chat'
 url = 'http://localhost:11434/api/generate'
 data = {
 "model": "qwen2",
 "prompt": "⼤海为什么是蓝⾊的?",
 "stream" False
 }
 response = requests.post(url, json=data)
 print(response.status_code)
 print(json.loads(response.text)["response"])

优点:

  • ⽆需强⼤的本地计算资源,使⽤⽅便;
  • 由提供商负责维护和更新,降低管理成本;
  • 可以快速集成和部署,适合快速开发和测试。
    缺点:
  • 数据需要传输到外部服务,存在隐私和安全问题;
  • 依赖⽹络稳定性,可能遇到延迟问题;
  • 功能和使⽤受到API提供商的限制。在这里插入图片描述

⼤模型调⽤存在两种模式:chat 和 generate

generate:通常是⼀次性⽣成⽂本,在单个请求中根据给定的输⼊和条件⽣成指定的⽂本输出,不保留对话状态,每次⽣成都是独⽴的,适合于没有对话上下⽂依赖的任务。

chat:主要⽤于模拟对话场景,⽀持多轮对话。它会维护对话的上下⽂信息,能够根据之前的对话历史⽣成相关的回复,就像⼈与⼈之间的聊天⼀样,适⽤于连续对话和需要上下⽂理解的任务。
上⾯ 远程调⽤ 代码展⽰的是使⽤web协议调⽤本地ollama模型的实现,并⾮真正的 “远程ˮ

设置API KEY

虽然 OpenAI 的 chatgpt3.5 web版已经可以⽆需注册直接使⽤了,但对于API 调⽤,还是需要注册⽤⼾的⾝份验证的。官⽹提供了免费注册机制,但所有的API调⽤都会以调⽤时对应的token数量(包括输⼊的prompt提⽰和⽣成的response)来计费。所以,对于开发者来讲,这部分不是免费的。
⽀持 OpenAI API 的国内⼤模型也可以使⽤,推荐智谱清源的flash免费⼤模型。⽆需代理,但要指定 api-key 和 base-url 。https://www.bigmodel.cn/console/overview

测试一个对话

1.⾸先安装python-dotenv包,⽤于⽀持配置项导⼊系统环境变量
2.创建或打开⼀个项目目录,内部创建⼀个 .env ⽂件并使⽤⽂本编辑器编辑内容
API_KEY=“此处替换为⾃⼰的api-key” # API_Key
BASE_URL=“https://open.bigmodel.cn/api/paas/v4” # 智谱官⽅API URL
3.编写⼀段python代码,测试openai的api对话调⽤

import os 
from dotenv import load_dotenv,find_dotenv
from openai import OpenAI
if __name__ == "__main__":
    load_dotenv(find_dotenv())
    #创建调用客户端
    client = OpenAI(
        api_key = os.getenv["api_key"],
        base_url = os.getenv("base_url"),
    )
    #chat模式调用
    response = client.chat.completions.create(
        #模型名称
        model = "glm-4-plus"
        #消息
        messages=[
            {'role':'user','content':"我喜欢你,你喜欢我吗?"}
        ]
        #模型参数
        temperature = 0

    )
    #打印结果
    print(response.choices[0].message.content)

find_dotenv 会搜索并返回 .env ⽂件所在的位置,字符串格式。
load_dotenv 会加载指定 .env ⽂件中的字段,注册为系统环境变量。可以通过 os.getenv 读取系统环境变量的值。
OpenAI 对象会通过指定的 api_key 和 base_url 创建⼀个⼤模型调⽤的客⼾端,⽤于和指定的服务器连接并进⾏通讯。
client.chat.completions.create() 是实现chat模式的客⼾端⽅法调⽤。
参数:
model 指定要调⽤的模型名称
messages 由⼀个或多个⻆⾊ role 对话内容组成的信息,这⾥我们称之为 提⽰词(Prompt)。
temperature 采样温度,控制输出的随机性,必须为正数 取值范围是: (0.0,1.0) , 默认值为 0.75 ,值越⼤,会使输出更
随机,更具创造性;值越⼩,输出会更加稳定或确定。
top_p 核取样 取值范围是: (0.0, 1.0) ,默认值为 0.90 模型考虑具有 top_p 概率质量 tokens 的结果。
max_tokens 控制⽣成的响应的最⼤ tokens 数量
⼤模型token统计
token 可简单理解为模型处理⽂本时的基本单位,通常是字词、标点、⽚段等的编码表⽰ ,不同模型的 token 切分规则有差异 。
例如:Open AI 的 o3 模型,最多⽀持20万个上下⽂ token,最多⽀持10万个 最⼤输出 token。
上下⽂(context):指模型在⽣成或理解⽂本时所参考的 “前⽂信息ˮ ,这些信息以 token 形式被模型纳⼊考虑。
最⼤输出(max output):指模型⼀次⽣成⽂本时,最多能输出的 token 数量 。
响应格式

{
 "choices": [
 {
 "finish_reason": "stop",
 "index": 0,
 "message": {
 "content": "2022年世界杯在卡塔尔举⾏。",
 "role": "assistant"
 },
 "logprobs": null
 }
 ],
 "created": 1677664795,
 "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
 "model": "gpt-3.5-turbo-0613",
 "object": "chat.completion",
 "usage": {
 "completion_tokens": 17,
 "prompt_tokens": 57,
 "total_tokens": 74
 }
}

对话响应的关键信息在 content 字段中,可以直接⽤下⾯的代码获取

response.choices[0].message.content

每个响应都将包含⼀个 finish_reason 可能取值为:
stop :API 返回完整消息,或由通过 stop 参数提供的停⽌序列之⼀终⽌的消息
length :由于 max_tokens 参数令牌限制模型的输出不完整
function_call :模型决定调⽤⼀个函数
content_filter :由于指定了内容过滤器中的关键词⽽省略了内容
null :API 响应仍在进⾏中或未完成
根据输⼊参数,模型响应可能包含不同的信息。

prompt提示词

提示词在⼤模型交互中的核心作用
在了解了⼤模型⼯作的本质:通过统计预测⽣成⽂本后,也就明⽩⼤模型对语义是缺乏真正理解的。
那么所谓的提⽰词(prompt)⼜是什么呢?我们可以把⾃⼰当做是与⼤模型进⾏交互的 “翻译官” ⻆⾊。
既然是翻译,那么就要⽤⼼思考⼀下。提⽰词就是对⼤模型提出问题或要求时,详细描述的⽂本。
通过描述增加模型的理解
下⾯我们可以通过下⾯的实验来对⽐:
输⼊简单提示:
分析用户需求
观察⼤模型⽣成的⽂本,是具体?还是泛泛⽽谈?
输入优化提示:
作为电商客服,分析⽤⼾投诉 ’ 物流太慢 ’ 的原因,需包含快递公司效率、天⽓影响、⽤⼾收货地址三个维度
补偿模型缺陷
⼤模型缺陷:缺乏实时数据、专业领域知识、逻辑推理能⼒
知识注⼊:
当前时间是2025年3⽉2⽇,据@国铁济南局 微博消息,济南、淄博等地出现⼤范围暴雪,受此影响,京沪⾼分析⾼铁延误原因。
领域限定:
“以律师⾝份审核合同条款…”

提示词结构特征

在这里插入图片描述
横轴:表示包含答案的⽂档在输⼊中的位置,从第1位到第20位 。
纵轴:表示模型回答的准确率(Accuracy)。
数据曲线:展示的是gpt-3.5-turbo-0613的表现。(open-book 即开卷模式,表⽰可访问相关⽂档)
标注说明:
当相关⽂档在输⼊开头(1st Position )时,模型准确率⾼达75左右 。
当相关⽂档在输⼊结尾(20th Position )时,准确率约为63 。
当相关⽂档在输⼊中间位置(如10th Position )时,准确率⼤幅下降。
基线对⽐:红⾊虚线代表gpt-3.5-turbo-0613(closed - book,闭卷模式,不能访问相关⽂档)的表现,作为基线(Baseline: model must answer question without access to a document ),其准确率稳定在55左右 。

提示词的五大核心价值

1.信息传递的精准性
2.输出质量的可控性
3.用户意图的对⻬性
4.复杂任务的拆解性
5.伦理⻛险的防御性

1. 信息传递的精准性

**问题:**模糊指令导致输出偏差
新版本:A5CN204
更新内容:
1.更新 ZLauncher 版本⾄ v1.1.3-beta
2.更新应⽤商店版本⾄ v2.60
3.修复品牌显⽰错误
4.浏览器默认主⻚更改为http://n1.nokia.com/cn
5.修复部分⽿机拔插可能出现的侦测错误
6.修正⾼⾳量时扬声器外放破⾳问题
7.提升扬声器⾳量稳定性
8.提升蓝⽛侦测稳定性
9.加强视频播放的暂停/快进/快退流畅度
10.加强部分App运⾏效率,如电⼦邮件,应⽤商店等
根据以上描述,撰写产品升级说明
解决⽅案:
明确⽬标:根据以上描述,撰写500字以内的产品升级说明。
量化标准:
根据以上描述,撰写产品升级说明,要求达到客⼾满意度提升20%以上。
案例对⽐:
低效:“撰写产品升级说明” → 输出抽象
⾼效:“500字以内、满意度提升20%以上” → 输出可执⾏⽅案

2. 输出质量的可控性

约束维度:
在这里插入图片描述
针对对⼀份电商的客⼾评论,⽣成⼀份电商⾃动回复。实现提⽰词可控

3. 用户意图的对⻬性

深层需求挖掘:
⽤⼾输⼊:
⽣成xxx促销⽂案
潜在需求:提升转化率、突出产品卖点、符合品牌调性
提⽰词设计:
撰写突出 ’ 限时折扣 + 赠品 ’ 的促销⽂案,使⽤感叹号增强紧迫感,结尾添加购买链接

4. 复杂任务的拆解性

拆解策略:
问题拆解法:
制定市场推⼴⽅案
分解为 “⽬标设定→竞品分析→渠道选择→效果评估”
多轮提⽰法:
通过 “请先收集数据→分析趋势→⽣成⽅案” 的分步骤引导

5. 伦理⻛险的防御性

安全控制:
敏感词过滤:“禁⽌提及政治敏感话题”
合规引导:“根据《⽹络安全法》第 XX 条…”
⻛险警⽰:“此内容可能涉及虚假宣传,请核查事实”

经典框架解析

⻆⾊设定 + 任务指令 + ⽰例引导
问题拆解法:将复杂任务分解为⼦步骤

任务场景

⽤⼾需要为⼀场线上会议设计⼀个30分钟的议程框架,要求覆盖讨论主题、时间分配、参与⼈员和预期成果。

  • ⻆⾊设定
    你是⼀位专业的会议策划专家,擅⻓⾼效组织线上会议。你的任务是根据⽤⼾需求,设计结构化的议程框架。
  • 任务指令
    请为⼀场30分钟的线上会议设计议程框架,需包含以下要素:
    会议主题与⽬标
    时间分配(精确到分钟)
    关键讨论点与参与⼈员
    预期成果与后续⾏动
  • ⽰例引导
    ⽰例输⼊:
    讨论新市场进⼊策略,参会者包括市场部负责⼈、产品经理、销售总监。
    ⽰例输出:
  1. 会议主题:东南亚市场进⼊策略讨论(30分钟)
    ⽬标:确定产品定位、渠道选择和推⼴预算。
    时间分配:
  • 开场(2分钟):主持⼈介绍议程与⽬标(主持⼈:市场部负责⼈)
  • 市场分析(8分钟):产品经理汇报数据(参与⼈:产品经理)
  • 渠道讨论(10分钟):销售总监提出建议(参与⼈:销售总监)
  • 预算分配(8分钟):全体讨论并确定⽅案(参与⼈:全体)
  • 总结(2分钟):主持⼈确认下⼀步⾏动(主持⼈:市场部负责⼈)
  1. 预期成果:
  • 确定产品核⼼卖点与⽬标⽤⼾画像。
  • 明确渠道优先级与推⼴预算分配。
  • 后续⾏动:市场部3⽇内提交细化⽅案。
问题拆解法

将任务分解为⼦步骤:
确定会议主题与⽬标
⼦问题:⽤⼾的核⼼需求是什么?需要解决哪些具体问题?
时间分配与流程设计
⼦问题:每个环节需要多⻓时间?如何平衡讨论与决策?
关键讨论点与⻆⾊分配
⼦问题:哪些环节需要特定⼈员主导?如何避免冷场或超时?
预期成果与闭环
⼦问题:会议结束后需要输出什么?谁负责后续跟进?

最终示例

你是⼀位专业的会议策划专家。请根据以下输⼊设计30分钟线上会议议程:
输⼊:
讨论公司年度营销预算分配,参会者包括CEO、市场总监、财务总监。
要求:

  1. 按照“会议主题与⽬标 → 时间分配 → 关键讨论点与⻆⾊ → 预期成果ˮ的结构输出。
  2. 参考⽰例格式,确保每个环节时间精确到分钟,⻆⾊明确。
  3. ⽰例:[上述⽰例内容]
    输出:
    [此处由模型⽣成]
    解析说明
  • ⻆⾊设定明确了模型的专业性,增强⽤⼾信任。
  • 任务指令将模糊需求转化为具体可执⾏的框架。
  • ⽰例引导通过结构化案例降低模型理解成本。
  • 问题拆解法将复杂任务分解为可管理的⼦步骤,确保逻辑完整性。通过此框架,模型可⾼效⽣成符合预期的会议议程,减少迭代成本。

网站公告

今日签到

点亮在社区的每一天
去签到