如果你還記得今年的 Google I/O大會,你肯定注意到了他們今年發布的 Astra,一個人工智能體(AI Agent)。事實上,目前最新的 GPT-4o 也是個 AI Agent。 現在各大科技公司正在投入巨額資金來創建人工智能體(AI Agent),他們的研究工作可能會帶給我們幾十年以來一直追尋的那種實用且可以自由互動的人工智能。包括Sam Altman在內的許多專家都表示,AI Agent 已成為下一個大熱門方向。 接下來,我們聊聊什么是 AI Agent,以及如何創建一個基本的人工智能體。我們將會用到LangGraph和Ollama這兩個可以簡化本地人工智能體構建的強大工具。聽我們講完,你將全面了解如何利用這些技術創建適合你特定需求的高效人工智能體。 什么是人工智能體(AI Agent)?事實上,AI Agent 的研究還處于早期階段,該領域還沒有明確的定義。但是 Astra 和 GPT-4o 已經可以成為一個很好的早期示例了。NVIDIA 高級研究員、AI Agent 項目負責人 Jim Fan 表示,我們距離出現一個有實體的 AI Agent 或者說以 ChatGPT 作為內核的機器人,還有大約 3 年的時間。如果用他話來解釋什么是 AI Agent,簡單來說,AI Agent 就是能夠在動態世界中自主決策的 AI 模型和算法。 嚴格意義上講,人工智能體是感知環境并采取行動以實現特定目標或目的的軟件或系統。這些AI Agent可以是簡單的算法,也可以是能夠進行復雜操作的復雜系統。以下是人工智能體的一些特點:
醫療保健系統是人工智能體落地應用的一個很合適的領域,它可以分析來自不同病人的不同數據,如醫療記錄、測試結果和實時監控設備。然后,這些人工智能體利用這些數據可以幫助做出判斷和決策,例如預測病人患上某種特定疾病的可能性,或根據病人的病史和當前健康狀況推薦個性化的治療方案。例如,醫療保健領域的人工智能體可以通過分析醫學影像數據中的細微信息幫助醫生提早診斷疾病,或根據實時生理數據,建議調整藥物劑量。 人工智能體不僅提高了醫療診斷的準確性,還能提供個性化的治療方案,提高整體醫療質量。除了醫療系統以外,還有很多人工智能體適合的場景和行業,比如游戲。 Fan 所在的團隊在熱門游戲 Minecraft 中開發了一個名為MineDojo的 AI Agent。利用從互聯網收集的大量數據,Fan 的 AI Agent 能夠學習新技能和新任務,從而自由探索游戲世界,并完成一些復雜的任務,例如用柵欄圍住動物或將熔巖倒入桶里。開放世界游戲可能是 AI Agent 步入現實世界的前一站,因為它給了 AI Agent 了解物理、推理和常識的訓練場。 一篇普林斯頓大學的論文表示,人工智能代理往往具有三種不同的特征。如果人工智能系統能夠在復雜環境中無需指令就能實現比較復雜的目標,那么它們就可以被視為具有“Agent”潛質的。第二個特征是,如果它們能夠用自然語言接受指令,并在無人監督的情況下自主行動。最后,“Agent”一詞還適用于能夠使用工具(比如搜索或編程)或具有規劃能力的系統。 人工智能體 AI Agent 還存在哪些局限?事實上,我們距離擁有一個可以完全自主完成瑣事的AI Agent 還差得很遠,因為目前的系統總會出現一些偏差,不會總嚴格地遵循指令行事。例如,負責編碼的 AI Agent 可以生成代碼,但有時會出錯,而且它不知道如何測試它正在創建的代碼。所以,如果你去使用這樣的 Agent,你仍然需要積極參與編碼的過程,而且這還要求你必須具備編碼的能力和知識,即你對 AI Agent 的要求一定要在你的“認知”范圍內。 另一個問題就是,AI Agent 在處理一個事項一段時間后,會忘記自己正在處理什么。這是因為它的系統受到其上下文窗口的限制,即它們在給定時間可以處理的數據量。 例如,你可以讓 ChatGPT 進行編寫代碼,但它卻不能很好地處理長篇的信息,它不能像一個普通工程師一樣輕松地瀏覽一個代碼庫里數百行的代碼。所以在年初的時候,Google 提高了 Gemini 模型處理數據的能力,讓用戶可以與模型進行更長時間的互動,并記住更多已經發生的對話內容。Google 也表示,未來努力使其上下文窗口接近無限。 人工智能體與 RAG 的區別RAG(檢索-增強生成)和人工智能體有時候會被人搞混,但他們是兩個不同的概念。 RAG 通過結合信息檢索方法來提高 LLM 模型的性能或輸出。檢索系統根據輸入查詢從大型語料庫中搜索相關文檔或信息。然后,生成模型(例如基于轉換器的語言模型)利用這些檢索到的信息生成更準確和與上下文相關的回復。由于整合了檢索信息,這有助于提高生成內容的準確性。此外,這種技術還免去了在新數據上微調或訓練 LLM 的需要。 另一方面,人工智能體是軟件或系統,它能執行特定或一系列任務。它們根據預定義的規則、機器學習模型或兩者進行操作。最大區別是,它們能與用戶或其他系統進行互動,以收集輸入、提供響應或執行操作。一些人工智能體的性能會隨著時間的推移而提高,因為它們可以根據新的數據和經驗進行學習和適應。人工智能體可以同時處理多項任務,為企業提供可擴展性。 總之,RAG 應用程序專門設計用于通過納入檢索機制來增強生成模型的能力;而人工智能體則是更廣泛的實體,可以自主執行各種任務。 好了,說了那么多,我們接下來說說看,怎么用一些現有的技術,來構建一個 AI Agent。步驟很簡單,不過在那之前,我們先要介紹兩個工具,一個是 LangGraph,另一個是 Ollama。如果你知道它們,那么你可以跳過后面兩段介紹的內容。 LangGraph 是什么?LangGraph 是一個功能強大的庫,用于使用大型語言模型(LLM)構建AI Agent應用程序。它可幫助創建涉及單個或多個AI Agent的復雜工作流,并提供循環、可控性和持久性等關鍵能力。 主要優勢
特點
LangGraph 受到 Pregel 和 Apache Beam 等技術的啟發,擁有類似 NetworkX 的用戶友好界面。它由 LangChain 公司開發,為構建可靠、先進的人工智能驅動應用程序提供了強大的工具。 Ollama 是什么?Ollama 是一個開源項目,使在本地機器上運行 LLM 變得簡單易用。它提供了一個用戶友好型平臺,簡化了 LLM 技術的復雜性,使那些希望利用人工智能強大功能的用戶可以輕松訪問和定制 LLM,而不需要大量專業技術知識。 Ollama 易于安裝,并提供多種型號和一整套旨在提升用戶體驗的特性和功能。 主要功能
使用 LangGraph 和 Ollama 創建人工智能體我們將使用 Mistral 模型創建一個簡單的AI Agent示例。該AI Agent可以使用 Tavily Search API 搜索網絡并生成響應。我們將從安裝 LangGraph 開始,這是一個專為使用 LLM 構建有狀態多角色應用程序而設計的庫,是創建AI Agent和多AI Agent工作流的理想選擇。該庫受 Pregel、Apache Beam 和 NetworkX 的啟發,由 LangChain 公司開發,可獨立于 LangChain 使用。 ollama 啟動并運行 Llama 2、Mistral、Gemma 和其他大型語言模型。 項目地址:https:///gh_mirrors/oll/ollama 我們將使用 Mistral 作為我們的 LLM 模型,該模型將與 Ollama 和 Tavily 的搜索 API 集成。Tavily 的 API 針對 LLM 進行了優化,可提供真實、高效、持久的搜索體驗。 在之前一篇文章中,我們學習了如何使用 Ollama 來使用 Qwen2。請跟隨文章安裝 Ollama 以及如何使用 Ollama 運行 LLM。 在開始安裝之前,讓我們先檢查一下 GPU。在本教程中,我們將使用 Paperspace 提供的 A100 GPU。NVIDIA A100 GPU 是專為人工智能、數據分析和高性能計算而設計的處理器。它基于NVIDIA Ampere 架構,主要功能包括多實例 GPU (MIG) 技術,以實現最佳資源利用、用于人工智能和機器學習工作負載的 Tensor 核心以及對大規模部署的支持。 Paperspace是 DigitalOcean 旗下的 GPU 云服務,提供包括 H100、A100、A5000 等一系列 GPU 云資源,同時它也是 NVIDIA 的高級合作伙伴,在中國地區Paperspace 通過 DigitalOcean 中國區獨家戰略合作伙伴卓普云提供技術支持與售前咨詢服務。 具體如何啟動一臺 A100 的主機,可以看我們之前發的教程?,雖然教程講的是H100,但是步驟一樣。在啟動實例之后,可以?跟著下述步驟繼續進行。? 檢查 GPU 配置打開終端,輸入以下代碼: nvidia-smi 安裝 LangGraph 和相關庫pip install -U langgraph pip install -U langchain-nomic langchain_community tiktoken langchainhub chromadb langchain langgraph tavily-python pip install langchain-openai 完成安裝后,我們將進入下一個關鍵步驟:提供 Tavily API 密鑰 注冊 Travily 并生成 API 密鑰: export TAVILY_API_KEY="apikeygoeshere" 現在,我們將運行下面的代碼來獲取模型。請嘗試使用 Llama 或任何其他版本的 Mistral。 使用 Llama 或任何其他版本的 Mistral: ollama pull mistral 導入構建AI Agent所需的庫 from langchain import hub from langchain_community.tools.tavily_search import TavilySearchResults from langchain.prompts import PromptTemplate from langgraph.prebuilt import create_react_agent from langchain_openai import ChatOpenAI from langchain_core.output_parsers import JsonOutputParser from langchain_community.chat_models import ChatOllama 我們將首先定義要使用的工具,并將這些工具與 LLM 綁定。在這個簡單的示例中,我們將通過 Tavily 使用內置的搜索工具。 tools = [TavilySearchResults(max_results=3)] llm_with_tools = llm.bind_tools(tools) 下面的代碼片段檢索提示模板并以可讀格式打印出來。然后可以根據應用程序的需要使用或修改該模板。 prompt = hub.pull("wfh/react-agent-executor") prompt.pretty_print() 使用 Ollama 平臺配置 Mistral llm = ChatOpenAI(model="mistral", api_key="ollama", base_url="http://localhost:11434/v1") 最后,我們將使用 LLM、一組工具 和提示模板 (prompt) 創建一個AI Agent執行器。該AI Agent被配置為對輸入做出反應,利用這些工具,并根據指定的提示生成響應,從而能夠以可控和高效的方式執行任務。 agent_executor = create_react_agent(llm, tools, messages_modifier=prompt) ================================ System Message ================================ You are a helpful assistant. ============================= Messages Placeholder ============================= {{messages}} 給定的代碼片段調用AI Agent執行器來處理輸入消息。此步驟旨在向AI Agent執行器發送查詢并接收響應。AI Agent將使用其配置的語言模型(在本示例中為 Mistral)、工具和提示來處理消息并生成適當的回復。 response = agent_executor.invoke({"messages": [("user", "explain artificial intelligence")]}) for message in response['messages']: print(message.content) AI Agent將生成以下響應。 小結LangGraph 以及 AI Agents 和 Ollama 等工具代表著在開發和部署本地化人工智能解決方案方面向前邁出的重要一步。通過利用 LangGraph 簡化各種人工智能組件的能力及其模塊化架構,開發人員可以創建多用途、可擴展的人工智能解決方案,既高效又能高度適應不斷變化的需求。 人工智能體為任務自動化和提高生產力提供了一種靈活的方法。這些AI Agent可以定制來處理各種功能,從簡單的任務自動化到復雜的決策過程,使其成為現代企業不可或缺的工具。 作為該生態系統的一部分,Ollama 通過提供專門的工具和服務來補充 LangGraph 的能力,從而提供額外的支持。總之,LangGraph 和 Ollama 的集成為構建高效的人工智能體提供了一個強大的框架。對于希望利用這些技術的潛力推動創新并在不斷發展的人工智能領域實現目標的任何人來說,希望本篇教程能給大家一些參考。 |
|