当前位置: 首页>编程语言>正文

【AI大模型】应用开发基础

前言

1、了解大模型能做什么
2、整体了解大模型应用开发技术栈
3、浅尝OpenAI API的调用

AI全栈工程师:懂AI、懂编程、懂业务的超级个体,会是AGI(Artificial General Intelligence 通用人工智能)时代最重要的人。

知识体系

【AI大模型】应用开发基础,第1张

AI学习方法论

从三个方面学习:原理实践认知 三类
1、不懂原理就不会举一反三,走不了太远。
2、不懂实战就只能纸上谈兵,做事不落地。
3、认知不高就无法做对决策,天花板太低。

如果能三者兼备,是最好的。但不同岗位角色可以有不同的取舍。比如:
1、老板更多关注认知,但如果懂原理,能形成更多的认知
2、程序员更多关注实战,但原理和认知是地基和天花板
3、产品经理更多关注认知,但应该也懂原理,并了解一些实战
4、市场、运营和销售需要关注认知,并了解一些原理

说明:在剧烈变革的时代,千万别只拿代码当干货!更深的东西,未必是有用的。

大模型

  • 什么是AI?基于机器学习、神经网络的是AI;基于规则、搜索的不是AI
  • 大模型:全称大语言模型(Large Language Model,缩写:LLM)


    【AI大模型】应用开发基础,第2张
    常用大模型

大模型常见用法

1、按格式输出:例如,从一段话中,提取姓名、地址、电话等结构化信息。

【AI大模型】应用开发基础,第3张

2、分类:例如,根据新闻标题,对新闻进行分类

【AI大模型】应用开发基础,第4张

3、聚类:把一堆句子,按意思相近度进行分组

【AI大模型】应用开发基础,第5张

4、更多用法

  • 持续互动:多轮互动问答、角色扮演等
  • 舆情分析:从公司产品的评论中,分析哪些功能/元素是用户讨论最多的,评价
    是正向还是负向
  • 坐席质检:检查客服/销售人员与用户的对话记录,判断是否有争吵、辱骂、不
    当言论,话术是否符合标准
  • 故障解释:根据系统报错信息,给出方便非技术人员阅读的故障说明
  • 零代码开发/运维:自动规划任务,生成指令,自动执行
  • 生成业务逻辑:自定义一套业务描述语言(DSL),直接让ChatGPT写业务逻
    辑代码

思考:你的业务中,有哪些问题可以用AI解决?

5、可能一切问题,都能解决,所以是AGI

划重点:
1.把大模型看做是一个函数,给输入,生成输出
2.任何业务问题,都可以用语言描述,成为大模型的输入,就能生成业务问题
的结果
3.实际工作中,通常需要将业务任务拆解为若干个子任务,分别解决。理解业
务本质,对拆解任务有很大帮助!

  • 一般在使用大模型时,不是直接把一个比较大的任务丢给大模型,而是把任务进行拆解,拆解成若干个子任务逐个解决,得到结果再组合,这样效果会更好。
  • agent:就是用AI来完成任务的拆解

大模型的工作原理

1、通俗原理
大模型是怎么生成结果的?其实,它就是根据上文,猜下一个词(的概率)…… 这个算法叫 transformer


【AI大模型】应用开发基础,第6张

如:The cat sat 后面出现的词可能是:at(0.1) / in(0.1) / on(0.8)

AI大模型的核心原理:基于概率生成下一个token(选择下一个概率高的token),token拼token,最后就拼成了一整句话。

OpenAI的接口名就叫completion,也证明了其只会生成的本质。下面用程序演示生成下一个字。你可以自己修改prompt试试。还可以使用相同的prompt运行多次。

# 这是一个Python调用ChatGPT的代码

# 1.引入必须的包
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
import os

# 读取本地/项目的环境变量。

# find_dotenv()寻找并定位.env文件的路径
# load_dotenv()读取该.env文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())

client = OpenAI()

prompt = "今天我很" #改我试试
# 使用openai中的api完成chatgpt的模型调用
response = client.completions.create(
    # chatgpt背后的模型
    model = "gpt-3.5-turbo-instruct",
    # 向chatgpt提出的问题
    prompt = prompt,
    # 返回的最大字符个数
    max_tokens = 20,
    temperature = 0.5, # temperature(温度)参数,范围是 0~2,它用于控制随机性。
    stream = True
)

for chunk in response:
    message = chunk.choices[0].text
    print(message, end='')

# 打印结果,如:
'''
    输出结果:
    高兴
    今天我因被告知我通过了一场重
'''

2、略深一点的通俗原理
用不严谨但通俗的语言描述大模型的工作原理:

1.大模型阅读了人类曾说过的所有的话。这就是机器学习,这个过程叫训练
2.把一串 token 后面跟着的不同 token 的概率记了下来。记下的就是参数,也叫权重
3.当我们给它若干 token,大模型就能算出概率最高的下一个 token 是什么。这就是生成,也叫推理
4.用生成的 token,再加上上文,就能继续生成下一个 token。以此类成更多文字

Token 是什么?
1.可能是一个英文单词,也可能是半个,三分之一个。可能是一个中文词,或者一个汉字,也可能是半个汉字(是把 unicode 做拆分,并不是直接把汉字拆分),甚至三分之一个汉字
2.大模型在开训前,需要先训练一个 tokenizer 模型。它能把所有的文本,切成 token

3、再深一点点
这套生成机制的内核叫Transformer 架构。但其实,transformer 已经不是最先进的了。


【AI大模型】应用开发基础,第7张

ChatGPT的温度

  • 在API调用中,有一个 temperature(温度)参数,范围是 0~2,它用于控制随机性。
  • 温度越低,确定性越强,随机性越低,越像机器,机器是没有温度的。如果参数为0,则每次调用时,只要prompt(问题)一样,生成结果都是一样的。
  • 温度越高,随机性越强,就有了智能的味道。当然也不能太高,如果设置为2时,它就会胡说八道。

用好 Al 的核心心法

OpenAl 首席科学家 llya Sutskever 说过:

数字神经网络和人脑的生物神经网络,在数学原理上是一样的。

所以,我们要:把AI当人看(认知层面)。
我们和凯文-凯利交流时,他说了类似的观点:「和人怎么相处,就和Al怎么相处。」
1.用「当人看」来理解 Al
2.用「当人看」来控制 Al
3.用「当人看」来说服用户正确看待 Al 的不足

如果把AI当作以前逻辑严密的机器去看待它,你会非常地不适,不知道怎么去用它,会各种瞧他不顺眼。你必须把他当人看,像对人一样去和他相处、去交流,去包容他,你就能更好地用好AI。

大模型应用架构

大模型技术分两个部分:
1.训练基础大模型:全世界只需要 1000 人做这个
2.建造大模型应用:所有技术人,甚至所有人,都需要掌握

大模型应用技术特点:门槛低,天花板高。

1. 典型的业务架构
【AI大模型】应用开发基础,第8张
  • Embedded 模式:AI嵌入,初步应用AI
  • Copilot 模式:AI辅助,多个环节用AI来实现
  • Agent 模式:AI智能体,全面用AI来实现

Agent 还太超前,Copilot 值得追求。

2. 技术架构

架构1:纯 Prompt。就像和一个人对话,你说一句,ta 回一句,你再说一句,ta再回一句……

【AI大模型】应用开发基础,第9张

架构2:使用了 Agent + Function Calling

即当你问AI问题时,AI会反问你问题,明确问题后,再回答结果

  • Agent:Al 主动提要求(即 Al 主动反向向你提问题)
  • Function Calling : Al 要求执行某个函数(相当于一个回调)
  • 场景举例:你问过年去哪玩,ta 先反问你有几天假
【AI大模型】应用开发基础,第10张

流程说明:
1、应用程序发一个 prompt,prompt 触发了大模型的 Agent
2、Agent 会给我们一个 Function Calling,告诉我们要去调用某一个函数(内部/外部APIs),等待函数返回结果,把拿到的结果再传给大模型。
3、大模型 response 最终结果。

架构3:使用了RAG (RAG = Embeddings + 向量数据库)

  • Embeddings(嵌入向量/词向量):是指将高维度的数据(文字、图片、音频等)映射到低维度空间(N维的实数向量)的过程。

即将文本/图片等数据转换为实数向量数据,方便向量数据库进行存储和相似度检索。

  • 向量数据库:把向量存起来,方便查找
  • 向量搜索:根据输入向量,找到最相似的向量
【AI大模型】应用开发基础,第11张

场景举例:考试时,看到一道题,到书上找相关内容,再结合题目组成答案。然后,就都忘了

通俗的解释:
如,考试的时候,带上书本(书本就相当于是向量数据库,里面存的是考试内容知识点)。当应用程序发一个 prompt (问题)时,先到向量数据库中查找与问题相关的知识,然后把查找到的相关知识和问题一起丢给大模型,尽管大模型不懂这个知识,但是你把知识喂给了它,它会基于问题和知识给你生成一个合适的答案。

特点:大模型不懂知识,知识是存在向量数据库中(即知识存在书本上),大模型在答题时,要结合问题和向量数据库中相关知识点临时总结生成一个合适的答案(有点像开卷考试一样,人脑没有学习和记住相关知识,要去书本上查找相关知识点才能总结和提炼出答案)。

架构4:Fine-tuning 微调

就是考试不带书本,考试前努力学习考试内容,长期记住(知识存在脑子里,大模型懂知识),活学活用

【AI大模型】应用开发基础,第12张

大模型微调,是对历史数据进行训练,让大模型学会了某些知识。但是大模型是不知道一些实时数据,实时数据是需要通过大模型外部的一些方式获取(如:获取当前时间,通过内部/外部API方式获取;获取今日热点新闻,从RAG方式向量数据库中获取)

编程调用 OpenAl API

官方文档:https://platform.openai.com/docs/api-reference
本课程主要讲 OpenAl 的 GPT 系列大模型的使用,因为:

  • 在天花板上,才能看得够远
  • 其它大模型都在模仿 ta,更容易触类旁通

本课程的主打语言是 Python,因为:

  • Python 和Al 是天生的一对
  • Python 是最容易学习的编程语言
1. 安装 OpenAl Python 库

在命令行执行:pip install --upgrade openai

2. 发一条消息
# 这是一个Python调用ChatGPT的代码
# 引入必须的包
import openai
import os

# 加载 .env 文件到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# 初始化 OPENAI 服务。会自动从环境变量加载 OPENAI_API_KEY 和 OPENAI_BASE_URL
client = OpenAI()

# 消息格式
messages = [
    {
        "role": "system",
        "content": "你是AI助手小瓜,是AGI课堂的助教。这门课每周二、四上课。"
    },
    {
        "role": "user",
        "content": "哪天有课?"
    }
]

# 调用 GPT-3.5
chat_completion = client.chat.completions.create(
    # chatgpt背后的模型
    model = "gpt-3.5-turbo",
    messages = messages
)

# 输出回复
print(chat_completion.choices[0].message.content)

# 打印结果:这门课每周二、四有课。

问题与答疑

一、AI大模型在数据治理有什么应用?
1、用大模型对数据中非结构化数据做整理;
2、用自然语言直接查询数据 NL2SQL。

NL2SQL( Natural Language To SQL)是自然语言到结构化查询语言(SQL)的转换技术。它可以将自然语言的问题转化为数据库查询语言,以便直接与数据库交互进行数据查询和操作。顾名思义,是将用户输入的自然语言转为可执行的SQL语句。

二、文字、图像、视频大模型token区别
大语言模型是以文字为token;图像大模型是以图像为token;视频大模型是以视频帧/视频流为token;

三、为什么量化交易阶段不能用大模型?
1、大模型的运算速度是非常慢的,不具备实时性;
2、大模型有很强的幻觉。
在量化交易里面大模型一般可以做前期的情报分析,和做后期的数据分析总结。

四、大模型参数是什么?
参数就是一堆数据,数据里存的是权重,权重就是词与词之间的概率

五、通用大模型这么强大,还有做专业大模型的空间和价值吗?
通用大模型并不是什么都会,保持大面积的通用性就行,因为训练成本会很高。另外通用大模型不够专精,专业大模型参数少,训练成本低,比较专精更具性价比。

六、向量数据库
把数据放到向量数据库中,在对话的时候可以理解语义去向量检索,检索到相关内容并丢给大模型再回答最终结果。

七、大模型中 Turbo 表示是什么意思?

  • “Turbo” 在英文中通常指的是“涡轮增压”。
  • 在汽车领域中,它指的是通过增加发动机的进气压力来提高其功率和扭矩。
  • 在技术领域,“Turbo” 有时被用作一个营销术语,表示某种 增强版 或 加速版。

如:qwen-turbo、GPT-4 Turbo 表示是一个增强版模型,即该模型在性能、速度、准确性或其他方面有所优化或增强

八、大模型中 B 表示是什么意思?
在人工智能领域中,当我们提到“XXB”(例如:6B、34B)这样的术语时,它通常指的是模型的参数量,其中“B”代表“Billion”,即“十亿”。因此,6B表示模型有6十亿(即60亿)个参数,而34B表示模型有34十亿(即340亿)个参数。

说明:英文和中文的量词不一样,中文的量词更加细化
中文:个、十、百、千、万、十万、百万、千万、亿
英文:千(Thousand,简写:K)、百万(Million,简写:M)、十亿(Billion,简写:B)
一般来说参数量超过1B,也就是10亿的模型才叫大模型(Large Lanauage Model)


https://www.xamrdz.com/lan/5e51997043.html

相关文章: