一、认识AI

1. AI的发展

AI,人工智能(Artificial Intelligence),使机器能像人类一样思考、学习和解决问题的技术。

2. 大模型及其原理

自然语言处理(Natural Language Processing, NLP)中,有一项关键技术叫Transformer,这是一种先进的神经网络模型,是现如今AI高速发展的最主要原因。我们所熟知的大模型(Large Language Models, LLM),例如GPT、DeepSeek底层都是采用Transformer神经网络模型。

  • 机器翻译

  • 语音识别

  • 文生图

  • 推理预测

二、大模型应用开发

1. 模型部署

(1)使用方式

云部署本地部署开发API
优点
  • 前期成本低
  • 部署维护简单
  • 弹性扩展
  • 全球访问
  • 数据安全
  • 不依赖外部网络
  • 长期成本低
  • 高度定制
  • 前期成本极低
  • 无需部署
  • 无需维护
  • 全球访问
缺点
  • 数据隐私问题
  • 网络依赖
  • 长期成本高
  • 初始成本高
  • 维护复杂
  • 部署周期长
  • 数据隐私
  • 网络依赖
  • 长期成本高
  • 定制限制

(2)云服务

云平台公司地址
阿里百炼阿里巴巴大模型服务平台百炼控制台
腾讯TI平台腾讯腾讯云TI平台 _机器学习平台_全栈式人工智能开发服务平台-腾讯云
千帆平台百度百度智能云千帆大模型平台
SiliconCloud硅基流动SiliconFlow
火山方舟-火山引擎字节跳动火山方舟-火山引擎

(3)开发大模型服务

①登录阿里百炼控制台,领取免费额度

②创建API Key

(4)本地部署

 本地部署最简单的一种方案就是使用ollama,官网地址:Download Ollama on Windows

①下载安装ollama

②根据自己的显存选择合适的模型

③测试

2. 调用大模型

2.1 大模型接口规范

以下是DeepSeek官方给出的一段API示例代码:

# Please install OpenAI SDK first: `pip3 install openai`from openai import OpenAI# 1.初始化OpenAI客户端,要指定两个参数:api_key、base_url
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")# 2.发送http请求到大模型,参数比较多
response = client.chat.completions.create(model="deepseek-chat", # 2.1.选择要访问的模型messages=[ # 2.2.发送给大模型的消息{"role": "system", "content": "You are a helpful assistant"},{"role": "user", "content": "Hello"},],stream=False # 2.3.是否以流式返回结果
)print(response.choices[0].message.content)

(1)接口说明

  • 请求方式:通常是POST,因为要传递JSON风格的参数
  • 请求路径,与平台有关
    • DeepSeek官方平台:https://api.deepseek.com
    • 阿里云百炼平台:https://dashscope.aliyuncs.com/compatible-model/v1
    • 本地ollama部署的模型:http://localhost:11434
  • 安全校验:开发平台都需要提供API_KEY来校验权限,本地ollama则不需要
  • 请求参数:参数很多,比较常见的有:
    • model:要访问的模型名称
    • messages:发送给大模型的消息,是一个数组,其中的消息要包含两个属性
      • role:消息对应的角色
      • content:消息内容,也称为提示词(Prompt),也就是发送给大模型的指令
    • stream:true,代表响应结果流式返回;false,代表响应结果一次性返回,但需要等待
    • temperature:取值范围[0, 2),代表大模型生成结果的随机性,越小随机性越低。DeepSeek-R1不支持。

测试:打开Postman进行测试

(2)提示词角色

通常消息的角色有三种:

角色描述示例
system优先于user指令之前的指令,也就是给大模型设定角色和任务背景的系统指令你是一个乐于助人的编程助手,你以光头强的风格来回答用户的问题
user终端用户输入的指令(类似于你在ChatGPT聊天框输入的内容)写一首关于Java编程的诗
assistant由大模型生成的消息,可能是上一轮对话生成的结果注意,用户可能与模型产生多轮对话,每轮对话模型都会生成不同结果

其中System类型的消息非常重要,影响了后续AI会话的行为模式。比如,我们会发现,当我们询问这些AI对话产品“你是谁”这个问题的时候,每个AI的回答都不一样,这是怎么回事呢?

这其实是因为AI对话产品并不是直接把用户的提问发送给LLM,通常都会在user提问的前面通过System消息给模式设定好背景。因此,不同的大模型由于System设定不同,回答的答案也不一样。

示例:

## Role
System: 你是一家名为《黑马程序员》的职业教育培训公司的智能客服,你的名字叫小黑。请以友好、热情的方式回答用户问题。
## Example
User: 你好
Assisant: 你好,我是小黑,很高兴认识你!😊 你是想了解我们的课程信息,还是有其他关于职业培训的问题需要咨询呢?无论什么问题,我都会尽力帮你解答哦!

(3)会话记忆问题

这里还有一个问题:我们为什么要把历史消息都放入Messages中,形成一个数组?

  • 答:这是因为大模型是没有记忆的,因此我们调用API接口与大模型对话时,每一次对话信息都不会保留,多次对话之间都是独立的,没有关联的。

但是大家可能发现了,我们日常使用的AI对话产品却能够记住每一轮对话信息,根据这些信息进一步回答,这是怎么回事呢?

  • 答案就是Messages数组。我们只需要每一次发送请求时,都把历史对话中每一轮的User消息、Assistant消息都封装到Messages数组中,一起发送给大模型,这样大模型就会根据历史对话信息进一步回答,就像是拥有了记忆一样。

示例:

System: 你是一家名为《黑马程序员》的职业教育培训公司的智能客服,你的名字叫小黑。请以友好、热情的方式回答用户问题。User: 你好,我是小明
Assisant: 你好小明,我是小黑,很高兴认识你!😊 你是想了解我们的课程信息,还是有其他关于职业培训的问题需要咨询呢?无论什么问题,我都会尽力帮你解答哦!User: 帮我写一个跟我名字有关的诗
Assisant: 好的,下面是以你的名字写的诗:
小明啊小明,名字真明亮,
如晨曦初现,驱散了黑暗。
心中有火焰,智慧放光芒,
在求知路上,你是那最亮的星。像清澈溪流,绕过知识山岗,
带着勇气和希望,不断向前方。
你的每一步,都闪耀着坚强,
未来的大门,正为你而敞开。无论走到哪,世界因你更晴朗,
小明啊小明,愿你永远这样,
保持那份纯真,还有对梦想的向往,
人生的旅途上,成为自己的太阳。

3. 大模型应用

大模型应用是基于大模型的推理、分析、生成能力,结合传统编程能力,开发出的各种应用。

传统应用AI大模型
核心特点基于明确规则的逻辑设计,确定性执行,可预测结果基于数据驱动的概率推理,擅长处理模糊性和不确定性
擅长领域

1. 结构化计算

  • 例:银行转账系统(精确的数值计算、账户余额增减)
  • 例:Excel公式(按固定规则处理表格数据)

2. 确定性任务

  • 例:排序算法(快速排序、冒泡排序),输入与输出关系完全可预测

3. 高性能低延迟场景

  • 例:操作系统内核调度、数据库索引查询,需要毫秒级响应

1. 自然语言处理

例:ChatGPT生成文章、翻译语言,或客服机器人理解用户意图

2. 非结构化数据分析

例:医学影像识别(X光片中的肿瘤检测),或语音转文本

3. 创造性内容生成

例:Stable Diffusion生成符合描述的图像,或AI作曲工具创作音乐

4. 复杂模式预测

例:股票市场趋势预测(基于历史数据关联性,但需要注意可靠性限制)

不擅长领域

1. 非结构化数据处理

  • 例:无法直接理解用户自然语言提问(如“帮我写一首关于秋天的诗”)

2. 模糊推理与模式识别

  • 例:判断一张图片是“猫”还是“狗”,传统代码需手动编写特征提取规则,效果差

3. 动态适应性

  • 例:若用户需要频繁变化(如电商促销规则每天调整)需不断修改代码。

1. 精确计算

  • 例:AI可能错误计算"12345 × 6789"的结果(需依赖计算器类传统程序)

2. 确定性逻辑验证

  • 例:验证身份证号码是否符合规则(AI可能生成看似合理但非法的号码)

3. 低资源消耗场景

  • 例:嵌入式设置(如微波炉控制程序)无法承受大模型的算例需要

4. 因果推理

  • 例:AI可能误判“公鸡打鸣导致日出”的因果关系

传统应用开发和大模型有着各自擅长的领域:

  • 传统编程:确定性、规则化、高性能,适合数学计算、流程控制等场景。
  • AI大模型:概率性、非结构化、泛化性,适合语言、图像、创造性任务。

两者之间恰好是互补的关系,两者结合则能解决以前难以实现的一些问题:

  • 混合系统(Hybrid AI)
    • 用传统程序处理结构化逻辑(如支付校验),AI处理非结构化任务(如用户意图识别)。
    • 示例:智能客服中,AI理解用户问题,传统代码调用数据库返回结果
  • 增强可解释性
    • 结合规则引擎约束AI输出(如法律文档生成时强制符合条款格式)。
  • 低代码/无代码平台
    • 通过AI自动生成部分代码(如Github Copilot),降低传统开发门槛。

在传统应用开发中介入AI大模型,充分利用两者的优势,既能利用AI实现更加便捷的人机交互,更好地理解用户意图,又能利用传统编程保证安全性和准确性,强强联合,这就是大模型应用开发的真谛!综上所述,大模型应用就是整合传统程序和大模型的能力和优势来开发的一种应用。

大模型对话产品公司地址
GPT-3.5、GPT-4oChatGPTOpenAIhttps://chatgpt.com/
Claude 3.5Claude AIAnthropichttps://claude.ai/chats
DeepSeek-R1DeepSeekDeepSeekhttps://www.deepseek.com/
文心大模型3.5文心一言百度https://yiyan.baidu.com/
星火3.5讯飞星火科大讯飞https://xinghuo.xfyun.cn/desk
Qwen-Max通义千问阿里巴巴https://tongyi.aliyun.com/qianwen/
MoonshootKimi月之暗面https://www.kimi.com/
Yi-Large零一万物零一万物https://platform.lingyiwanwu.com/

常见应用领域:

4. AI应用开发技术框架

4.1 技术架构

4.1.1 Prompt问答

特征:

  • 利用大模型推理能力完成应用的核心功能

应用场景:

  • 文本摘要分析
  • 舆情分析
  • 坐席检查
  • AI对话

4.1.2 Agent + Function Calling

大模型虽然可以理解自然语言,更清晰弄懂用户意图,但是确无法直接操作数据库、执行严格的业务规则。这个时候我们就可以整合传统应用大于大模型的能力。

特征:

  • 将应用端业务能力与AI大模型推理能力结合,简化复杂业务功能开发

应用场景:

  • 旅行指南
  • 数据提取
  • 数据聚合分析
  • 课程顾问

简单来说,可以分为以下步骤:

  • 我们可以把传统应用中的部分功能封装成一个个函数(Function);
  • 然后在提示词中描述用户的需求,并且描述清除每个函数的作用,要求AI理解用户意图,判断什么时候需要调用哪个函数,并且将任务拆解为多个步骤(Agent);
  • 当AI执行到某一步,需要调用某个函数时,会返回要调用的函数名称、函数需要的参数信息;
  • 传统应用接收到这些数据以后,就可以调用本地函数,再把函数执行结果封装为提示词,再次发送给AI;
  • 以此类推,逐步执行,直到达成最终结果。

4.1.3 RAG(Retrieval Augmented Generation)

RAG(Retrieval-Augmented Generation)叫作检索增强生成。简单来说就是把信息检索技术和大模型结合的方案。

