自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

AI 大模型應(yīng)用開發(fā)全攻略 原創(chuàng)

發(fā)布于 2025-4-10 06:42
瀏覽
0收藏

AI 大模型應(yīng)用開發(fā)作為新興領(lǐng)域,不斷出現(xiàn)新的技術(shù):LLM、Prompt、RAG、Agent、Fine-tuning、MCP 等,本文聚焦 AI 大模型應(yīng)用開發(fā),帶領(lǐng)大家入門,帶領(lǐng)大家了解 AI 大模型應(yīng)用開發(fā)的全攻略。

盡管市面上的大語言模型(LLMs)種類繁多,但大家在使用時其實都是通過 API 來與大模型交互的。這些大模型的接口通常遵循一些通用的規(guī)范,比如:  OpenAI 的標(biāo)準(zhǔn)。下面,我們就以 OpenAI 接口為例,來聊聊這些大模型都有哪些能力。

當(dāng)你和大模型交流時,除了可以控制大模型輸出的隨機性之外,最關(guān)鍵的參數(shù)就是 Messages 和 Tools??梢哉f,現(xiàn)在市面上的各種大模型應(yīng)用,都是基于這兩個參數(shù)設(shè)計的。

1、Messages - 大模型是如何“記住”對話的?

  • Messages 是一個對話記錄的列表,里面的角色包括:

    a.System:代表系統(tǒng)級別的指令,通常用來放置提示詞。

    b.User:用戶發(fā)出的指令。

    c.Assistant:LLM 給出的回復(fù)。

不同廠商可能會在這個基礎(chǔ)上增加一些額外的定義。

大模型所謂的“記憶”對話,其實是依賴于這個列表來傳遞信息的。

比如,第一輪對話中我告訴大模型我的名字。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

第二輪對話時,如果問大模型我是誰,它就能“記住”我的名字。這是因為我在 Messages 列表中提供了這個名字信息。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

提示詞的不穩(wěn)定性:容易被指令注入攻擊。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

看完這三張圖,我們來總結(jié)一下:

為什么大模型能“記住”之前的對話呢?其實,它并不是真的記住了,而是每次請求時,系統(tǒng)都會給它之前對話的內(nèi)容。大模型的每次請求調(diào)用都是無狀態(tài)的,它的行為完全取決于你每次提供的信息。

那么,大模型的提示詞(Prompt)有什么用呢?提示詞可以進一步控制(或者說覆蓋)大模型的行為,具有高優(yōu)先級,但同時也存在不穩(wěn)定的風(fēng)險。

希望這樣的解釋能幫助你更好地理解大語言模型的工作原理和它們的應(yīng)用方式。

2、RAG - 檢索增強生成

讓我們深入了解一種重要的大模型應(yīng)用范式:檢索增強生成,簡稱 RAG(Retrieval-Augmented Generation)。

簡單來說,RAG 就是利用檢索到的知識來提升生成答案的質(zhì)量。舉個例子,假設(shè)我手頭有一堆關(guān)于數(shù)據(jù)倉庫的問題和答案(Q&A),我想基于這些 Q&A 來創(chuàng)建一個問答機器人,讓它能夠根據(jù)這些 Q&A 來回答用戶的問題。這個問答機器人的工作流程就是:檢索到的 Q&A -> 利用檢索到的 Q&A 來回復(fù)用戶,這正是 RAG 的典型應(yīng)用場景。顯然,RAG 的最終目標(biāo)是為用戶提供可靠的答案。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

構(gòu)建 RAG 鏈路相對簡單,但要達(dá)到好的效果卻不容易。從流程中我們可以發(fā)現(xiàn)兩個關(guān)鍵點:

知識庫檢索召回:這里需要解決如何檢索到最相關(guān)、最準(zhǔn)確的答案。

基于知識庫的 LLM 回答:這里需要解決的是如何讓模型在眾多知識中給出自信且準(zhǔn)確的回答。

