構建更好的基于LLM的應用程序的四大秘訣
譯文作者 | Adrien Treuille
譯者 | 布加迪
審校 | 重樓
出品 | 51CTO技術棧(微信號:blog51cto)
自從OpenAI發布首個ChatGPT模型以來,人們對生成式AI的興趣激增。基于大語言模型(LLM)的應用程序現處于企業思考生產力和效率的最前沿,用于構建生成式AI應用程序的工具和框架得到了極大的擴展。但人們仍然擔心生成式AI輸出的準確性,因此開發人員需要快速學會處理諸如此類的問題,以構建強大、可靠的應用程序。
以下是提高LLM應用程序準確性的一些建議和技術,以及選擇正確LLM的注意事項。我們無法詳盡地探討這些問題,因為每個問題本身都很復雜,但我們可以提供一番建議,供諸位進一步探索。
本文中的Streamlit是一個免費開源框架,用于快速構建和共享機器學習和數據科學Web應用程序,最近它發布了一份報告,分析了Streamlit社區云上13000余名開發人員構建的21000多個LLM應用程序。它介紹了開發人員迄今為止一直在使用的一些工具和技術,并提供了以下一些建議。
比如說,矢量檢索工具可以為基于LLM的應用程序有效地改善上下文推薦,但我們的調查發現,目前只有少數開發人員在使用矢量功能,這代表未來大有機會。
隨著更多的開發人員利用生成式AI開發應用程序,我們將開始看到跨類別和垂直行業的應用程序逐漸內置基于AI的搜索以及對話和輔助體驗。以下是我給開發人員的四條建議,幫助他們構建更好的基于LLM的應用程序,這樣他們可以給所在組織帶來真正的顛覆效應。
1、為更智能的應用程序使用代理和編排
像LangChain和LlamaIndex這樣的編排框架可以使用額外的工具或代理來幫助增強模型基于LLM的應用程序的功能。在這種情況下,可以將代理視為插件系統,允許您將額外功能做入到應用程序中,用自然語言來表達。
這些代理可以組合起來管理和優化LLM功能,比如改進AI推理、解決偏見和集成外部數據源。代理還可以為LLM提供一種方法來思考它是否犯了錯誤以及成功完成任務所必須采取的步驟。
打個比方,考慮一下開發人員如何編寫提供特定函數的API和描述該函數的文檔:API表示為代碼,文檔使用自然語言。代理以類似的方式工作,除了提供文檔是為了方便LLM,而不是方便其他開發人員。因此,LLM關注手頭的任務,查看代理的文檔,并確定代理是否可以幫助它完成任務。
這些代理還為應用程序提供了一種反思自身錯誤并糾正它們的方法,從而為LLM應用程序增添了健壯性。比如說,假設一個LLM應用程序編寫了一些SQL代碼來執行任務,比如檢查數據庫中的庫存數量,但它在代碼中犯了錯誤。對于標準的“幼稚”的LLM應用程序而言,這個錯誤如同路之盡頭。
然而,如果應用程序有一個執行SQL的代理,它可以查看錯誤,使用代理來確定應該采取什么不同的做法,然后糾正錯誤。這可能只是語法上的一個小變化,但是如果沒有代理,LLM就無法通過推理解決錯誤。
2、使用矢量魔法和RAG來對抗幻覺
有時,您在使用的LLM無法訪問完成預期任務所需的所有信息。這可以在提示時注入額外的信息,但大多數LLM限制了這些提示的大小。為了克服這種限制,LLM可能需要使用矢量查詢外部數據庫,這種技術就叫檢索增強生成(RAG)。
為了理解RAG可以為LLM應用程序做什么,不妨考慮三個不同級別的LLM應用程序。
?第1級:應用程序可以使用LLM中已有的知識生成結果。
?第2級:應用程序需要額外的信息,信息可以在提示時注入。只要您能保持遵守提示限制,這相當簡單。
?第3級:LLM需要聯系外部信息源(比如數據庫)以完成任務。
RAG在第3級有了用武之地,外部數據庫通常使用矢量進行語義索引,這就是為什么您最近可能頻頻聽到矢量數據庫和矢量搜索工具的新聞。
具有矢量數據庫和矢量搜索的應用程序可以通過對龐大的非結構化數據集(包括文本、圖像、視頻或音頻)進行分類,以實現快速的上下文搜索。這對于進行更快、更強大的上下文推薦非常有效。但矢量工具仍未得到廣泛應用。Streamlit的調查發現,僅20%的基于生成式AI的應用程序使用了某種矢量技術。
3、聊天機器人為用戶提供了一種強大的方式來優化查詢
聊天機器人將生成式AI帶入了主流,但有人懷疑將來它們是否會成為一種有效的界面。有人認為,聊天機器人給了用戶太多的自由,卻沒有足夠的背景知識來說明如何使用LLM應用程序。有人被過去的失敗所嚇倒:Clippy是一場災難,為什么聊天機器人今天會成功呢?
很顯然,聊天機器人是否合適一方面取決于應用程序的預期用途。但聊天機器人至少有一個非常有用的優點不容忽視:它們為用戶通過流暢的、仿人的界面添加上下文和完善答案提供了一種簡單又直觀的方式。
要理解為什么這很強大,不妨想想搜索引擎。用戶通常無法改進搜索引擎查詢;比如說,如果結果略有偏差,沒有辦法告訴搜索引擎“再試一次,但排除關于X的答案”,或者“給y更多的權重”。這將是一種方便而強大的功能,這也是聊天機器人為LLM應用程序提供的功能。
調查發現,用Streamlit構建的生成式AI應用程序中28%是聊天機器人,而72%的應用程序通常不允許會話改進。另一方面,調查顯示,這些聊天機器人的每周使用率上升到近40%,而非聊天機器人應用程序的使用率有所下降。因此,聊天機器人可能是最終用戶青睞的界面。
4、考慮GPT的替代方案,包括開源LLM
基本的GPT模型仍然是最知名的LLM,它們功能非常強大,但在過去的一年里出現了更多的選擇,其中一些可能更適合您的應用程序。需要考慮的因素包括:LLM所需的知識廣度、LLM的規模、您的訓練要求和預算,以及LLM是開源還是專有對您來說是否重要。與科技界的許多方面一樣,這里也存在取舍。
如果您在構建一個供內部使用的生成式AI應用程序,可能需要使用內部企業數據來訓練該LLM。對于大多數企業來說,出于安全原因,與公共LLM共享敏感數據是不可能的,因此許多公司在現有的云安全邊界內運行LLM,這常常導致它們選擇比較小的LLM,比如AI21和Reka。
非常龐大的LLM還往往有更高的延遲,由于所需的計算資源,通常運行成本更高。如果應用程序執行比較簡單的任務,比如翻譯文本或總結文檔,較小的LLM可能效果很好,使用和操作成本顯著降低。
您也可能有理由偏愛開源LLM,比如Meta的LLaMA,而不是像OpenAI、Anthropic或Cohere這樣的專有LLM:在專有LLM中,源代碼、訓練數據、權重或模型的其他細節通常不會公開披露。開源LLM需要自托管或通過托管提供商進行推理,但是源代碼及模型的其他細節更容易獲得。
5、寫在最后:現在就開始使用生成式AI
生成式AI仍然是迅速崛起的領域,但所需的工具和技術在迅速發展,今天有很多選擇可以開始入手。抓住這個機會的開發人員可以為所在組織提供巨大的價值,將AI應用程序作為日常業務運營和任務的一項常規功能。隨著生成式AI繼續重塑組織中的角色和責任,依賴并精通基于LLM的應用程序的開發人員將脫穎而出,上述建議將幫助您開始邁出正確的第一步。
原文鏈接:https://thenewstack.io/4-key-tips-for-building-better-llm-powered-apps/