Prompt工程 智能客服推荐应用案例

prompt

Prompt定义

Prompt 就是你发给大模型的指令,比如编写某个故事、讲个笑话、写份报告等。

貌似简单,但意义非凡

  1. prompt 是 AGI 时代的编程语言。
  2. prompt 工程是 AGI 时代的软件工程。
  3. prompt 工程师是 AGI 时代的程序员。

学会 prompt 工程门槛低,天花板高,所以有人戏称 prompt 为咒语。

prompt 调优

找到好的 prompt 是个持续迭代的构成,需要不断调优。

如果知道训练数据是怎样的,参考训练数据来构造 prompt 是最好的。

  1. 把 AI 当人看: 你知道ta爱度西游记,就和ta聊西游记。
  2. 不知道训练数据怎么办? 看ta是否主动告诉你。例如 OpenAI 的 GPT 对 Markdown 格式友好
  3. 还有一种方法就是不断尝试。有时一字之差,对token生成概率的影响都可能是很大的,也可能毫无影响。

试是常用方法,确实有运气因素,所以门槛低、天花板高。

高质量 prompt 核心要点:指令具体、信息丰富、尽量少歧义

prompt的典型构成

不要固守模版。模版的价值是提醒我们别漏掉什么,而不是必须遵守才行。

  • 角色:给AI定义一个最匹配任务的角色,比如:你是一位 Python 大师
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其他背景信息(尤其在多轮交互中)
  • 例子:必要时给出距离,学术中成为 one-shot learninig, few-shot learninig 或 in-context learninig;实践证明其对输出正确性有很大帮助
  • 输入:任务的输入信息;在提示词中明确的标识出输入。
  • 输出:输出的格式描述,以便后续模块自动解析模型的输出结果,比如(JSON、XML)

大模型对prompt开头和结尾的内容更敏感,先定义角色,其实就是在开头把问题域收窄,减少二义性。

LangChain 开发框架

LangChain 定义

LangChain 是一个开源框架,旨在帮助开发者利用大语言模型(LLM)构建智能应用程序

它通过提供模块化的工具和组件,使得开发者能够轻松集成外部数据、上下文记忆和工具调用,从而增强LLM的能力。

截止2024年4月,LangChain 的最新版本为 v0.3。该框架支持 Python 和 JavaScript 两种主要编程语言,官方文档地址以为: https://python.langchain.com/docs/introduction/

LCEL 定义

LCEL(LangChain Expression Language,LangChain 表达式语言)是 LangChain 框架中的一种声明式语音,最初被称为 "chain",用于简化和灵活地组合 LLM 的调用流程。

它通过定义一系列操作步骤(称为链,chain),将输入处理、模型调用和输出生成整合为一个可配置的管道。LCEL 的主要特点包括:

  • 支持流式输出: 允许实时处理和输出结果,适用于需要低延迟的场景。
  • 异步支持: 提供异步执行能力,提升大规模任务的效率。
  • 优化的并行执行: 支持多个任务同时运行,较少等待时间。
  • 重试和回退: 内置错误处理机制,确保链的鲁棒性。
  • 访问中间结果: 开发者可以在链的任意阶段获取中间输出,便于调试和优化
  • 输入和输出模式: 支持定义严格的输入和输出格式,确保一致性
  • 无缝LangSmith跟踪集成: 与LangSmith平台紧密结合,便于监控和评估
  • 无缝LangServe部署集成: 支持将链部署为 REST API,简化生成环境集成

LCEL 的设计目的是让开发者能够以生命的方式快速构建复杂的 LLM 工作流,同时保持高度的可定执行和可扩展性。

LangSmith

LangChain 不仅仅是一个独立的框架,它还与一系列相关工具(如 LangSmith、LangServe和LangGraph)共同构成了一个完整的开发生态系统。

这些工具相互协作,覆盖了从开发、调试到部署的整个生命周期,进一步提升了基于大语音模型(LLM)的应用程序构建效率。