這些都是業(yè)界正在不斷探索的問題,沒有統(tǒng)一的標(biāo)準(zhǔn)答案,只有最適合當(dāng)前業(yè)務(wù)需求的方案。

3、Tools - 大模型能執(zhí)行任何工具?

很多同學(xué)經(jīng)常對大語言模型(LLM)的能力有所誤解,比如詢問大模型是否能執(zhí)行數(shù)據(jù)庫操作,或者是否能將數(shù)據(jù)倉庫中的數(shù)據(jù)導(dǎo)入到對象存儲等。這些問題通常源于對大模型的“Tools”參數(shù)理解不足。

“Tools”是一個工具集合的數(shù)組,其中包含了工具的作用描述和所需參數(shù),例如天氣查詢工具的定義如圖示。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

使用這些工具時,通常需要兩次調(diào)用大模型:

第一次、將用戶的查詢和工具信息一起提供給模型,模型會根據(jù)這些信息推理出需要執(zhí)行相應(yīng)的工具及其參數(shù)。

后端系統(tǒng)根據(jù)大模型的選擇結(jié)果執(zhí)行相應(yīng)的工具,獲取結(jié)果。

第二次,再次請求大模型,此時上下文中包含了工具執(zhí)行的結(jié)果,大模型基于這些信息生成回復(fù)。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

總結(jié)一下

大模型本身并不能直接執(zhí)行任何工具,但能決定接下來要執(zhí)行哪些工具。一旦做出選擇,實際的工具執(zhí)行將由配合的系統(tǒng)(通常是 Agent)完成并獲取結(jié)果。

4、ReAct - 推理 + 行動

接下來,我們可以探討第二個重要的大模型范式:ReAct(推理+行動)。

需要強調(diào)的是,大模型的許多范式都是對人類行為的模擬,因此我們可以通過生活中的案例來理解大模型。

案例:老板讓寫一份調(diào)研外部大模型框架的報告

工具:互聯(lián)網(wǎng)搜索、PPT、思維導(dǎo)圖

思考 (Reasoning): 需要調(diào)研外部大模型框架,明確調(diào)研目標(biāo)是了解行業(yè)內(nèi)的主要框架、特點和應(yīng)用場景。需要先明確有哪些主流框架,然后針對性地收集資料。
行動 (Acting):
行動: 使用互聯(lián)網(wǎng)搜索“主流大模型框架 2024/2025”、“開源大模型框架”。
觀察 (Observation):
觀察: 搜索結(jié)果顯示:PyTorch、TensorFlow、JAX等是主流框架,還有一些新興框架如 MindSpore、Paddle 等。

思考 (Reasoning): 我已經(jīng)拿到了想要的資料,接下來使用思維導(dǎo)圖搭建匯報思路
行動 (Acting):
行動: 使用思維導(dǎo)圖工具,搭建報告的初步框架,包括:框架名稱、開發(fā)語言、主要特點、優(yōu)勢、劣勢、應(yīng)用場景。
觀察 (Observation):
觀察: 初步框架包括:框架名稱、開發(fā)語言、主要特點(動態(tài)圖/靜態(tài)圖、分布式訓(xùn)練支持等)、優(yōu)勢、劣勢、應(yīng)用場景(NLP、CV等)。

思考 (Reasoning): 信息基本收集完畢,需要將所有信息整理成結(jié)構(gòu)化的報告,并使用PPT進行總結(jié)和分析。
行動 (Acting):
行動: 使用PPT工具,將思維導(dǎo)圖中的內(nèi)容整理成PPT,并撰寫文字說明。
觀察 (Observation):
觀察: 完成了PPT初稿,內(nèi)容比較全面,但需要進行排版美化。

這個思考的流程就是 ReAct 模式。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

5、Agent - 自主完成復(fù)雜任務(wù)

