一、認識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. 結構化計算
2. 確定性任務
3. 高性能低延遲場景
| 1. 自然語言處理 例:ChatGPT生成文章、翻譯語言,或客服機器人理解用戶意圖 2. 非結構化數據分析 例:醫學影像識別(X光片中的腫瘤檢測),或語音轉文本 3. 創造性內容生成 例:Stable Diffusion生成符合描述的圖像,或AI作曲工具創作音樂 4. 復雜模式預測 例:股票市場趨勢預測(基于歷史數據關聯性,但需要注意可靠性限制) |
不擅長領域 | 1. 非結構化數據處理
2. 模糊推理與模式識別
3. 動態適應性
| 1. 精確計算
2. 確定性邏輯驗證
3. 低資源消耗場景
4. 因果推理
|
傳統應用開發和大模型有著各自擅長的領域:
- 傳統編程:確定性、規則化、高性能,適合數學計算、流程控制等場景。
- AI大模型:概率性、非結構化、泛化性,適合語言、圖像、創造性任務。
兩者之間恰好是互補的關系,兩者結合則能解決以前難以實現的一些問題:
- 混合系統(Hybrid AI)
- 用傳統程序處理結構化邏輯(如支付校驗),AI處理非結構化任務(如用戶意圖識別)。
- 示例:智能客服中,AI理解用戶問題,傳統代碼調用數據庫返回結果
- 增強可解釋性
- 結合規則引擎約束AI輸出(如法律文檔生成時強制符合條款格式)。
- 低代碼/無代碼平臺
- 通過AI自動生成部分代碼(如Github Copilot),降低傳統開發門檻。
在傳統應用開發中介入AI大模型,充分利用兩者的優勢,既能利用AI實現更加便捷的人機交互,更好地理解用戶意圖,又能利用傳統編程保證安全性和準確性,強強聯合,這就是大模型應用開發的真諦!綜上所述,大模型應用就是整合傳統程序和大模型的能力和優勢來開發的一種應用。
大模型 | 對話產品 | 公司 | 地址 |
GPT-3.5、GPT-4o | ChatGPT | OpenAI | https://chatgpt.com/ |
Claude 3.5 | Claude AI | Anthropic | https://claude.ai/chats |
DeepSeek-R1 | DeepSeek | DeepSeek | https://www.deepseek.com/ |
文心大模型3.5 | 文心一言 | 百度 | https://yiyan.baidu.com/ |
星火3.5 | 訊飛星火 | 科大訊飛 | https://xinghuo.xfyun.cn/desk |
Qwen-Max | 通義千問 | 阿里巴巴 | https://tongyi.aliyun.com/qianwen/ |
Moonshoot | Kimi | 月之暗面 | 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
所以我們在選擇技術時,通常也應該遵循“在達成目標效果的前提下,盡量降低開發成本”這一首要原則。然后可以參考以下流程來思考: