大模型應用開發實戰基礎
1. 背景
大模型如日中天,各行各業都受它影響,但是作為程序員,除了讓它翻譯代碼不知道用它干什么,就像是拿著錘子的木匠,找不到釘子在哪。一邊聽著別人說2024是AI元年,一邊又不知所措,很多時候對著ChatGPT的輸入框不知道干什么。作為程序員,應該是接觸AI的一線戰士,但是很無力的感覺要被AI淘汰了一樣。有人說懂 AI、懂編程、懂業務的超級個體,會是 AGI 時代最重要的人,本文我們從程序員視角去認識AI,去看看我們怎么去深入理解和應用AI,如何成為一個AI全棧工程師。
2. 大模型的知識體系
大模型可以分成下面幾個方向:
- 交付:向量數據庫,GPU等偏運維方向
- 產品:主要是負責用戶體驗和商業邏輯
- Fine-tuning:微調為主,但是要懂機器學習,Transformer,大模型訓練,微調原理等
- 開發框架和工具棧:主要是基于Langchain等進行Agent框架開發,比如開發一個類似百度千帆平臺,豆包AI平臺等
- RAG:Embedding,從關鍵詞搜索轉換為向量思索,為大模型基座提供外界知識庫
- API:用微調提升prompt的穩定性
- AI編程:幫助開發者使用AI提效,甚至開發AI程序員
- prompt:思維鏈,prompt調優,prompt攻防等
3.AI能干什么?
我們可以讓大模型幫我們做很多事情,而且很多事情在輸入框中用聊天的方式就可以解決:
- 按格式輸出
- 分類
- 聚類
- 持續互動
- 解決技術相關問題
- 輿情分析
- 坐席質檢
- 故障解釋 既然聊天框就可以解決問題,我們還需要什么?很多場景我們無法去聊天框輸入去問答案,比如說代碼補全工具,比如我們要做一個產品,語音轉文本場景,想讓轉化出的文本進行一些優化,也不能讓用戶復制粘貼去干,需要我們的程序能自動去問大模型。本文我們簡單介紹一些大模型API交互的方式。
4. 什么是大模型
下面用程序演示「生成下一個字」。可以自己修改 prompt 試試。還可以使用相同的 prompt 運行多次。
ini
復制代碼
`from openai import OpenAI`
`import os``from dotenv import load_dotenv, find_dotenv`
`_ = load_dotenv(find_dotenv())``client = OpenAI()``prompt = "今天天氣很" # 改明天試試`
`response = client.completions.create(``model="gpt-3.5-turbo-instruct",``prompt=prompt,``max_tokens=20,``stream=True`
`)``for chunk in response:``print(chunk.choices[0].text, end='')`
大模型通俗的講就是根據上文,猜下一個詞(的概率):
用通俗不嚴謹的語言再稍微深入描述大模型的工作原理:
- 大模型可是個愛學習的小家伙,它把人類說過的話都記在了心里。這就是我們說的「機器學習」,而它學習的過程,我們叫它「訓練」。
- 它還特別擅長記概率,把一串接一串的token可能跟著的token都記錄下來了。這些記錄,就是我們說的「參數」,也可以叫做「權重」。
- 給它幾個token,它就能猜出下一個最可能的token是啥。這個過程,我們叫做「生成」,也有人叫它「推理」
- 用它生成的token,再結合之前的上下文,它就能繼續猜下去,就像搭積木一樣,一塊接一塊,搭出更多的文字。
那Token又是什么呢?再用通俗的語言描述一下:
- 可能是一個英文單詞,也可能是半個,三分之一個。可能是一個中文詞,或者一個漢字,也可能是半個漢字,甚至三分之一個漢字
- 大模型在開訓前,需要先訓練一個 tokenizer 模型。它能把所有的文本,切成 token
5. 調用openai api
作為程序員,接下來我們用api和大模型交互。
先安裝OpenAI Python 庫:
css
復制代碼
pip install --upgrade openai
發送一條消息:
ini
復制代碼
from openai 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編程助手小瓜,將我輸入的Java代碼轉換為TS代碼,回答ts語法相關的問題"},{"role": "user","content": "ts有幾種基本類型數據"},]# `調用 GPT-3.5`chat_completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=messages`
)# 輸出回復print(chat_completion.choices[0].message.content)
6. 總結
本文為程序員提供了大模型應用開發的實戰指南,從理解AI的基礎知識體系到實際應用場景,涵蓋了從運維交付到產品開發、微調技術、開發框架、RAG技術、API使用和AI編程等多個方面。文章通過示例代碼展示了如何使用OpenAI API與大模型進行交互,解釋了大模型的工作原理和Token的概念,并強調了程序員在AI時代成為全棧工程師的重要性,以適應技術發展和行業變革的需求。