LangSmith是一个专门为生产级LLM应用程序设计的平台,旨在帮助开发者监控、调试和优化基于LangChain的应用,官方文档地址: https://docs.smith.langchain.com

LangSmith的主要功能包括:

  • 实时监控:实时跟踪 LLM 的输入、输出和性能指标
  • 评估工具:提供测试和基准工具,帮助开发者评估模型的准确性和可靠性
  • 调试支持:记录中间步骤和日志,便于定位问题
  • 版本管理:支持对模型和链的版本控制,便于迭代开发
  • 协作功能:允许多人团队共同管理和优化应用

LangSmith 与 LangChain 和 LCEL 无缝集成,是构建健壮、可扩展 LLM 应用的重要工具,尤其适用于需要上线部署和持续优化的场景。

Gradio

Gradio 是一个开源的 Python 库,旨在简化大模型应用程序的部署和演示。它提供了一个用户友好的界面,使开发者能够快速构建和分享交互式应用。

官网地址: https://www.gradio.app

以下是 Gradio 的一些主要特点:

  • 简单易用:Gradio 的 API 设计非常直观,用户可以用几行代码创建应用,无需前段开发经验。
  • 支持多种输入输出:Gradio 支持多种类型的输入(文本、图形、音频、视频等)和输出,方便用户与模型交互。
  • 实时预览:用户可以实时查看模型的输出,方便调试和展示。
  • 分享和部署:生成的应用可以通过链接共享,甚至可以在本地服务器上运行,使团队合作和用户反馈变得更加简单。
  • 集成友好:Gradio 可以与多种机器学习框架(如 TensorFlow、Pytorch、Scikit-Learn 等)轻松集成,支持将已有模型快速转换为交互式应用。
  • 自定义界面:用户可以通过Gradio 的组件自定义界面,调整布局和样式,以满足特定需求

通过 Gradio ,开发者能够快速展示他们的大模型应用,收集用户反馈,从而更好地优化和改进模型。

思维链

什么是思维链

思维链是一种大模型在处理复杂问题时,通过显式地分解问题、逐步推理,最终得出答案的推理能力。它的核心在于让模型在生成答案之前,先输出一系列中间推理步骤,从而模拟人类在解决复杂问题时的分布思考方式。例如,在回答数学问题时,模型会先列出公式、计算中间结果,再得出最终答案,而不是直接给出一个可能错误的结论。

思维链是 OpenAI等机构在训练大模型时发现的一种能力。工程师们最初并未刻意设计让模型具备这种分步推理能力,但通过观察发现,当模型在某些任务中被要求逐步思考时,其表现显著优于直接输出答案。这引发了研究者对思维链的系统性探索。

2022年,Google的研究团队在一篇名为《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》的论文中正式提出了 CoT的概念,并展示了其在算术推理、逻辑推理和常识推理任务中的强大效果。

思维链的工作原理

思维链的核心在于利用大模型的自回归生成能力,通过生成中间推理步骤,为后续的答案提供更丰富的上下文,从而提高正确率。

具体来说:
上下文增强,大模型生成答案的过程依赖于输入的上下文(Prompt)。当用户要求"一步一步分析"时,模型会在生成答案前,先输出一系列相关的推理步骤。这些步骤作为"上文",为最终答案的生成提供了更强的约束和引导,减少了模型"跳跃式"推理导致的错误。

分析复杂问题,对于设计多步推理的问题(例如数学、逻辑推理、决策分析),思维链将问题拆解为多个子问题,逐一解决。这种分而治之的策略降低了问题的复杂度,同时让模型的每次推理都更聚焦。

模仿人类思维,人类在解决复杂问题时,通常也会分解问题、逐步推导。例如,解一道数学题时,我们会先理解题目、列出公式、计算中间结果,再验证答案。思维链让模型以类似的方式运作,从而更贴近人类的推理过程。

思维链的触发方式

思维链通常通过特定的提示(Prompt)触发,以下是一些常见的触发方式:
显式提示 :用户在提问时直接要求模型分布推理,例如:

"Let's think step by step."

"请一步一步分析后再做出回答。"

"Break down the problem into steps and explain each one."

示例引导(Few-Shot Prompting):在提示中提供几个带有分步推理的示例,让模型模仿这种模式。例如,给出一个数学问题的完整解题过程,然后让模型回答类似问题。

零样本(Zero-Shot-CoT):直接在提示词中加入 "think step by step",及时没有示例,模型也能自动生成分布推理。这种方法在大模型(如GPT-4、DeepSeek-R1)中表现尤为突出。

思维链的应用场景

思维链在以下场景中尤为有效:
数学和计算问题: 例如,解方程、计算概率、优化问题,模型通过列出公式和中间步骤,确保计算的准确性。

逻辑推理:如逻辑谜题、推理游戏,模型通过逐步分析条件,排除错误选项。

多步决策问题: 例如,商业决策、规划问题,模型通过分解目标和约束,逐层推导出最优解。

常识推理:在需要结合多方面知识的问题中,思维链帮助模型整合信息,避免"想当然"的错误。

思维链的局限性

尽管思维链显著提升了大模型的推理能力,但它仍有一些局限:

  • 依赖提示质量: 如果用户提示不明确或没有要求分步推理,模型可能仍然直接输出错误答案。
  • 计算成本:生成中间推理步骤需要更多的计算资源、token消耗和时间,尤其在长推理链中。
  • 不适用于所有任务:对于简单的事实性问题或不需要多步推理的任务,思维链可能显得冗余。
  • 可能陷入错误路径:如果模型在推理早期犯错,后续步骤可能基于错误的假设,导致最终答案错误。

自洽性 SelfConsistency

什么是自洽性?

自洽性是一种通过多次采用和投票来提高大模型输出可靠性的技术,旨在对抗模型生成"幻觉"(即虚假或不一致的答案)。它的核心思想是:对于同一个问题,模块可能因为随机性(例如温度参数)生成不同的答案,通过多次运行并选择最常见的答案,可以提高结果的正确性。

类比人类行为,"就像我们做数学题,要多次验算一样"。人类咋已解决复杂问题时,往往会通过反复检查或从不同的角度验证答案,以确保结果的可靠性。自洽性让模型以人类的方式"自我验证"。

自洽性的工作原理

自洽性的实现分为以下步骤:

  1. 多次采用:对同一个问题,使用相同的提示(Prompt),但通过调整随机种子或温度参数,让模型生成多个不同的答案。
  2. 答案聚合:收集所有生成的答案,分析他们的分布。
  3. 投票机制:选择出现频率最高的答案作为最终输出。如果问题涉及数值计算,还可以取平均值或中位数
  4. 数学基础:自治性的有效性基于大模型的统计特性。模型在生成答案时,正确的答案往往具有更高的概率分布,而错误的答案则较为分散。通过多次采样,可以放大正确答案的信号,抑制错误答案的噪声。

2022 年,Google的研究团队在论文《Self-Consistency Improves Chain Of Thought Reasoning in Language Models》中提出了自洽性方法,证明其在数学推理和逻辑推理任务重能显著提升性能。

自洽性的应用场景

自洽性特别适用于以下场景:

  1. 数学和计算问题:例如,复杂的算术题或概率题,模型可能因为随机性生成不同答案,自治性可以选出最可靠的结果。
  2. 逻辑推理:在需要严格一致的推理任务中,自治性帮助模型避免因随机性导致的错误
  3. 开放性问题:对于答案不唯一但需要一致性的问题(如生成代码、翻译),自洽性可以提高输出的稳定性。

自洽性的优势

  1. 对抗幻觉:通过多次采样,自洽性可以有效较少模型生成虚假或不合理答案的概率。
  2. 简单易实现:自洽性不需要修改模型结构,只需要在推理阶段多次运行即可。
  3. 与思维链结合: 自洽性与思维链结合效果更佳。例如,模型可以先通过思维链生成分布推理,再通过多次采样验证每一步的正确性

自洽性的局限性

  1. 计算成本高:多次采样需要更多的计算资源,尤其是在处理大规模任务时。
  2. 不适合所有问题:对于简单的事实性问题,多次采样可能没有显著提升,反而增加开销。
  3. 依赖模型性能:如果模型本身的正确性很低,多次采样可能仍然无法得出正确答案。

前期准备

开发环境准备

本地环境准备链接

大模型LLM服务接口调用方案

大模型LLM服务接口调研方案链接

项目初始化

项目构建

使用 Pycharm 构建一个项目,为项目配置虚拟 Python 环境,Python 版本选择 3.11

项目名称: LangChainV3Test

虚拟项目名称保持与项目名称一致。

将相关代码拷贝到项目工程中

将从 https://gitee.com/NanGePlus/LLMsBasisDevelopment 下载的源码拷贝到刚刚建立的 Pycharm项目下。

安装项目依赖

命令行终端中直接运行如下命令安装依赖包

复制代码
pip install langchain==0.3.23
pip install langchain-openai==0.3.12
pip install fastapi==0.115.12
pip install uvicorn==0.34.0
pip install langchain_community==0.3.21
pip install gradio==5.24.0
pip install concurrent-log-handler==0.9.25

或运行如下命令安装

复制代码
pip install -r requirements.txt -i 

如果下载慢,可以使用国内镜像

复制代码
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

安装完依赖后,拷贝 01_BasicDemoWithLangChain 、02_BasicDemoWithLangChain 到PyCharm工程下。

  • utils/llms.py 用于加载对应的LangChain的Chat类
  • utils/config.py 里面定义了全局配置
  • llmTest.py 是一个简单调用大模型接口的例子
  • main.py 会通过FastApi启动一个服务,接收客户端的post请求。
  • apiTest.py 会连接 main.py 启动的服务,发起请求,并接受响应。

运行llmTest.py ,可以直接调用大模型接口,完成响应。改脚本可用于检查大模型参数是否有问题。

运行main.py启动api服务。

运行apiTest.py,发起http post 请求,流失拿到大模型响应

相关推荐
寂寞恋上夜1 天前
枚举值怎么管理:固定枚举/字典表/接口动态(附管理策略)
prompt·状态模式·markdown转xmind·deepseek思维导图
沛沛老爹1 天前
Skills高级设计模式(一):向导式工作流与模板生成
java·人工智能·设计模式·prompt·aigc·agent·web转型
minhuan1 天前
大模型应用:大模型权限管控设计:角色权限分配与违规 Prompt 拦截.49
prompt·大模型应用·大模型权限管控·违规提示词监测
Helson@lin1 天前
Vibe Coding-Web端UI分享Prompt 可复刻
prompt
victory04311 天前
同一prompt下 doubao qwen gpt kimi的模型训练时长预测不同表现
gpt·prompt
后端小张1 天前
【AI 学习】AI提示词工程:从入门到实战的全栈指南
java·人工智能·深度学习·学习·语言模型·prompt·知识图谱
reddingtons2 天前
【游戏宣发】PS “生成式扩展”流,30秒无损适配全渠道KV
游戏·设计模式·新媒体运营·prompt·aigc·教育电商·游戏美术
Chasing Aurora2 天前
数据库连接+查询优化
数据库·sql·mysql·prompt·约束
效率客栈老秦2 天前
Python Trae提示词开发实战(2):2026 最新 10个自动化批处理场景 + 完整代码
人工智能·python·ai·prompt·trae
GISer_Jing2 天前
提示链(Prompt Chaining)、路由、并行化和反思
人工智能·设计模式·prompt·aigc