大模型从知识角度存在很多限制:

  • 时效性差:大模型训练比较耗时,其训练数据都是旧数据,无法实时更新
  • 缺少专业领域知识:大模型训练数据都是采集的通用数据,缺少专业数据

可能会有同学说,把最新的数据或者专业文档都拼接到提示词,一起发给大模型不就可以了吗。

现在的大模型都是基于Transformer神经网络,Transformer的强项就是所谓的注意力机制。它可以根据上下文来分析文本含义,所以理解人类意图更加准备。

但是,这里的上下文的大小是有限制的,GPT3刚出来的时候,仅支持2000个token的上下文。现在领先一点的模型支持的上下文数量也不超过200k token,所以海量知识库数据是无法直接写入提示词的。

怎么办呢?RAG技术正是来解决这一问题的。

RAG就是利用信息检索技术来拓展大模型的知识库,解决大模型的知识限制。整体来说RAG分为两个模块:

检索模块(Retrieval):负责存储和检索拓展的知识库

  • 文本拆分:将文本按照某种规则拆分为很多片段
  • 文本嵌入(Embedding):根据文本片段内容,将文本片段归类存储
  • 文本检索:根据用户提问的问题,找出最相关的文本片段

生成模块(Generation):

  • 组合提示词:将检索到的片段与用户提问组织成提示词,形成更丰富的上下文信息
  • 生成结果:调用生成式模型(例如DeepSeek)根据提示词,生成更准确的回答

由于每次都是从向量库中找出与用户问题相关的数据,而不是整个知识库,所以上下文就不会超过大模型的限制,同时又保证了大模型回答问题是基于知识库中的内容。

离线步骤:

  • 文档加载
  • 文档切片
  • 文档编码
  • 写入知识库

在线步骤:

  • 获得用户问题
  • 检索知识库中相关知识片段
  • 将检索结果和用户问题填入Prompt模板
  • 用最终获得的Prompt调用LLM
  • 由LLM生成回复

应用场景:

  • 个人知识库
  • AI客服助手

4.1.4 Fine-tuning

Fine-tuning就是模型微调,就是在预训练大模型(比如DeepSeek、Qwen)的基础上,通过企业自己的数据做进一步的训练,使大模型的回答更符合自己企业的业务需求。这个过程通常需要在模型的参数上进行细微的修改,以达到最佳的性能表现。

在进行微调使,通常会保留模型的大部分结构和参数,只对其中的一小部分进行调整。这样做的好处是可以利用预训练模型已经学习到的知识,同时减少了训练时间和计算资源的消耗。微调的过程包括以下几个关键步骤:

  • 选择合适的预训练模型:根据任务的需求,选择一个已经在大量数据上进行预训练的模型,如Qwen-2.5
  • 准备特定领域的数据集:收集和准备与任务相关的数据集,这些数据将用于微调模型。
  • 设置超参数:调整学习率、批次大小、训练轮次等超参数,以确保模型能够有效学习新任务的特征。
  • 训练和优化:使用特定任务的数据对模型进行训练,通过前向传播、损失计算、反向传播和权重更新等步骤,不断优化模型的性能。

模型微调虽然更加灵活、强大,但是也存在一些问题:

  • 需要大量的计算资源
  • 调参复杂性高
  • 过拟合风险

总之,Fine-tuning成本较高,难度较大,并不适合大多数企业。而且前面三种技术方案已经能够解决常见问题了。

4.2 技术选项

从开发成本由低到高来看,四种方案排序如下:

Prompt < Function Calling < RAG < Fine-tuning

所以我们在选择技术时,通常也应该遵循“在达成目标效果的前提下,尽量降低开发成本”这一首要原则。然后可以参考以下流程来思考:

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++第八天-多态

虚函数虚析构函数纯虚函数与抽象类 多态实现的条件&#xff1a;&#xff08;1&#xff09;公有继承 &#xff08;2&#xff09;派生类重写基类虚函数 &#xff08;3&#xff09;基类指针/引用指向派生类对象 虚函数不能是构造函数&#xff0c;不能是静态函数&#xff0c;不能…

全景图渲染Vue3+TS使用Photo Sphere Viewer插件实现

1.Photo Sphere Viewer插件安装: title=插件安装 体验AI代码助手 代码解读复制代码npm install photo-sphere-viewer -S 或 yarn add photo-sphere-viewer -S 2.原始全景图展示 初始化标签容器 体验AI代码助手 代码解读复制代码 // 全景图的根节点必须要具备宽高 TS引用,创建…

Redis之分布式锁(3)

这篇文章我们来详细介绍一下如何正确地基于Redis实现分布式锁。 基于Redis的分布式锁实现 组件依赖 首先通过Maven引入Jedis开源组件&#xff0c;在pom.xml文件加入下面的代码&#xff1a; <dependency><groupId>redis.clients</groupId><artifactId&g…

Java课堂笔记11

三个修饰符 一、abstract&#xff08;抽象&#xff09; 1.抽象方法只能在抽象的类里&#xff0c;只有方法的声明&#xff0c;没有方法的实现。&#xff08;没有{}直接&#xff1b;结尾&#xff09;。 2.abstract修饰的类称为抽象类。 注意&#xff1a;&#xff08;1&#x…

Linux 核心知识点整理(高频考点版)

一、编译与工具链 GCC 编译流程 四阶段&#xff1a;预处理&#xff08;-E&#xff0c;处理头文件 / 宏&#xff09;→ 编译&#xff08;-S&#xff0c;生成汇编&#xff09;→ 汇编&#xff08;-c&#xff0c;生成目标文件&#xff09;→ 链接&#xff08;生成可执行程序&…

轻量化社交管理方案:Skout与云手机的巧妙搭配

在移动社交时代&#xff0c;许多用户开始尝试通过多账号管理来拓展社交圈层。近期测试了Skout社交平台与亚矩阵云手机的搭配使用&#xff0c;发现这个组合为轻量级社交账号管理提供了一个值得关注的解决方案。 基础功能介绍 这套组合的核心优势在于&#xff1a; 通过云手机实…

ETL连接器好用吗?如何实现ETL连接?

目录 一、ETL连接器的功能和优势 1. 数据抽取能力 2. 数据转换功能 3. 数据加载功能 4. 优势总结 二、实现ETL连接的步骤 1. 需求分析 2. 选择合适的ETL连接器 3. 配置数据源和目标系统 4. 设计ETL流程 5. 开发和测试ETL任务 6. 部署和监控ETL任务 三、ETL连接器在…

uniapp实现聊天中的接发消息自动滚动、消息定位和回到底部

前言 前言无需多言&#xff0c;想必大家对聊天软件的功能已经很熟悉&#xff0c; 这里不做过多赘述&#xff0c;笔者通过uniapp实现聊天中的接发消息自动滚动、消息定位和回到底部。 代码实现 <template><view class"chat-container"><!-- 消息列表…

MyBatisMyBatis plus

整合 MyBatis 到 Spring 或 Spring Boot 项目中&#xff0c;可以极大地简化开发流程&#xff0c;尤其是当使用 Spring Boot 时&#xff0c;它提供了自动配置功能&#xff0c;使得集成更加简便。 在 Spring Boot 中整合 MyBatis 1. 添加依赖 首先&#xff0c;在 pom.xml 文件中…

Stable Diffusion 实战-手机壁纸制作 第二篇:优化那些“崩脸”和“马赛克”问题,让图像更加完美!

欢迎回来!在《StableDiffusion实战-手机壁纸制作》系列的第一篇中,我们成功完成了基础操作,制作出了令人炫目的手机壁纸。 今天,我们将进入一个更高阶的领域——优化处理。因为谁不想让生成的艺术品更完美呢?尤其是避免“崩脸”和“马赛克”这种让人抓狂的问题! 创作的路…

408第一季 - 数据结构 - B树与B+树

B树 性质 可以看见一个节点可以有多个数字了 然后也满足左小右大的特征 然后所有的叶子节点都在同一层&#xff0c;然后2个数字的节点就可以有3个分支 然后呢&#xff0c;每个节点里面到底有几个数字是有规定的公式的 就这个公式&#xff0c;m是5阶的&#xff0c;算出来是2和…

SSRF5 Gopher 协议对内网 Web 服务进行 sql 注入 GET 类型和POST类型

实验环境&#xff1b; Centos7.6上同时安装sqli-lib和pikachu 一.Gopher 协议对内网 Web 服务进行 sql 注入 GET 类型 我们先访问sqli-lib第1关 然后我们构造URL&#xff1a; http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?urlhttp://192.168.112.12/sql…

Python打卡DAY31

DAY31&#xff1a;文件的规范拆分和写法 恩师浙大疏锦行 知识点&#xff1a; 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 一、机器学习项目流程&#xff1a; 1、数据加载&#xff1a;从文件、数据库、API 等获取原始数据。 - 命名参考&#xff1a;…

字符串大数 -减法

描述 以字符串的形式读入两个数字&#xff0c;编写一个函数计算它们的和&#xff0c;以字符串形式返回。 代码实现 大小判断&#xff1a;a - b 与 b - a 的绝对值相等将大的数放前面&#xff0c;抽离出结果的符号 import random s, t str(random.randint(1000, 9999)), s…

android google tts如何不联网内部预置多国语音包

在内置Google GMS服务的设备中&#xff0c;可以正常使用TTS&#xff0c;并且可以联网下载多国的语音包。然而&#xff0c;对于未通过GMS认证&#xff0c;只能使用基础的TTS英语播报&#xff0c;而且联网后是无法下载语音包的&#xff0c;会提示需要google service。本文基于以上…

Java 全栈开发学习:从后端基石到前端灵动的成长之路

目录 一、开篇&#xff1a;与 Java 全栈的初遇 二、后端学习&#xff1a;SpringBoot 构建稳健基石 &#xff08;一&#xff09;SpringBoot3 入门&#xff1a;简约而不简单的启程 &#xff08;二&#xff09;Spring Boot Web 应用开发&#xff1a;构建交互桥梁 &#xff08;…

AquaCrop模型源代码分析、模型优化与敏感性分析、未来气候变化影响分析

AquaCrop是由世界粮食及农业组织&#xff08;FAO&#xff09;开发的一个先进模型&#xff0c;旨在研究和优化农作物的水分生产效率。这个模型在全球范围内被广泛应用于农业水管理&#xff0c;特别是在制定农作物灌溉计划和应对水资源限制方面显示出其强大的实用性。AquaCrop 不…

开源模型应用落地-让AI更懂你的每一次交互-mem0-QDrant-Streamlit(一)

一、前言 在人工智能迅猛发展的今天,大型语言模型(LLM)已经成为各行各业的重要工具。然而,尽管这些模型在生成文本、理解语义等方面表现出色,但它们仍然面临一个关键挑战——缺乏持久的记忆能力。传统的对话系统往往只能基于当前对话轮次进行回应,无法有效保留和利用历史…

RPC - Response模块

Requestor 类是一个请求-响应管理器&#xff0c;负责发送请求并处理响应&#xff0c;支持三种交互模式&#xff1a;同步、异步和回调。它跟踪所有发出的请求&#xff0c;当响应到达时将其匹配到对应的请求并进行处理。 newDescribe 函数解析 newDescribe 函数负责创建和注册一…

超高速10G采集卡

超高速10G采集卡是一款高端14位数据采集平台&#xff0c;旨在满足最具挑战性的测量环境。 特性: 单通道和双通道操作 单通道10GSPS或双通道5GSPS 7 GByte/s持续数据传输速率开放式FPGA支持实时DSP 脉冲检测固件选项波形平均固件选项 特征 单通道和双通道工作模式双通道5G…