成年欧美1314www色,亚洲+激情+专区,最爽无遮挡行房视频,中文字幕av无码一区二区三区电影,亚洲国产成人久久精品大牛影视

DeepSeek模型開發(fā)

文章分類:軟件定制開發(fā)問答 發(fā)布時間:2025-04-25 原文作者:Shi Yongfeng 閱讀( )

大模型作為新興領域,不斷地冒出來新的專有術語和新的概念,讓大家覺得很神秘,捉摸不透。但是大部分復雜性的背后都會有一個極其簡單便于理解的模型,本次分享最主要就是大模型的基本范式,通過范式將這些神秘感去除。

大模型雖然很厲害,很神秘,但作為使用人員,門檻是非常非常非常低的。

模型基礎

雖然市面上的大型語言模型(LLMs)種類繁多,但在使用層面大家平等的都是API調(diào)包俠,因此從接口層面來剖析大模型有哪些能力。LLM的接口通常都遵循或類似于 OpenAI 的規(guī)范。這里我們以 OpenAI 的接口為例進行說明。

在與大型模型交互時,除了控制模型輸出隨機性的參數(shù)外,最核心的參數(shù)只有兩個:messages 和 tools。可以說,市面上各種各樣的大模型應用,都是基于這兩個參數(shù)的基礎上設計而來

messages-大模型是怎么實現(xiàn)記憶的?

  • messages是一個對話數(shù)組,其中角色主要有:

  • system:代表當前對話的系統(tǒng)指令,一般放提示詞

  • user:用戶指令

  • assistant:LLM的回復

  • ...:不同廠商會有不同的擴展定義?

大模型所謂的對話記憶實際上就是依賴該數(shù)組做信息傳遞,如下圖所示,第一輪我告訴我的名字叫屈定,第二輪的時候在問他是誰,他已經(jīng)知道了我的名字,之所以知道因為我在messages的上下文中傳遞給了他這個信息。

  • ?使用user傳遞用戶的對話

??

  • ?使用system設置系統(tǒng)指令

??

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

??

三張圖看完,先總結(jié)下:

  • 大模型為什么能記住之前的對話?

只是因為后臺系統(tǒng)給了他之前的對話,并不是他自己記住。大模型的請求調(diào)用就是一個無狀態(tài)的,取決于每次給的對話內(nèi)容。

  • 大模型的提示詞有什么用?

大模型的提示詞可以進一步控制(覆蓋)模型的行為,具備高優(yōu)先級,但存在不穩(wěn)定性。

接下來我們就可以來理解第一個重要的大模型范式:檢索增強生成,也就是RAG(Retrieval Augmented Generation)。

直白的理解為用檢索到的知識,來增量生成答案的質(zhì)量。比如我有一個關于數(shù)倉各種問題處理的Q&A,想要做一個問答機器人,這個問答機器人要基于我的Q&A回復用戶。這個 檢索Q&A -> 基于檢索到的Q&A回復用戶,這個流程就是一個典型的RAG鏈路。也顯而易見,RAG的最終目標是生成靠譜的答案給到用戶。?

??

RAG鏈路的搭建是很簡單,但是效果卻很難,從流程里面我們能發(fā)現(xiàn)兩個關鍵點:

1.知識庫檢索召回:這里要解決如何召回最靠譜的答案。

2.LLM基于知識回答:這里要解決的是如何讓模型在一堆知識中給出自信準確的回答。

這些都是業(yè)界在不斷探索的東西,沒有所謂的標準答案,只有適合當前業(yè)務的最佳方案。

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

經(jīng)常有同學會問一些大模型是否能查詢odps,或者大模型能夠把數(shù)倉數(shù)據(jù)導入到ob之類的問題。這些問題的背后是對LLM存在錯誤的理解,也就是tools參數(shù)的理解。

tools也是一個數(shù)組,包含了一堆工具集合,核心為工具的作用描述,和工具需要的參數(shù),如下圖天氣工具的定義。

??

接下來就是使用工具,基于工具的回答至少要兩次大模型請求調(diào)用:

1.將用戶的對話和工具一起給到大模型,大模型需要執(zhí)行的工具以及工具參數(shù);

2.后端系統(tǒng)依據(jù)大模型選擇結(jié)果,去執(zhí)行對應的工具,拿到結(jié)果;

