【AI大模型】應用開發基礎

前言

1、了解大模型能做什么
2、整體了解大模型應用開發技術棧
3、淺嘗OpenAI API的調用

AI全棧工程師:懂AI、懂編程、懂業務的超級個體,會是AGI(Artificial General Intelligence 通用人工智能)時代最重要的人。

知識體系

AI學習方法論

從三個方面學習:原理實踐認知 三類
1、不懂原理就不會舉一反三,走不了太遠。
2、不懂實戰就只能紙上談兵,做事不落地。
3、認知不高就無法做對決策,天花板太低。

如果能三者兼備,是最好的。但不同崗位角色可以有不同的取舍。比如:
1、老板更多關注認知,但如果懂原理,能形成更多的認知
2、程序員更多關注實戰,但原理和認知是地基和天花板
3、產品經理更多關注認知,但應該也懂原理,并了解一些實戰
4、市場、運營和銷售需要關注認知,并了解一些原理

說明:在劇烈變革的時代,千萬別只拿代碼當干貨!更深的東西,未必是有用的。

大模型

  • 什么是AI?基于機器學習、神經網絡的是AI;基于規則、搜索的不是AI
  • 大模型:全稱大語言模型(Large Language Model,縮寫:LLM)


    常用大模型

大模型常見用法

1、按格式輸出:例如,從一段話中,提取姓名、地址、電話等結構化信息。

2、分類:例如,根據新聞標題,對新聞進行分類

3、聚類:把一堆句子,按意思相近度進行分組

4、更多用法

  • 持續互動:多輪互動問答、角色扮演等
  • 輿情分析:從公司產品的評論中,分析哪些功能/元素是用戶討論最多的,評價
    是正向還是負向
  • 坐席質檢:檢查客服/銷售人員與用戶的對話記錄,判斷是否有爭吵、辱罵、不
    當言論,話術是否符合標準
  • 故障解釋:根據系統報錯信息,給出方便非技術人員閱讀的故障說明
  • 零代碼開發/運維:自動規劃任務,生成指令,自動執行
  • 生成業務邏輯:自定義一套業務描述語言(DSL),直接讓ChatGPT寫業務邏
    輯代碼

思考:你的業務中,有哪些問題可以用AI解決?

5、可能一切問題,都能解決,所以是AGI

劃重點:
1.把大模型看做是一個函數,給輸入,生成輸出
2.任何業務問題,都可以用語言描述,成為大模型的輸入,就能生成業務問題
的結果
3.實際工作中,通常需要將業務任務拆解為若干個子任務,分別解決。理解業
務本質,對拆解任務有很大幫助!

  • 一般在使用大模型時,不是直接把一個比較大的任務丟給大模型,而是把任務進行拆解,拆解成若干個子任務逐個解決,得到結果再組合,這樣效果會更好。
  • agent:就是用AI來完成任務的拆解

大模型的工作原理

1、通俗原理
大模型是怎么生成結果的?其實,它就是根據上文,猜下一個詞(的概率)…… 這個算法叫 transformer


如: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 已經不是最先進的了。


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. 典型的業務架構
  • Embedded 模式:AI嵌入,初步應用AI
  • Copilot 模式:AI輔助,多個環節用AI來實現
  • Agent 模式:AI智能體,全面用AI來實現

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

2. 技術架構

架構1:純 Prompt。就像和一個人對話,你說一句,ta 回一句,你再說一句,ta再回一句……

架構2:使用了 Agent + Function Calling

即當你問AI問題時,AI會反問你問題,明確問題后,再回答結果

  • Agent:Al 主動提要求(即 Al 主動反向向你提問題)
  • Function Calling : Al 要求執行某個函數(相當于一個回調)
  • 場景舉例:你問過年去哪玩,ta 先反問你有幾天假

流程說明:
1、應用程序發一個 prompt,prompt 觸發了大模型的 Agent
2、Agent 會給我們一個 Function Calling,告訴我們要去調用某一個函數(內部/外部APIs),等待函數返回結果,把拿到的結果再傳給大模型。
3、大模型 response 最終結果。

架構3:使用了RAG (RAG = Embeddings + 向量數據庫)

  • Embeddings(嵌入向量/詞向量):是指將高維度的數據(文字、圖片、音頻等)映射到低維度空間(N維的實數向量)的過程。

即將文本/圖片等數據轉換為實數向量數據,方便向量數據庫進行存儲和相似度檢索。

  • 向量數據庫:把向量存起來,方便查找
  • 向量搜索:根據輸入向量,找到最相似的向量

場景舉例:考試時,看到一道題,到書上找相關內容,再結合題目組成答案。然后,就都忘了

通俗的解釋:
如,考試的時候,帶上書本(書本就相當于是向量數據庫,里面存的是考試內容知識點)。當應用程序發一個 prompt (問題)時,先到向量數據庫中查找與問題相關的知識,然后把查找到的相關知識和問題一起丟給大模型,盡管大模型不懂這個知識,但是你把知識喂給了它,它會基于問題和知識給你生成一個合適的答案。

特點:大模型不懂知識,知識是存在向量數據庫中(即知識存在書本上),大模型在答題時,要結合問題和向量數據庫中相關知識點臨時總結生成一個合適的答案(有點像開卷考試一樣,人腦沒有學習和記住相關知識,要去書本上查找相關知識點才能總結和提煉出答案)。

架構4:Fine-tuning 微調

就是考試不帶書本,考試前努力學習考試內容,長期記住(知識存在腦子里,大模型懂知識),活學活用

大模型微調,是對歷史數據進行訓練,讓大模型學會了某些知識。但是大模型是不知道一些實時數據,實時數據是需要通過大模型外部的一些方式獲取(如:獲取當前時間,通過內部/外部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)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

推薦閱讀更多精彩內容