偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

ChatGPT分享-如何開發(fā)一個(gè)LLM應(yīng)用

人工智能
目前來說由于通用大模型訓(xùn)練/部署的高成本來說,產(chǎn)業(yè)水平化分工的條件基本成熟,世界上并不需要很多個(gè)大模型,做LLM的應(yīng)用將會(huì)是中小型企業(yè)和個(gè)人開發(fā)者的必然選擇。新形態(tài)的編程/工程范式需要工程師去及時(shí)學(xué)習(xí)理解。目前的開源技術(shù)棧已經(jīng)能滿足大部分產(chǎn)品的需求,可以嘗試快速實(shí)踐demo來驗(yàn)證想法。

1?背景?

ChatGPT引起巨大的業(yè)界震撼,各行各業(yè)都在討論大語言模型、通用人工智能。AI經(jīng)歷了五十多年的發(fā)展,現(xiàn)在正處于產(chǎn)業(yè)結(jié)構(gòu)水平化發(fā)展的關(guān)鍵時(shí)期。這一變化源于NLP領(lǐng)域范式的轉(zhuǎn)變,從“預(yù)訓(xùn)練+微調(diào)”向“預(yù)訓(xùn)練、提示、預(yù)測”模式演進(jìn)。在這一新模式下,下游任務(wù)適應(yīng)預(yù)訓(xùn)練模型,使得一個(gè)大型模型能適用于多個(gè)任務(wù)。這一變化為AI產(chǎn)業(yè)的水平化分工奠定了基礎(chǔ),大型語言模型成為基礎(chǔ)設(shè)施,Prompt Engineering公司層出不窮,專注于連接用戶和模型。AI產(chǎn)業(yè)的分工初步形成,包括底層基礎(chǔ)設(shè)施(云服務(wù)商)、大型模型、Prompt Engineering平臺(tái)和終端應(yīng)用。隨著AI產(chǎn)業(yè)變革,開發(fā)者可以充分利用大型語言模型(LLM)和Prompt Engineering來開發(fā)創(chuàng)新應(yīng)用。

2Prompt-Ops下的應(yīng)用

目前要開發(fā)一個(gè)基于LLM的應(yīng)用,我們面臨最大的工程上的問題是什么?

  • 大語言模型不能聯(lián)網(wǎng),無法獲取最新的信息
  • 大語言模型沒有我們私有的數(shù)據(jù),無法回答垂直方向的問題
  • 大語言模型的開放API(text-davinci-003)沒有像ChatGPT那樣優(yōu)秀的上下文能力
  • 大語言模型無法驅(qū)動(dòng)其他工具。

2.1   Langchain等工程框架解決了這些工程上的問題

以Langchain為例簡單來說:LangChain是 LLM 底層能力的封裝,是一種 Prompt Engineering或者說是Prompt-Ops。

  • 它可以接入各種不同LLM的服務(wù),抽象了各種大語言模型的調(diào)用
  • 它可以創(chuàng)建各種PromptTemplate,實(shí)現(xiàn)定制化的Prompt模版
  • 它可以創(chuàng)建鏈來組合調(diào)用PromptTemplate
  • 它可以通調(diào)用各種工具,實(shí)現(xiàn)GPT-3目前不擅長的事情,比如搜索/數(shù)學(xué)/鏈接私有數(shù)據(jù)庫/Python代碼
  • 它可以使用代理, 驅(qū)動(dòng)LLM 來確定采取哪些行動(dòng)以及采取何種順序。動(dòng)作可以是使用工具并觀察其輸出,也可以是返回給用戶。
  • 它可以通過它的Memory模塊,來實(shí)現(xiàn)對話歷史的建模。

2.2    一些Langchain的開發(fā)例子

2.2.1   結(jié)合搜索的GPT

圖片

圖片

這是一個(gè)用ChatGPT和LangChain開發(fā)的Demo對比的例子,輸入的都是“誰是周杰倫的老婆?她當(dāng)前的年齡乘以0.23是多少?”??梢钥闯鯟hatGPT或者GPT-3.5因?yàn)闆]有搜索能力,回答的結(jié)果是錯(cuò)誤的。右邊用LangChain結(jié)合OpenAI的GPT-3.5的API則輸出了正確的結(jié)果,他會(huì)逐步去搜索獲得正確信息,得出正確結(jié)果,而且中間的過程是框架自動(dòng)處理的,我除了輸入問題沒有其他操作。

2.2.2   將自然語言轉(zhuǎn)為Python代碼并自行糾錯(cuò)

這是一個(gè)非常令人震驚的例子,在這個(gè)流程中,它自己發(fā)現(xiàn)函數(shù)未定義的報(bào)錯(cuò)并自行糾正。

圖片

圖片

2.2.3   使用GPT-3 + Statmuse + Langchain查詢NBA數(shù)據(jù)

Fuzzy API composition: querying NBA stats with GPT-3 + Statmuse + Langchain

使用Langchain與體育數(shù)據(jù)搜索網(wǎng)站相結(jié)合,提問復(fù)雜的數(shù)據(jù)問題并得到準(zhǔn)確的回復(fù)。例如:“波士頓凱爾特人隊(duì)在這個(gè) 2022-2023 賽季的 NBA 賽季場均防守得分是多少?與他們上賽季的平均水平相比,百分比變化如何?”

圖片

2.2.4   連接Python REPL打開瀏覽器播放音樂

一個(gè)蠻科幻的場景,我用Langchain接入了Python REPL工具,輸入“給我放一首歌”,它導(dǎo)入了webBrowser包,調(diào)用代碼打開了瀏覽器,給我播放了一首 《never gonna give you up》

def pythonTool():
bash = BashProcess()
python_repl_util = Tool(
"Python REPL",
PythonREPL().run,
"""A Python shell. Use this to execute python commands.
Input should be a valid python command.
If you expect output it should be printed out.""",
)
command_tool = Tool(
name="bash",
descriptinotallow="""A Bash shell. Use this to execute Bash commands. Input should be a valid Bash command.
If you expect output it should be printed out.""",
func=bash.run,
)
# math_tool = _get_llm_math(llm)
# search_tool = _get_serpapi()
tools = [python_repl_util, command_tool]
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("給我播放一首音樂")

圖片

2.2.5   連接私有數(shù)據(jù)

連接私有數(shù)據(jù)對第三方企業(yè)做LLM應(yīng)用來說非常重要。下面舉幾個(gè)例子

  • LangchainJs的文檔,結(jié)合了Langchain:AI-powered search for LangchainJS Documentation,你可以直接問文檔內(nèi)容、技術(shù)細(xì)節(jié)。

圖片

  • 數(shù)據(jù)庫產(chǎn)品 Supabase也做了同樣的事情,將自己的文檔與ChatGPT相連接,使得開發(fā)者可以很方便的詢問/查找自己遇到的技術(shù)問題。https://supabase.com/docs

圖片

  • 政府信息問答的一個(gè)例子:Co-pilot for government

法律公文和政策條款一般都非常復(fù)雜繁瑣,這個(gè)demo中將舊金山政府的信息用Langchain與GPT結(jié)合,做到詢問其中細(xì)節(jié)能獲得準(zhǔn)確回復(fù)的效果。

圖片

> Entering new AgentExecutor chain...
I need to find out the size limit for a storage shed without a permit and then search for sheds that are smaller than that size.
Action: SF Building Codes QA System
Action Input: "What is the size limit for a storage shed without a permit in San Francisco?"
Observation: The size limit for a storage shed without a permit in San Francisco is 100 square feet (9.29 m2).


Thought:Now that I know the size limit, I can search for sheds that are smaller than 100 square feet.
Action: Google
Action Input: "Storage sheds smaller than 100 square feet"
Observation: Results 1 - 24 of 279 ...


Thought:I need to filter the Google search results to only show sheds that are smaller than 100 square feet and suitable for backyard storage.
Action: Google
Action Input: "Backyard storage sheds smaller than 100 square feet"
Thought:I have found several options for backyard storage sheds that are smaller than 100 square feet and do not require a permit.
Final Answer: The size limit for a storage shed without a permit in San Francisco is 100 square feet. There are many options for backyard storage sheds that are smaller than 100 square feet and do not require a permit, including small sheds under 36 square feet and medium sheds between 37 and 100 square feet.

2.3   結(jié)合私有數(shù)據(jù)問答

LLM應(yīng)用與私有數(shù)據(jù)交互非常重要,我看到無數(shù)人在問一些ChatGPT無法回答的問題了:問認(rèn)不認(rèn)識(shí)誰、問自己公司業(yè)務(wù)細(xì)節(jié)、問各種可能不包含在預(yù)訓(xùn)練數(shù)據(jù)集里的東西。這些都已用Langchain和LlaMaIndex來解決。試想一下,將私有數(shù)據(jù)與LLM相結(jié)合,將改變數(shù)據(jù)原有的訪問方式,通過問答能很自然地獲取到自己需要的信息,這是比當(dāng)前的搜索/打標(biāo)分類都要高效的數(shù)據(jù)交互方式。

2.3.1   如何構(gòu)建一個(gè)基于私有數(shù)據(jù)的LLM問答系統(tǒng)

圖片

向量數(shù)據(jù)庫現(xiàn)在看起來是構(gòu)建LLM App中很關(guān)鍵的一個(gè)組件。首先 LLM 的預(yù)訓(xùn)練和微調(diào)過程不可能包含我們所期待的私有數(shù)據(jù),因此如何將LLM關(guān)聯(lián)到私有數(shù)據(jù)成為一個(gè)很關(guān)鍵的需求。而且LLM的“接口”-自然語言通常不是像Key-Value的映射那樣精確地。而且在這一階段我們希望LLM去理解我們的知識(shí)庫,而不是簡單的在其中搜索相同的字符串,我們希望詢問關(guān)于我們知識(shí)庫的細(xì)節(jié),并給出一定理解后的答案(以及來源),這樣匹配向量這樣的搜索方式是一個(gè)非常合適且關(guān)鍵的解決方案。還有一個(gè)關(guān)鍵點(diǎn)是,LLM在每次調(diào)用是按token計(jì)費(fèi)(即文本量),并且目前的接口的上下文有著4096 tokens的限制。,因此面對龐大的數(shù)據(jù),我們也不可能將所有的數(shù)據(jù)一次性傳給LLM。因此才有了第一張圖那個(gè)流程圖的結(jié)構(gòu)。本地預(yù)先將我們私有的數(shù)據(jù)轉(zhuǎn)成向量存在Qdrant里,用戶問答時(shí),將用戶的問題轉(zhuǎn)為向量,然后去Qdrant里進(jìn)行搜索(相似性匹配)得到Top K個(gè)結(jié)果,然后將這些結(jié)果(注意這里的結(jié)果已經(jīng)是自然語言了)傳給LLM進(jìn)行總結(jié)輸出。

2.3.2   結(jié)合私有數(shù)據(jù)問答的抽象流程

這里使用Langchain社區(qū)博客的流程圖為例

圖片

私有數(shù)據(jù)分割成小于LLM上下文的分塊,創(chuàng)建向量后存入向量數(shù)據(jù)庫

圖片

將問題計(jì)算向量后在向量數(shù)據(jù)庫進(jìn)行相似性搜索,算出相關(guān)性較高的top k個(gè)結(jié)果后拼接prompt送往LLM獲得答案。

2.3.3   重要組件

  • OpenAI Ada模型:text-embedding-ada-002模型可以快速編碼一個(gè)1536維的向量,我們可以使用這個(gè)向量來計(jì)算文本之間的相似性。
  • Langchain / LLamaIndex:Langchain包含多種文本拆分器與文檔連接器,方便將文件進(jìn)行拆分并且在向量數(shù)據(jù)庫中索引;LlamaIndex 可以從向量存儲(chǔ)加載數(shù)據(jù),類似于任何其他數(shù)據(jù)連接器。然后可以在 LlamaIndex 數(shù)據(jù)結(jié)構(gòu)中使用此數(shù)據(jù)。
  • 向量數(shù)據(jù)庫,選型比較多:Chroma / FAISS / Milvus / PGVector / Qdrant / Pinecone等等。

2.3.4   OpenAI私有部署與成本的問題

再來聊聊最近那個(gè)OpenAI私有部署的新聞,如果用Langchain來做鏈接,面對龐大的私有數(shù)據(jù),用一個(gè)embedding模型(OpenAI的ada)計(jì)算輸入問題向量,用Qdrant等向量數(shù)據(jù)庫來管理私有數(shù)據(jù)的向量和向量搜索,用Langchain來做中間的鏈接雖然可以解決問題,但是token的消耗卻是不容忽視的成本問題。私有部署+微調(diào)可能能解決大部分前面提到的問題??赡苁怯绣X大公司用Model instance和fine-tuning,小公司獨(dú)立開發(fā)者用Langchain等框架。更未來OpenAI的LLM服務(wù)能力外溢,可能不需要Prompt了,甚至把Langchain的功能都能包括了,LLM應(yīng)用的開發(fā)接入也許只需要一個(gè)接口調(diào)用。

2.4    2023年的LLM應(yīng)用技術(shù)棧

2023 用來簡單搭建 AI Demo 的最新技術(shù)棧:

  • 托管: Vercel
  • 前端: Next.js
  • 后端: Vercel with flask
  • 數(shù)據(jù)庫: Supabase
  • AI 模型: OpenAI / Replicate / Hugging Face
  • LLM框架層: LangChain / LLaMaIndex
  • 向量存儲(chǔ)/搜索: Pinecone / FAISS

2.5   Prompt-Ops 目前最大的問題

一些關(guān)于 Langchain 這類Prompt-Ops這類工具的反對觀點(diǎn):stream.thesephist.com主要問題是在這類工具/框架,將自然語言作為代碼和LLM的連接,使用非確定性語言本身作為控制流,有點(diǎn)瘋狂。而且本身評(píng)估模型輸出效果現(xiàn)在是個(gè)很麻煩的事,沒有很好的解決方案,很多都是維護(hù)一個(gè)巨大的電子表格,靠人去評(píng)估。(也有用LLM評(píng)估LLM的方案,還比較早期)所以要投入生產(chǎn),真實(shí)面對用戶而不是作為twitter演示可能還有很多工作要做。

詳細(xì)說說測試環(huán)節(jié)面臨的巨大挑戰(zhàn)。假如你的產(chǎn)品有一套研發(fā)階段效果很好的prompt,交給測試后,可能測試上百條上千條就能看出問題了。由于效果無法保證,真正推出給c端用戶會(huì)面臨很大的挑戰(zhàn)。而且沒有用微調(diào)服務(wù)或者model instance的話,如果OpenAI更新了模型,你的生產(chǎn)環(huán)境的prompt可能需要全部重新測試一下效果。你的prompt也需要和代碼一樣按版本來管理,不管有沒有prompt變更,每個(gè)版本上線前都需要進(jìn)行回歸測試。沒有好的自動(dòng)化評(píng)估方案的話,大量的case都需要測試人工來看會(huì)耗費(fèi)非常多的人力。

結(jié)合私有數(shù)據(jù)的LLM應(yīng)用目前開發(fā)起來在工程上已經(jīng)有很多不錯(cuò)的方案了,很容易跑出效果不錯(cuò)的demo,但還是需要非常謹(jǐn)慎對待這樣一種應(yīng)用。畢竟我們不只是要做一個(gè)在社交媒體或者Leader面前演示的項(xiàng)目。提供給用戶輸入的是一個(gè)對話框,自然語言寬泛到即使你測試上萬條結(jié)果也可能出現(xiàn)意想不到的結(jié)果,畢竟像new bing和chatGPT這樣的產(chǎn)品也會(huì)被Prompt Injection。面對這種不確定性,工程上如何去避免,測試如何去覆蓋都是一個(gè)成熟產(chǎn)品待解決或者說還有很多工作可以做的問題。

但我覺得也不必完全否定這類Prompt-Ops工具/框架,畢竟現(xiàn)階段確實(shí)能做出很多不錯(cuò)的demo來驗(yàn)證想法。

3未來可能的一些產(chǎn)品形態(tài)

聊聊ChatGPT API開放后LLM應(yīng)用可能的形態(tài)。

  • 對話聊天,是最直觀的應(yīng)用方式,在API上做好對話歷史的管理。
  • 虛擬角色聊天,在基礎(chǔ)對話聊天上,對API的prefix_message上做一些角色定義的prompt,可以實(shí)現(xiàn)類似Character.ai的效果。更深入可能是作為游戲角色、虛擬人、XR助手等。
  • 類似Notion的文本輔助撰寫工具,目前Notion、FlowUs都做了類似的應(yīng)用。未來各家社區(qū)的發(fā)布器集成也是一個(gè)趨勢,減低用戶發(fā)布門檻,提升發(fā)布質(zhì)量。
  • 數(shù)據(jù)總結(jié)性工具,實(shí)現(xiàn)Chat-Your-Data,提供文檔的輸入給用戶,讓用戶可以與自己提供的數(shù)據(jù)聊天,本質(zhì)只涉及到互聯(lián)網(wǎng)公開的數(shù)據(jù)與用戶私有的數(shù)據(jù)。
  • 大企業(yè)的Chat-Your-Data,各家大公司在原有業(yè)務(wù)基礎(chǔ)上,結(jié)合大企業(yè)的私有數(shù)據(jù),提供更優(yōu)質(zhì)的服務(wù)。比如結(jié)合用戶點(diǎn)評(píng)的大眾點(diǎn)評(píng),能夠用“想去放neo-soul和R&B音樂的酒吧”,比如我們的商詳頁,能夠總結(jié)所有用戶對這個(gè)商品的評(píng)價(jià),并且可以讓用戶對這個(gè)商品的資料進(jìn)行問答。
  • 與政務(wù)、醫(yī)療、教育等領(lǐng)域結(jié)合,融合線上機(jī)構(gòu)官網(wǎng)、線下大屏,提供更好的市民服務(wù)。
  • 與其他工具比如IFTTT或者各種私有協(xié)議相結(jié)合,實(shí)現(xiàn)LLM可以訪問更多的工具和系統(tǒng),舉個(gè)例子:iot場景,Office Copilot。

LLM應(yīng)用實(shí)際是一種新的人機(jī)交互方式,能夠讓用戶用自然語言與我們目前的系統(tǒng)溝通,很多應(yīng)用甚至可以簡化到只有一個(gè)聊天窗口。

4總結(jié)

目前來說由于通用大模型訓(xùn)練/部署的高成本來說,產(chǎn)業(yè)水平化分工的條件基本成熟,世界上并不需要很多個(gè)大模型,做LLM的應(yīng)用將會(huì)是中小型企業(yè)和個(gè)人開發(fā)者的必然選擇。新形態(tài)的編程/工程范式需要工程師去及時(shí)學(xué)習(xí)理解。目前的開源技術(shù)棧已經(jīng)能滿足大部分產(chǎn)品的需求,可以嘗試快速實(shí)踐demo來驗(yàn)證想法。

參考資料:

  • https://blog.langchain.dev/tutorial-chatgpt-over-your-data/

Tutorial: ChatGPT Over Your Data

  • https://qdrant.tech/articles/langchain-integration/

Question Answering with LangChain and Qdrant without boilerplate

  • https://mp.weixin.qq.com/s/VZ6n4qlDx4bh41YvD1HqgQ

Atom Capital:深入探討ChatGPT帶來的產(chǎn)業(yè)變革

責(zé)任編輯:武曉燕 來源: 得物技術(shù)
相關(guān)推薦

2023-02-07 10:09:20

ChatGPT人工智能

2023-09-21 08:00:00

ChatGPT編程工具

2018-06-19 16:04:27

Dubbo應(yīng)用Java

2023-02-01 16:36:31

GNOMEChatGPTLinux

2023-02-13 14:47:32

人工智能機(jī)器學(xué)習(xí)ChatGPT

2023-02-26 01:02:22

2011-12-27 09:49:50

AndroidiOSFlurry

2014-07-08 09:27:24

SQLSERVER腳本

2023-04-10 14:20:47

ChatGPTRESTAPI

2023-04-06 19:06:28

ChatGPT開發(fā)摔倒識(shí)別

2024-12-31 00:00:10

LangServeLLM應(yīng)用部署

2013-09-09 16:11:10

2023-06-01 07:49:51

2023-03-09 08:13:34

2024-05-08 07:40:20

ChatGPT訓(xùn)練數(shù)據(jù)預(yù)測

2024-04-03 15:20:08

2014-03-12 10:00:26

移動(dòng)開發(fā)跨平臺(tái)

2018-01-08 14:31:09

Electron桌面APP前端

2012-11-20 09:33:02

2020-12-04 18:44:29

KubernetesHTTPS Wordpress
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)