3.再次請求大模型,此時上下文中給到了工具執(zhí)行結(jié)果,大模型基于信息回復?;

??

先總結(jié)下:

1.大模型并不能夠執(zhí)行任何工具,但是大模型能夠選擇接下來要執(zhí)行的工具。選擇后工具由配合的系統(tǒng)來執(zhí)行獲取結(jié)果。

接下來我們就可以來理解第二個重要的大模型范式ReAct(Reason+Act)。

這里需要強調(diào)下,大模型的很多范式都是對生活中人類行為的模擬,因此我們也是從生活中的案例來理解大模型。?

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

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

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
思考 (Reasoning): 需要調(diào)研外部大模型框架,明確調(diào)研目標是了解行業(yè)內(nèi)的主要框架、特點和應用場景。需要先明確有哪些主流框架,然后針對性地收集資料。
行動 (Acting):
行動: 使用互聯(lián)網(wǎng)搜索“主流大模型框架 2024/2025”、“開源大模型框架”。
觀察 (Observation):
觀察: 搜索結(jié)果顯示:PyTorch、TensorFlow、JAX等是主流框架,還有一些新興框架如MindSpore、Paddle等。
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
思考 (Reasoning): 我已經(jīng)拿到了想要的資料,接下來使用思維導圖搭建匯報思路
行動 (Acting):
行動: 使用思維導圖工具,搭建報告的初步框架,包括:框架名稱、開發(fā)語言、主要特點、優(yōu)勢、劣勢、應用場景。
觀察 (Observation):
觀察: 初步框架包括:框架名稱、開發(fā)語言、主要特點(動態(tài)圖/靜態(tài)圖、分布式訓練支持等)、優(yōu)勢、劣勢、應用場景(NLP、CV等)。
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
思考 (Reasoning): 信息基本收集完畢,需要將所有信息整理成結(jié)構(gòu)化的報告,并使用PPT進行總結(jié)和分析。
行動 (Acting):
行動: 使用PPT工具,將思維導圖中的內(nèi)容整理成PPT,并撰寫文字說明。
觀察 (Observation):
觀察: 完成了PPT初稿,內(nèi)容比較全面,但需要進行排版美化。

這個思考的流程就是ReAct,后面有實際案例,這里先理解這個概念。

??

模型使用

大模型的應用五花八門,但都離不開上述兩個核心參數(shù),接下來圍繞上述的參數(shù),我們能利用的現(xiàn)有的模型交互手段主要有以下三種,包括:

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

  • 增加調(diào)用次數(shù):將一個任務拆分為多個子任務執(zhí)行,最后判斷結(jié)果。這是一種常用的對提示詞能力的補充手段,降低單一提示詞的復雜性。

  • 模型微調(diào):通過引入特定業(yè)務場景案例,讓模型能更好地理解用戶的意圖和需求。

 

用大模型+提示詞做翻譯 [提示詞調(diào)優(yōu)]

為了更好的評價,我們選擇哪吒中的英文臺詞,然后將英文翻譯成中文,看還原度如何?

  •  
  •  
  •  
  •  
  •  
The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.Looking back on it, three years isn't that long.Be quick to obey my commandI'm the captain of my destiny, not heaven.If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.

方案一直接使用提示詞進行翻譯

  •  
  •  
  •  
  •  
  •  
## Role and Goal:你是一個翻譯專家,尤其擅長英文到中文的翻譯,接下來我給你多段英文臺詞,幫我翻譯成中文.
## Constraints- 翻譯時保持譯文格式不變
## Background:原文來自《哪吒》系列電影的第二部中的臺詞,講述了天劫之后,哪吒、敖丙的靈魂保住了,但很快會魂飛魄散。太乙真人打算用七色寶蓮給二人重塑肉身,但是在重塑肉身的過程中卻遇到重重困難,哪吒、敖丙的命運將迎來更多的挑戰(zhàn)。
## Guidelines:1. 結(jié)合背景將文本直接翻譯成中文,保持原始格式,不省略任何信息。
## Source:- The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.- Looking back on it, three years isn't that long.- Be quick to obey my command- I'm the captain of my destiny, not heaven.- If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.
## Output:{譯文}

絕大多數(shù)情況下,直接使用提示詞能做到的效果就已經(jīng)能達到60%了(現(xiàn)在的模型確實強大了),下方的問題在于一些短的語句翻譯不夠傳神。

方案二提示詞中引入COTChain-of-Thought

COT被稱為思維鏈,簡單點來說是要告訴模型針對問題的思考步驟是什么,引導模型去按照特定思維解決問題。概念很抽象,以翻譯為例,我們思考一般人是如何進行翻譯的?

1.先直接翻譯

2.結(jié)合上下文再審視這個翻譯是否合理,有哪些改進點

3.針對改進點再斟酌修改

那么我們也讓模型按照這個思路來執(zhí)行翻譯。

  •  
  •  
  •  
  •  
  •  
## Role and Goal:你是一個翻譯專家,尤其擅長英文到中文的翻譯,接下來我給你多段英文臺詞,幫我翻譯成中文.
## Constraints- 翻譯時保持譯文格式不變- 嚴格按照output中定義的范式輸出
## Background:原文來自《哪吒》系列電影的第二部中的臺詞,講述了天劫之后,哪吒、敖丙的靈魂保住了,但很快會魂飛魄散。太乙真人打算用七色寶蓮給二人重塑肉身,但是在重塑肉身的過程中卻遇到重重困難,哪吒、敖丙的命運將迎來更多的挑戰(zhàn)。
## Guidelines:翻譯的過程分為三部分:1. 直譯:結(jié)合背景將文本直接翻譯成中文,保持原始格式,不省略任何信息。2. 評估和反思:結(jié)合背景道教封神,主人公對命運反抗,識別直接翻譯中的具體問題,例如:- 非母語常用的中文表達,- 笨拙的措辭- 過于口語化的表達- 等等提供解釋,但不要添加或省略內(nèi)容或格式。3. 意譯:根據(jù)字面翻譯和已識別的問題,重新解釋翻譯,確保它保持與原始輸入格式一致,不要刪除任何內(nèi)容。
## Source:- The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.- Looking back on it, three years isn't that long.- Be quick to obey my command- I'm the captain of my destiny, not heaven.- If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.
## Output:### 直譯{直譯}
***
### 評估和反思{評估和反思}
***
### 意譯{意譯}

該方案取得了意想不到的效果,針對長句翻譯成短句組合形式, 相比官方的來看,更像是修道者的口吻,但針對一些特殊短句用法,仍然不夠理想。

方案三引入動態(tài)few shot

few shot指的是提示詞中的少樣本技巧,動態(tài)就是將這部分樣本抽離到一個知識庫,每一次走翻譯前先去知識庫里面召回TOP最相關的,然后放入到提示詞的Example中。

假設我的知識庫中召回了如下兩句:

  •  
  •  
  •  
  •  
  •  
Item1: 原文:Be quick to obey my command意譯:急急如律令
Item2: 原文:Life is not long, but it's not short either.意譯:人生,說長不長,說短不短。

結(jié)合后提示詞如下:

  •  
  •  
  •  
  •  
  •  
## Role and Goal:你是一個翻譯專家,尤其擅長英文到中文的翻譯,接下來我給你多段英文臺詞,幫我翻譯成中文.
## Constraints- 翻譯時保持譯文格式不變- 嚴格按照output中定義的范式輸出
## Background:原文來自《哪吒》系列電影的第二部中的臺詞,講述了天劫之后,哪吒、敖丙的靈魂保住了,但很快會魂飛魄散。太乙真人打算用七色寶蓮給二人重塑肉身,但是在重塑肉身的過程中卻遇到重重困難,哪吒、敖丙的命運將迎來更多的挑戰(zhàn)。
## Guidelines:翻譯的過程分為三部分:1. 直譯:結(jié)合背景將文本直接翻譯成中文,保持原始格式,不省略任何信息。2. 評估和反思:結(jié)合背景道教封神,主人公對命運反抗,識別直接翻譯中的具體問題,例如:- 非母語常用的中文表達,- 笨拙的措辭- 過于口語化的表達- 等等提供解釋,但不要添加或省略內(nèi)容或格式。3. 意譯:根據(jù)字面翻譯和已識別的問題,重新解釋翻譯,確保它保持與原始輸入格式一致,不要刪除任何內(nèi)容。
## Example:1. 原文:Be quick to obey my command意譯:急急如律令---2. 原文:Life is not long, but it's not short either.意譯:人生,說長不長,說短不短。
## Source:- The prejudice in people's hearts is like a mountain. No matter how hard you try, you can't move it.- Looking back on it, three years isn't that long.- Be quick to obey my command- I'm the captain of my destiny, not heaven.- If you ask me whether people can change their own destiny, I don't know. But defying fate is Nezha's destiny.
## Output:### 直譯{直譯}
***
### 評估和反思{評估和反思}
***
### 意譯{意譯}

few shot這種開卷考試方法是大模型鏈路中一種重要的優(yōu)化手段,few shot是提示詞中為數(shù)不多能夠動態(tài)變化的部分,且對模型整體效果影響較小,更為可控。此外業(yè)務流量一般都是符合2:8分布的,且是可收斂的,可能只需要20%的few shot案例,就能滿足80%的場景訴求。?

用大模型+Agent做計算器 [增加調(diào)用次數(shù)]

大家應該都看過下面的案例,大模型是很不擅長數(shù)學計算的,那么用大模型直接做計算器就非常容易出問題。

???

這里使用llama_index的agent框架做演示:

1.定義了三個工具函數(shù),乘法,加法,減法

2.構(gòu)建一個Agent執(zhí)行模式

  •  
  •  
  •  
  •  
  •  
import os
from dotenv import load_dotenvfrom llama_index.core.agent import ReActAgentfrom llama_index.core.tools import FunctionToolfrom 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_version="2023-07-01-preview")
# 初始化Agentagent = 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: multiplyAction Input: {'a': 2, 'b': 4}Observation: 8
> Running step 5455108e-ac53-4115-8712-68f2457a9b82. Step input: NoneThought: Now that I have the result of the multiplication, I can proceed to the next step, which is to add 20 and 8.Action: addAction Input: {'a': 20, 'b': 8}Observation: 28
> Running step 4d8fae00-83bd-4205-9993-f0e0119f408d. Step input: NoneThought: Now that I have the result of the addition, I can proceed to the final step, which is to subtract 28 from 60.Action: subtractAction Input: {'a': 60, 'b': 28}Observation: 32
> Running step ce5d1075-ff11-47a2-b286-d7a715dc40ba. Step input: NoneThought: 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.

???

上次有同學問,那么大模型在這種鏈路里面到底發(fā)揮了什么作用?大模型最大的能力就是自然語言理解,我們可以嘗試把規(guī)則再復雜化,輸入改成張三代表減法,李四代表加法,王二代表乘法,What is 60張三(20李四(2王二4))? Calculate step by step ,表現(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: multiplyAction Input: {'a': 2, 'b': 4}Observation: 8
> Running step 48262cb8-5c3a-47b7-b13b-449787c27078. Step input: NoneThought: The result of 2王二4 is 8. Now, I need to calculate the addition part: 20李四8, which is 20 + 8.Action: addAction Input: {'a': 20, 'b': 8}Observation: 28
> Running step 1cccd5c6-3d96-4014-a579-1c997765a1da. Step input: NoneThought: The result of 20李四8 is 28. Now, I need to calculate the subtraction part: 60張三28, which is 60 - 28.Action: subtractAction Input: {'a': 60, 'b': 28}Observation: 32
> Running step 65d33d20-1009-4482-a6d2-7af20333640c. Step input: NoneThought: 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.

模型微調(diào)

這部分具體案例就不好說了,我舉個實際生產(chǎn)的案例,在給WorldFirst做客服的時候,存在很多特殊的業(yè)務知識,比如用戶在萬里匯下載銀行對賬單 != 下載交易流水單。這里有業(yè)務背景,銀行對賬單是亞馬遜要求的賬戶證明文件。這些業(yè)務背景是模型難以掌握的,此時就需要引入微調(diào),將這部分知識內(nèi)置到模型里面。?

現(xiàn)在主流的方式都在慢慢弱化微調(diào),因為費時費力,還不一定起到正向的效果,更多的工程實踐是將提示詞復雜化動態(tài)化,工程上做更多的兜底工作。

一些感想

大模型能帶來很大的工作和問題思考方式的革新,讓一些問題解決方式變成取決于你的想象力,但對客的業(yè)務的效果并非完全取決于大模型。很多同學認為有了LLM,業(yè)務效果,開發(fā)效率,交付質(zhì)量都能很方便解決,什么都往LLM上靠攏,這是很大的誤區(qū)。


原文來自:Shi Yongfeng