大模型應用開發實戰基礎

大模型應用開發實戰基礎

1. 背景

大模型如日中天,各行各業都受它影響,但是作為程序員,除了讓它翻譯代碼不知道用它干什么,就像是拿著錘子的木匠,找不到釘子在哪。一邊聽著別人說2024是AI元年,一邊又不知所措,很多時候對著ChatGPT的輸入框不知道干什么。作為程序員,應該是接觸AI的一線戰士,但是很無力的感覺要被AI淘汰了一樣。有人說懂 AI、懂編程、懂業務的超級個體,會是 AGI 時代最重要的人,本文我們從程序員視角去認識AI,去看看我們怎么去深入理解和應用AI,如何成為一個AI全棧工程師。

2. 大模型的知識體系

大模型可以分成下面幾個方向:

  1. 交付:向量數據庫,GPU等偏運維方向
  2. 產品:主要是負責用戶體驗和商業邏輯
  3. Fine-tuning:微調為主,但是要懂機器學習,Transformer,大模型訓練,微調原理等
  4. 開發框架和工具棧:主要是基于Langchain等進行Agent框架開發,比如開發一個類似百度千帆平臺,豆包AI平臺等
  5. RAG:Embedding,從關鍵詞搜索轉換為向量思索,為大模型基座提供外界知識庫
  6. API:用微調提升prompt的穩定性
  7. AI編程:幫助開發者使用AI提效,甚至開發AI程序員
  8. prompt:思維鏈,prompt調優,prompt攻防等

3.AI能干什么?

我們可以讓大模型幫我們做很多事情,而且很多事情在輸入框中用聊天的方式就可以解決:

  1. 按格式輸出
  2. 分類
  3. 聚類
  4. 持續互動
  5. 解決技術相關問題
  6. 輿情分析
  7. 坐席質檢
  8. 故障解釋 既然聊天框就可以解決問題,我們還需要什么?很多場景我們無法去聊天框輸入去問答案,比如說代碼補全工具,比如我們要做一個產品,語音轉文本場景,想讓轉化出的文本進行一些優化,也不能讓用戶復制粘貼去干,需要我們的程序能自動去問大模型。本文我們簡單介紹一些大模型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='')`

大模型通俗的講就是根據上文,猜下一個詞(的概率):

image.png

用通俗不嚴謹的語言再稍微深入描述大模型的工作原理:

  1. 大模型可是個愛學習的小家伙,它把人類說過的話都記在了心里。這就是我們說的「機器學習」,而它學習的過程,我們叫它「訓練」。
  2. 它還特別擅長記概率,把一串接一串的token可能跟著的token都記錄下來了。這些記錄,就是我們說的「參數」,也可以叫做「權重」。
  3. 給它幾個token,它就能猜出下一個最可能的token是啥。這個過程,我們叫做「生成」,也有人叫它「推理」
  4. 用它生成的token,再結合之前的上下文,它就能繼續猜下去,就像搭積木一樣,一塊接一塊,搭出更多的文字。

那Token又是什么呢?再用通俗的語言描述一下:

  1. 可能是一個英文單詞,也可能是半個,三分之一個。可能是一個中文詞,或者一個漢字,也可能是半個漢字,甚至三分之一個漢字
  2. 大模型在開訓前,需要先訓練一個 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時代成為全棧工程師的重要性,以適應技術發展和行業變革的需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38564.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PostgreSQL的系統視圖pg_stat_database_conflicts

PostgreSQL的系統視圖pg_stat_database_conflicts 在 PostgreSQL 中, pg_stat_database_conflicts 是一個視圖,用于監控并發操作導致的數據庫沖突情況。了解和監控這些沖突可以幫助數據庫管理員調優系統,以更好地處理并發事務。 pg_stat_da…

中控室監控臺在水處理行業的作用

隨著工業化和城市化的快速推進,水處理行業的重要性日益凸顯。作為確保水質安全、提高水資源利用效率的關鍵環節,水處理廠需要高效、穩定地運行。在這個過程中,中控室監控臺發揮著不可或缺的作用。本文將從以下幾個方面,詳細闡述中…

fyne的MultiLineEntry設置大小

MultiLineEntry設置大小 在另一篇文章講過,放入border布局中,可以最大化MultiLineEntry。 這里再介紹另一種方法:SetMinRowsVisible() func (e *Entry) SetMinRowsVisible(count int) {e.multiLineRows counte.Refresh() }SetMinRowsVisible強制mult…

(域滲透提權)CVE-2020-1472 NetLogon權限提升漏洞

目錄 漏洞簡介 漏洞檢測 漏洞利用 使用腳本進行利用 使用Mimikatz進行利用 恢復用戶哈希 漏洞簡介 CVE-2020-1472是繼永恒之藍漏洞之后又一個好用的內網提權漏洞,影響Windows Server2008R2至2019的版本。只要攻擊者能夠訪問到目標域控并且知道域控計算機名即…

九淺一深Jemalloc5.3.0 -- ④淺*配置

目前市面上有不少分析Jemalloc老版本的博文,但最新版本5.3.0卻少之又少。而且5.3.0的架構與5之前的版本有較大不同,本著“與時俱進”、“由淺入深”的宗旨,我將逐步分析最新release版本Jemalloc5.3.0的實現。 另外,單講實現代碼是…

ShareSDK iOS端如何實現小紅書分享

下載SDK 請登陸官網 ,找到SDK下載,勾選需要的平臺下載 導入SDK (1)離線導入將上述下載到的SDK,直接將整個SDK資源文件拖進項目里,如下圖: 并且勾選以下3個選項 在點擊Finish,…

實時跟蹤并顯示Docker容器的最新日志

可以用以下命令實時跟蹤并顯示Docker容器的最新日志 例: 這條命令 docker logs --tail 200 -f docker1 的作用是: docker logs: 這部分指示要查看 Docker 容器的日志。--tail 200: 這個選項指定只顯示最后的200行日志。這意味著你將只看到容器最近生…

JavaSE簡易版掃雷小游戲

描述:用戶輸入二維雷區的高和寬,輸入確定地雷數,隨機在地雷區生成地雷。用戶輸入橫豎坐標進行挖雷,挖到地雷游戲以失敗結束,并讓用戶選擇是否再次游戲;沒挖到雷,顯示該區域8個方向地雷數。如果8…

安徽大學學報-哲學社會科學版

《安徽大學學報》(哲學社會科學版)簡介 安徽大學學報(哲學社會科學版)簡要信息 刊 號 CN 34—1040/C ISSN 1001—5019 主 編 張治棟 地 址 安徽省合肥市肥西路3號 郵 編 230039 電 話 (0551)6…

Spring MVC的高級功能——異常處理(三)異常處理注解

一、ControllerAdvice注解的作用 從Spring 3.2開始,Spring 提供了一個新注解ControllerAdvice, ControllerAdvice有以下兩個作用。 ? 注解作用在類上時可以增強Controller,對Controller中被RequestMapping注解標注的方法加一些邏輯處理。…

uniapp + vue3 + Script Setup 寫法變動 (持續更新)

一、uniapp 應用生命周期: https://uniapp.dcloud.net.cn/tutorial/vue3-composition-api.html 注意: 應用生命周期僅可在App.vue中監聽,在其它頁面監聽無效。 二 、uniapp頁面生命周期: https://uniapp.dcloud.net.cn/tutori…

C語言 輸出所有的水仙花數

輸出所有的“水仙花數”(水仙花數指一個三位數,其各位數字立方和等于該數本身。例如153是水仙花數,因為1^35^33^3153) 這個程序找出所有的三位水仙花數,并輸出它們。 (如果每各數字立方和等于原數字&…

Java SE入門及基礎(62) 線程池 執行器

線程池 1. 執行器 In all of the previous examples, theres a close connection between the task being done by a new thread, as defined by its Runnable object, and the thread itself, as defined by a Thread object. This works well for small applications, but…

Golang | Leetcode Golang題解之第212題單詞搜索II

題目: 題解: type Trie struct {children map[byte]*Trieword string }func (t *Trie) Insert(word string) {node : tfor i : range word {ch : word[i]if node.children[ch] nil {node.children[ch] &Trie{children: map[byte]*Trie{}}}nod…

Zynq系列FPGA實現SDI視頻編解碼,基于GTX高速接口,提供5套工程源碼和技術支持

目錄 1、前言工程概述免責聲明 2、相關方案推薦本博已有的 SDI 編解碼方案本方案在Xilinx--Kintex系列FPGA上的應用 3、詳細設計方案設計原理框圖SDI 輸入設備Gv8601a 均衡器GTX 解串與串化SMPTE SD/HD/3G SDI IP核BT1120轉RGB圖像緩存視頻讀取控制HDMI輸出RGB轉BT1120Gv8500 驅…

vuepress使用簡介及個人博客搭建

目錄 一、介紹二、環境準備三、安裝運行vuepress四、目錄結構五、配置文件六、導航欄配置七、導航欄logo八、瀏覽器圖標九、側邊欄配置十、添加 Git 倉庫和編輯鏈接十一、部署到GitHub十二、搭建成功 一、介紹 VuePress 是 Vuejs 官方提供的一個是Vue驅動的靜態網站生成器&…

Qt 配置ASan

Qt 配置ASan 文章目錄 Qt 配置ASan摘要關于ASan(AddressSanitizer)在Qt中配置 ASan1. 安裝必要的工具2. 修改項目的 .pro 文件3. 重新構建項目4. 運行應用程序5. 分析錯誤報告示例注意事項 關鍵字: Qt、 ASan、 AddressSanitizer 、 GCC …

CTFHUB-SSRF-Redis協議

本題需要用到: 在線編碼網址:https://icyberchef.com/ gopherus工具:https://mp.csdn.net/mp_blog/creation/editor/139440201 開啟題目,頁面空白 和上一個題FastCGI協議一樣,還是使用gopherus攻擊redis ./gopheru…

Oracle PL / SQL 插入insert 第二部分

DUAL表 dual是由具有一列和一行的oracle數據庫(所有者SYS)擁有的表。 要評估1 1的添加,請執行以下SQl SELECT語句: SELECT 1 1 FROM dual; 快速找出oracle如何評估你對內置函數length()的使用。 SELE…

vlan基礎相關

7.2以太網交換基礎 數據鏈路層也叫2層網絡,用的是Mac地址,想到Mac地址就要想到交換機。 以太網協議(LAN)以太網是建立在CSMA/CD載波監聽多路訪問/沖突檢測,機制上的廣播型網絡。CSMA工作原理是先監聽,在介…