許多人可能已經(jīng)注意到,大模型在數(shù)學(xué)計算方面并不擅長,如果直接用它們來做計算器,很容易出現(xiàn)錯誤。


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

這里,我們用 llama_index 的 Agent 框架來舉個例子:

1. 我們定義了三個工具函數(shù):乘法、加法和減法。

2. 然后,我們構(gòu)建了一個 Agent 來執(zhí)行這些操作模式。

import os
from dotenv import load_dotenv
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTool
from llama_index.llms.azure_openai import AzureOpenAI
def multiply(a: int, b: int) -> int:
    """Multiply two integers and returns the result integer"""
    return a * b
def add(a: int, b: int) -> int:
    """Add two integers and returns the result integer"""
    return a + b
def subtract(a: int, b: int) -> int:
    """subtract two integers and returns the result integer"""
    return a - b
# 加載 .env 文件
load_dotenv()
# 初始化工具
multiply_tool = FunctionTool.from_defaults(fn=multiply)
add_tool = FunctionTool.from_defaults(fn=add)
subtract_tool = FunctionTool.from_defaults(fn=subtract)
llm = AzureOpenAI(model="gpt-4o",  # 或者 gpt-4
                  engine='gpt-4o',
                  deployment_name="gpt-4o",
                  api_key=os.getenv('AZURE_KEY'),
                  azure_endpoint="https://ilm-dev.openai.azure.com",
                  api_versinotallow="2023-07-01-preview")
# 初始化Agent
agent = ReActAgent.from_tools([multiply_tool, add_tool, subtract_tool], llm=llm, verbose=True)
response = agent.chat("What is 60-(20+(2*4))? Calculate step by step ")

> Running step cba1a160-74c3-4e34-bcc4-88e6a678eaf9. Step input: What is 60-(20+(2*4))? Calculate step by step 
Thought: The current language of the user is: English. I need to use a tool to help me answer the question.
To solve the expression \(60 - (20 + (2 * 4))\) step by step, I will first calculate the multiplication inside the parentheses.
Action: multiply
Action Input: {'a': 2, 'b': 4}
Observation: 8
> Running step 5455108e-ac53-4115-8712-68f2457a9b82. Step input: None
Thought: Now that I have the result of the multiplication, I can proceed to the next step, which is to add 20 and 8.
Action: add
Action Input: {'a': 20, 'b': 8}
Observation: 28
> Running step 4d8fae00-83bd-4205-9993-f0e0119f408d. Step input: None
Thought: Now that I have the result of the addition, I can proceed to the final step, which is to subtract 28 from 60.
Action: subtract
Action Input: {'a': 60, 'b': 28}
Observation: 32
> Running step ce5d1075-ff11-47a2-b286-d7a715dc40ba. Step input: None
Thought: I can answer without using any more tools. I'll use the user's language to answer.
Answer: The result of the expression \(60 - (20 + (2 * 4))\) is 32.


AI 大模型應(yīng)用開發(fā)全攻略-AI.x社區(qū)

之前有朋友問到,在這種流程中,大語言模型(LLM)究竟扮演了什么角色?大模型最突出的能力是理解自然語言并進行推理,我們可以嘗試將規(guī)則進一步復(fù)雜化,比如用“張三”來代表減法,“李四”代表加法,“王二”代表乘法。那么,問題“張三(李四(王二王24))”等于多少呢?如果要求一步步計算,盡管表現(xiàn)可能仍有不足,但大模型展現(xiàn)出了對自然語言的容錯能力,能夠像人類一樣去思考,而不是遵循一成不變的邏輯。

Thought: The current language of the user is English. I need to use a tool to help me answer the question. The expression given is 60張三(20李四(2王二4)), which translates to 60 - (20 + (2 * 4)). I will calculate step by step.
First, I need to calculate the multiplication part: 2王二4, which is 2 * 4.
Action: multiply
Action Input: {'a': 2, 'b': 4}
Observation: 8
> Running step 48262cb8-5c3a-47b7-b13b-449787c27078. Step input: None
Thought: The result of 2王二4 is 8. Now, I need to calculate the addition part: 20李四8, which is 20 + 8.
Action: add
Action Input: {'a': 20, 'b': 8}
Observation: 28
> Running step 1cccd5c6-3d96-4014-a579-1c997765a1da. Step input: None
Thought: The result of 20李四8 is 28. Now, I need to calculate the subtraction part: 60張三28, which is 60 - 28.
Action: subtract
Action Input: {'a': 60, 'b': 28}
Observation: 32
> Running step 65d33d20-1009-4482-a6d2-7af20333640c. Step input: None
Thought: I can answer without using any more tools. I'll use the user's language to answer.
Answer: The result of 60張三(20李四(2王二4)) is 32.

6、Fine-tuning 微調(diào)- 讓大模型具備精確處理公司任務(wù)的能力

讓我們通過一個具體的生產(chǎn)案例來說明這一點。當(dāng)我們?yōu)?World First 提供客服服務(wù)時,遇到了很多特殊的業(yè)務(wù)知識,例如,用戶在萬里匯下載的銀行對賬單并不等于下載交易流水單。這里涉及到具體的業(yè)務(wù)背景:銀行對賬單是亞馬遜要求的賬戶證明文件。這類業(yè)務(wù)背景知識對于大模型來說很難掌握,這時就需要引入微調(diào)(Fine-tuning),將這部分知識整合到大模型中。

目前,業(yè)界的主流做法正在逐漸減少對微調(diào)的依賴,因為這個過程既耗時又費力,而且不總是能帶來預(yù)期的正面效果。更多的工程實踐傾向于將提示詞(Prompt)復(fù)雜化和動態(tài)化,在工程上做更多的容錯處理工作。

7、Prompt 提示詞工程- 說人話

調(diào)優(yōu)提示詞:大模型工程中的核心,提示詞的優(yōu)秀與否決定了你是否需要鏈路上做額外的兜底。

調(diào)優(yōu)提示詞有三種實踐方式:直接使用提示詞、提示詞中引入 CoT(Chain-of-Thought)、提示詞中引入動態(tài) Few-Shot。

大語言模型(LLM)確實能夠引發(fā)工作方式和思考模式的重大變革,它們讓問題的解決方式變得依賴于你的創(chuàng)造力。然而,業(yè)務(wù)成效并不完全依賴于大模型。許多人誤以為擁有了 LLM,就能輕松解決業(yè)務(wù)效果、開發(fā)效率和交付質(zhì)量等問題,這種將所有問題都推給 LLM 的想法是一個很大的誤區(qū)。

以客服場景為例,最初大家都認(rèn)為客服是非常適合應(yīng)用大型模型的場景,我最初也是這么認(rèn)為的。但深入實踐后發(fā)現(xiàn)事實并非如此,特別是在對專業(yè)度和準(zhǔn)確率有明確要求的場景中。客服作為售后服務(wù),用戶帶著問題和情緒而來,他們需要的是明確的解決方案,而不是機械式的安慰和模糊的答案。因此,業(yè)務(wù)能力和人性化是客服成功的關(guān)鍵因素。確定這些關(guān)鍵因素后,再去思考 LLM 能在這些方面帶來哪些幫助,然后構(gòu)建你的解決方案,這樣的應(yīng)用方式才是可靠的。

簡而言之,大模型可以是一個強大的工具,但它們并不是萬能的。在構(gòu)建解決方案時,我們需要綜合考慮業(yè)務(wù)需求、用戶期望和模型的能力,以確保我們提供的服務(wù)既有效又人性化。


本文轉(zhuǎn)載自公眾號玄姐聊AGI  作者:玄姐

原文鏈接:??https://mp.weixin.qq.com/s/ER_LnXDoskWBkR0ssVePQA??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-4-10 06:42:03修改
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