大模型的6种设计模式

news2025/4/18 0:50:40

大模型的六种设计模式

目录

  • 1. 链式思考模式 (Chain-of-Thought, CoT)
  • 2. ReAct模式 (Reasoning and Acting)
  • 3. 自洽性模式 (Self-Consistency)
  • 4. 代理模式 (Agent)
  • 5. 检索增强生成 (RAG - Retrieval Augmented Generation)
  • 6. 提示工程模式 (Prompt Engineering Patterns)
  • 总结

1. 链式思考模式 (Chain-of-Thought, CoT)

概念

通过引导大模型一步步展示其推理过程,而不是直接给出结论,从而提高复杂任务的准确性。

流程图

输入问题
提示模型展示思考步骤
是否需要分步骤?
步骤1: 分析问题
步骤2: 提出中间推理
步骤3: 得出结论
最终答案
直接回答

示例

prompt = """
问题: 如果一个水果摊有8个苹果,卖出了3个,又进货5个,现在有多少个苹果?

让我们一步步思考:
1. 初始数量: 8个苹果
2. 卖出数量: 3个苹果
3. 卖出后剩余: 8-3=5个苹果
4. 进货数量: 5个苹果
5. 最终数量: 5+5=10个苹果

所以现在有10个苹果。
"""

2. ReAct模式 (Reasoning and Acting)

概念

结合推理(Reasoning)和行动(Acting),让模型先思考再执行,适合需要与外部环境交互的任务。

流程图

输入任务
思考: 分析任务需求
行动: 选择合适工具
执行: 使用工具获取信息
观察: 分析执行结果
是否解决问题?
输出最终答案

示例

prompt = """
任务: 查找2023年全球GDP排名前三的国家

思考: 我需要查询最新的全球GDP数据
行动: 搜索"2023年全球GDP排名"
观察: 根据搜索结果,2023年GDP排名前三的是美国、中国和日本
思考: 这些数据来源可靠吗?需要交叉验证
行动: 检查国际货币基金组织(IMF)发布的数据
观察: IMF数据确认2023年GDP排名前三的是美国、中国和日本

最终答案: 2023年全球GDP排名前三的国家是美国、中国和日本。
"""

3. 自洽性模式 (Self-Consistency)

概念

通过多次运行同一问题,采用多数表决或一致性检查来提高答案可靠性,减少随机性导致的错误。

流程图

输入问题
多次运行同一提示
生成多个独立答案
比较所有答案
答案是否一致?
输出一致答案
使用多数表决或聚类
输出最终答案

示例

def self_consistency_solve(problem, n_samples=5):
    answers = []
    for i in range(n_samples):
        response = llm.generate(f"问题: {problem}\n\n让我们一步步思考:")
        answers.append(extract_final_answer(response))
    
    # 统计答案频率
    from collections import Counter
    answer_counts = Counter(answers)
    
    # 返回出现最多的答案
    return answer_counts.most_common(1)[0][0]

4. 代理模式 (Agent)

概念

赋予模型自主决策和行动的能力,通过设定目标、规划步骤并使用工具来完成复杂任务。

流程图

接收任务
分析任务目标
规划执行步骤
选择合适工具
执行当前步骤
评估执行结果
任务是否完成?
调整计划
输出最终结果

示例

# 基于LangChain的代理实现
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI

# 定义工具
tools = [
    Tool(
        name="搜索",
        func=search_tool,
        description="用于搜索互联网信息"
    ),
    Tool(
        name="计算器",
        func=calculator_tool,
        description="用于执行数学计算"
    )
]

# 初始化代理
agent = initialize_agent(
    tools, 
    llm=OpenAI(temperature=0), 
    agent="zero-shot-react-description",
    verbose=True
)

# 运行代理
agent.run("计算中国和美国GDP之和,并除以2")

5. 检索增强生成 (RAG - Retrieval Augmented Generation)

概念

将外部知识库和检索系统与生成模型结合,增强模型回答的事实准确性和时效性。

流程图

输入问题
分析问题关键信息
从知识库检索相关内容
将检索结果作为上下文
结合上下文生成回答
检查答案合理性
需要进一步检索?
精确查询
输出最终答案

示例

from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
from langchain.document_loaders import TextLoader
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS

# 1. 加载文档并创建向量数据库
loader = TextLoader("data.txt")
documents = loader.load()
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)

# 2. 创建检索增强生成链
qa_chain = RetrievalQA.from_chain_type(
    llm=OpenAI(temperature=0),
    chain_type="stuff",
    retriever=vectorstore.as_retriever()
)

# 3. 查询RAG模型
response = qa_chain.run("公司的退款政策是什么?")

6. 提示工程模式 (Prompt Engineering Patterns)

概念

通过精心设计提示模板,引导模型生成符合特定格式和要求的输出。

流程图

确定任务需求
设计提示模板
添加示例和格式指引
使用指令引导回答格式
输入完整提示给模型
评估输出质量
是否符合预期?
优化提示模板
固化为可复用模式

示例

# 基于角色的提示模板
role_prompt = """
你是一位经验丰富的医学专家。请用专业但通俗易懂的语言回答以下健康问题。
回答需要包含以下部分:
1. 简短的医学解释
2. 可能的原因
3. 建议的行动步骤
4. 何时需要咨询医生

问题: {question}
"""

# 使用少样本学习的提示模板
few_shot_prompt = """
问题: 怎样学习编程?
回答: 学习编程可以从选择一门入门语言如Python开始,参加在线课程,动手实践小项目,加入社区讨论。重要的是持续学习和解决实际问题。

问题: 什么是机器学习?
回答: 机器学习是人工智能的一个分支,通过算法让计算机从数据中学习模式和做出预测,无需明确编程。常见应用包括推荐系统、图像识别和自然语言处理。

问题: {your_question}
回答:
"""

总结

这六种大模型设计模式各有特点和适用场景:

设计模式核心优势典型应用场景
链式思考提高推理准确性数学问题、逻辑推理
ReAct结合思考与行动需要查询外部工具的任务
自洽性提高答案可靠性需要高准确度的关键决策
代理模式自主决策与执行复杂多步骤任务自动化
RAG增强知识与时效性需要专业或最新知识的问答
提示工程控制输出质量和格式结构化内容生成、专业场景

这些设计模式可以单独使用,也可以组合使用以解决更复杂的问题。选择合适的模式取决于具体任务需求、资源限制和期望的结果质量。随着大模型技术的不断发展,这些设计模式也将持续演进和完善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2331124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity中Spine骨骼动画完全指南:从API详解到避坑实战

Unity中Spine骨骼动画完全指南:从API详解到避坑实战 一、为什么要选择Spine? Spine作为专业的2D骨骼动画工具,相比传统帧动画可节省90%资源量。在Unity中的典型应用场景包括: 角色换装系统(通过插槽替换部件)复杂连招系统(动画混合与过渡)动态表情系统(面部骨骼控制)…

C++Cherno 学习笔记day17 [66]-[70] 类型双关、联合体、虚析构函数、类型转换、条件与操作断点

b站Cherno的课[66]-[70] 一、C的类型双关二、C的union(联合体、共用体)三、C的虚析构函数四、C的类型转换五、条件与操作断点——VisualStudio小技巧 一、C的类型双关 作用:在C中绕过类型系统 C是强类型语言 有一个类型系统,不…

wordpress 利用 All-in-One WP Migration全站转移

导出导入站点 在插件中查询 All-in-One WP Migration备份并导出全站数据 导入 注意事项: 1.导入部分限制50MB 宝塔解决方案,其他类似,修改php.ini配置文件即可 2. 全站转移需要修改域名 3. 大文件版本,大于1G的可以参考我的…

【工具使用】在OpenBMC中使用GDB工具来定位coredump原因

在OpenBMC调试中,有时会产生coredump却不知道从哪里入手分析,GDB工具就可以提供帮助。 1 编译带GDB工具的镜像 OpenBMC镜像中默认没有加入GDB工具,因此首先需要编译一个带GDB工具的OpenBMC镜像用于调试。在recipes-phosphor/packagegroups/…

Linux系统(Ubuntu和树莓派)的远程操作练习

文章目录 一、实验一(一)实验准备(二)Ubuntu 下的远程操作(三)树莓派下的远程操作(四)思考 二、实验二1.talk程序2. C 编写 Linux 进程间通信(IPC)聊天程序 一…

高效创建工作流,可实现类似unreal engine的蓝图效果,内部使用多线程高效执行节点函数

文章目录 前言(Introduction)开发环境搭建(Development environment setup)运行(Run test)开发者(Developer)编译(Compile)报错 前言(Introductio…

Design Compiler:语法检查工具dcprocheck

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 dcprocheck是一个在Design Compiler存在于安装目录下的程序(其实它是一个指向snps_shell的符号链接,但snps_shell可以根据启动命令名判…

aws(学习笔记第三十八课) codepipeline-build-deploy-github-manual

文章目录 aws(学习笔记第三十八课) codepipeline-build-deploy-github-manual学习内容:1. 整体架构1.1 代码链接1.2 全体处理架构 2. 代码分析2.1 创建ImageRepo,并设定给FargateTaskDef2.2 创建CodeBuild project2.3 对CodeBuild project赋予权限&#…

深度学习|注意力机制

一、注意力提示 随意:跟随主观意识,也就是指有意识。 注意力机制:考虑“随意线索”,有一个注意力池化层,将会最终选择考虑到“随意线索”的那个值 二、注意力汇聚 这一部分也就是讲第一大点中“注意力汇聚”那个池化…

京东店铺托管7*16小时全时护航

内容概要 京东店铺托管服务的*716小时全时护航模式,相当于给商家配了个全年无休的"运营管家"。专业团队每天从早7点到晚11点实时盯着运营数据和商品排名,连半夜流量波动都能通过智能系统秒级预警。这种全天候服务可不是单纯拼人力——系统自动…

遵循IEC62304YY/T0664:确保医疗器械软件生命周期合规性

一、EC 62304与YY/T 0664的核心定位与关系 IEC 62304(IEC 62304)是国际通用的医疗器械软件生命周期管理标准,适用于所有包含软件的医疗器械(如嵌入式软件、独立软件、移动应用等),其核心目标是确保软件的安…

20250408-报错:pre_state = state同更新现象

项目场景: 基于强化学习解决组合优化问题 问题描述 # POMO Rolloutstate, reward, done self.env.pre_step()# next_state statewith autocast():while not done:# 执行动作并获取新状态和奖励selected, prob self.model(state)# 更新状态:因为self.env.step(s…

如何在服务器里部署辅助域

辅助域(Additional Domain Controller,ADC)是指在现有的Active Directory(活动目录)架构中,新增一个或多个域控制器以提高目录服务的可用性和可靠性。以下是辅助域的定义、功能和应用场景的详细说明&#x…

GNSS有源天线和无源天线

区别 需要外部供电的就是有源天线,不需要外部供电的是无源天线。 无源天线 一般就是一个陶瓷片、金属片等,结构简单,成本低廉,占用空间及体积小,适合于强调紧凑型空间的导航类产品。 不需要供电,跟设备直…

欧税通香港分公司办公室正式乔迁至海港城!

3月20日,欧税通香港分公司办公室正式乔迁至香港油尖旺区的核心商业区海港城!左手挽着内地市场,右手牵起国际航道——这波乔迁选址操作堪称“地理课代表”! 乔迁仪式秒变行业大联欢!感谢亚马逊合规团队、亚马逊云、阿里国际站、Wayfair、coupang、美客多…

ETPNav:基于演进拓扑规划的连续环境视觉语言导航模型

1、现有工作的缺陷: 最近,出现了一种基于模块化航路点的方法的新兴趋势,该方法将复杂任务分为航路点生成、子目标规划和导航控制: (1)在每个决策循环中,代理使用预训练的网络来预测附近的几个…

Spring Cloud LoadBalancer负载均衡+算法切换

目录 介绍核心功能负载均衡启动两个支付服务订单模块引入依赖LoadBalanced 注解启动订单服务测试结果 负载均衡算法切换总结 介绍 Spring Cloud LoadBalancer 是 Spring Cloud 提供的客户端负载均衡解决方案,提供更现代化的 API 和更好的 Spring 生态系统集成。它支…

游戏引擎学习第210天

回顾并为今天的工作做准备 今天我们,进行一些编码工作。这部分的编码内容对那些对代码架构感兴趣的人非常有帮助,我认为今天的编码内容会很有教育意义,尤其是在展示一些代码转化的过程中,希望大家能够从中获得一些启发。 接下来…

UML类图综合实验三补档

1.使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man对象,如果传入参数“W”,则返回一个Woman对象,用Java语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”&#…

WinForm真入门(11)——ComboBox控件详解

WinForm中 ComboBox 控件详解‌ ComboBox 是 WinForms 中一个集文本框与下拉列表于一体的控件,支持用户从预定义选项中选择或直接输入内容。以下从核心属性、事件、使用场景到高级技巧的全面解析: 一、ComboBox 核心属性‌ 属性说明示例‌Items‌下拉…