1.人機協同三種模式生成式AI的智能演化至今,人機協同呈現了三種模式: 嵌入(embedding)模式。用戶通過與AI進行語言交流,使用提示詞來設定目標,然后AI協助用戶完成這些目標,比如普通用戶向生成式AI輸入提示詞創作小說、音樂作品、3D內容等。在這種模式下,AI的作用相當于執行命令的工具,而人類擔任決策者和指揮者的角色。 副駕駛(Copilot)模式。2021年微軟在GitHub首次引入了Copilot(副駕駛)的概念。GitHub Copilot是一個輔助開發人員編寫代碼的AI服務。2023年5月,微軟在大模型的加持下,Copilot迎來全面升級,推出Dynamics 365 Copilot、Microsoft 365 Copilot和Power Platform Copilot等,并提出“Copilot是一種全新的工作方式”的理念。在這種模式下,人類和AI更像是合作伙伴,共同參與到工作流程中,各自發揮作用。AI介入到工作流程中,從提供建議到協助完成流程的各個階段。例如,在軟件開發中,AI可以為程序員編寫代碼、檢測錯誤或優化性能提供幫助。人類和AI在這個過程中共同工作,互補彼此的能力。AI更像是一個知識豐富的合作伙伴,而非單純的工具。 智能體(Agent)模式。人類設定目標和提供必要的資源(例如計算能力),AI獨立地承擔大部分工作,最后人類監督進程以及評估最終結果。這種模式下,AI充分體現了智能體的互動性、自主性和適應性特征,接近于獨立的行動者,而人類則更多地扮演監督者和評估者的角色。
人機協同三種模式示意圖: 
2. AI Agent基本框架OpenAI內部工程師Weng Lilian 在《LLM Powered Autonomous Agents》文章中將AI Agent定義為,以大語言模型為大腦驅動,具有自主理解感知、規劃、記憶和使用工具的能力,能自動化執行完成復雜任務的系統。 基于LLM驅動的Agent基本框架: 
它具有記憶、規劃、行動和使用工具四個主要模塊: 記憶(Memory)。記憶模塊負責存儲信息,包括過去的交互、學習到的知識,甚至是臨時的任務信息。有效的記憶機制能夠保障智能體在面對新的或復雜的情況時,調用以往的經驗和知識。例如,記憶功能的聊天機器人可以記住用戶的偏好或先前的對話內容,提供更個性化和連貫的交流體驗。它分為短期記憶和長期記憶:a.短期記憶,用于上下文學習;b.長期記憶,提供長時間保留和回憶信息的能力,通常通過外部向量數據庫和快速檢索實現。長期記憶積累了大量行業領域的數據和知識,使智能體更強大、更具行業深度、個性化和專業化能力。 規劃(Planning)。規劃模塊包括事前規劃和事后反思兩個階段。在事前規劃階段,智能體通過預測和決策制定來規劃未來行動。例如,在執行復雜任務時,智能體將大目標分解為可管理的子目標,以高效地規劃一系列步驟或行動,以達到預期結果。在事后反思階段,智能體能夠檢查和改進制定計劃中存在的不足之處。它會反思錯誤和不足,并吸取經驗教訓進行改進。這些經驗將被納入長期記憶中,幫助智能體避免錯誤,并更新其對世界的認知。 工具使用(Tool use)。工具使用模塊指的是智能體能夠利用外部資源或工具來執行任務。如學習調用外部API來獲取模型權重中缺失的額外信息,包括當前信息、代碼執行能力、對專有信息源的訪問等,以此來補足LLM自身不足。例如LLM的訓練數據不是實時更新的,這時可以使用工具訪問互聯網來獲取最新信息。智能體使用工具比人類更為高效,通過調用不同的API或工具,完成復雜任務和輸出高質量結果,這種使用工具的方式也代表了智能體的一個重要特點和優勢。 行動(Action)。行動模塊是智能體實際執行決定或響應的部分。面對不同的任務,智能體系統有一個完整的行動策略集,在決策時可以選擇需要執行的行動,比如記憶檢索、推理、學習、編程等。
這四個模塊相互配合使智能體能夠在更廣泛的情境中采取行動和作出決策,以更智能、更高效的方式執行復雜任務。 基于大模型的Agent不僅可以讓每個人都有增強能力的專屬智能助理,還將改變人機協同的模式,帶來更為廣泛的人機融合。 2.1 垂直領域AI Agent 實現路徑
實現AI Agent關鍵點在于,LLM模型需要具備思維鏈(Chain of Thought,CoT)與工具調用(Function Call)的能力,需要一個應用框架與環境、數據進行交互。垂直領域 AI Agent 整體架構示意圖:  用戶輸入的文檔或問題,首先經過文本分割模塊,將長句子分割為文本塊,輸入到Embedding模型,實現向量化進行文本相似性計算,最后將相似的k個文本與問題,輸入到LLM模型中,LLM模型通過理解感知、規劃、記憶和使用工具完成對問題的回答。AI Agent 整體流程示意圖: 
2.2 LangChain概述LangChain 是一個用于開發由語言模型驅動的應用程序的框架。主要作用為允許與 LLM 模型進行交互,使用 LLM 模型與外部數據源進行連接。 實現例如: LLM 調用 Prompt管理,支持各種自定義模板 對索引的支持 Chains LLMChain 各種工具Chain LangChainHub
LangChain組件 Loader 加載器 從指定源進行加載數據的。比如:文件夾 DirectoryLoader、Azure 存儲 AzureBlobStorageContainerLoader、CSV文件 CSVLoader、印象筆記 EverNoteLoader、Google網盤 GoogleDriveLoader、任意的網頁 UnstructuredHTMLLoader、PDF PyPDFLoader、S3 S3DirectoryLoader/S3FileLoader、 YoutubeLoader 等,官方提供許多加載器可使用。 Document 文檔 當使用Loader加載器讀取到數據源后,數據源需要轉換成 Document 對象后,后續才能進行使用。 Text Spltters 文本分割 為什么需要分割文本?因為不管是把文本當作 prompt 發給 openai api ,還是使用 openai api embedding 功能都是有字符限制的,需要使用文本分割器去分割加載的 Document。 Vectorstores 向量數據庫 數據相關性搜索其實是向量運算。所以,不管我們是使用 openai api embedding 功能還是直接通過向量數據庫直接查詢,都需要將我們的加載進來的數據 Document 進行向量化,才能進行向量運算搜索。 Chain 鏈 Chain 理解為任務。一個 Chain 就是一個任務,多個任務組成一個Chain鏈。 Agent 代理 Agent可以動態的選擇和調用Chain鏈或者已有的工具。 Embedding 用于計算文本的相關性。這個也是 OpenAI API 能實現構建自己知識庫的關鍵所在。 2.3 思維鏈(Chain of Thought) 2021年,提示學習(prompt learning)浪潮興起,而早在2020年,OpenAI 在《Language Models are Few-Shot Learners》論文中提出了如何使用 prompt learning 提升大模型的推理能力。 論文中提出了 Zero-shot、One-shot、Few-shot 三種不同的 prompt 方法 Few-Shot(FS)是指模型在推理時給予少量樣本,但不允許進行權重更新。對于一個典型數據集,Few-shot 有上下文和樣例。Few-shot 的工作方式是提供 K 個樣本,然后期望模型生成對應的結果。通常將 K 設置在 10 到 100 的范圍內,因為這是可以適應模型上下文窗口的示例數量(nctx = 2048)。Few-shot 的主要優點是大幅度降低了對特定任務數據的需求,并減少了從微調數據集中學習過度狹窄分布。主要缺點是該方法的結果迄今為止遠不如最先進的微調模型,仍需要一小部分特定任務的數據。 One-Shot(1S)與 Few-Shot 類似,只允許一個樣本(除了任務的自然語言描述外)。將 One-Shot 與 Few-Shot、Zero-Shot 區分開的原因是它最接近某些任務與人類溝通的方式。相比之下,如果沒有示例,有時很難傳達任務的內容或格式。 Zero-Shot(0S)和 One-shot 類似,但不允許提供樣本,只給出描述任務的自然語言指令。在某些情況下,即使是人類,在沒有例子的情況下,也可能難以理解任務的格式。例如,如果要求某人“制作一張關于200米沖刺世界紀錄的表格”,這個請求可能是模棱兩可的,因為可能不清楚表格應該具有什么格式或包含什么內容。然而,Zero-shot 是最接近人類執行任務的方法。
即使是 Few-Shot,還是存在較大的缺陷的。如果你的問題相對簡單,不需要什么邏輯推理,可能靠大模型背答案就能做得不錯,但是對于一些需要推理的問題,一些簡單的算術應用題,大模型就大概率不行。 于是,思維鏈(Chain-of-Thought,CoT)很自然地被提出了。 2022 年,在 Google 發布的論文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中首次提出,通過讓大模型逐步參與將一個復雜問題分解為一步一步的子問題并依次進行求解的過程可以顯著提升大模型的性能。而這一系列推理的中間步驟就被稱為思維鏈(Chain of Thought)。 
當人類指令輸入 Agent 主體后,Agent 主體通過一系列計劃、決策與控制,使用工具與外部環境互動。 Agent 主體的大模型是模擬人類智能決策流程的核心,在許多 Agent 需要處理的任務中,Agent 的“先天知識”并不包含解決任務的直接答案,因此 Agent 需要在一系列與外部環境的交互循環中,制定計劃,做出決策,執行行動,收到反饋等,在整個計劃、決策與控制的循環中,大模型需要具備“感知CoT”,“記憶CoT”與“推理CoT”的能力,如下圖所示, 思維鏈CoT可以從這三個方面來“賦能” Agent。 
2.4 工具調用(Function Call)LLM模型(Function Call)的本質就是讓大模型通過微調學會根據prompt中的函數的定義學會下一步應該調用哪個函數,然后我們解析大模型預測的文本結果去執行對應的函數,最后再把執行的結果拼接到prompt中,讓大模型繼續預測后續的步驟。 主要的步驟有6步: 定義工具 用戶提出問題 LLM模型根據工具和用戶問題預測是否需要使用工具,如果需要就預測出要調用哪個工具以及輸入參數 系統發現大模型預測要使用工具,就調用對應的函數 系統將調用結果拼接到prompt中 大模型根據函數調用結果回答用戶問題

3. AI Agent面臨的挑戰 AI Agent 在未知領域中的泛化能力 AI Agent 的過度交互問題 如何實現個性化 Agent 如何建立多智能體社會 AI Agent 的安全問題 如何建立 AI Agent 能力評估
LangChain-Chinese-Getting-Started-Guide: https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide langchain Introduction: https://python./en/latest/ LangChain-Chatchat: https://zhipu-ai./wiki/QiLtwks1YioOSEkCxFIcAEWNnzb LLM Powered Autonomous Agents: http://lilianweng./posts/2023-06-23-agent/ Language Models are Few-Shot Learners: https:///pdf/2005.14165.pdf Chain-of-Thought Prompting Elicits Reasoning in Large Language Models: https:///abs/2201.11903 ChatGLM3 的工具調用FunctionCalling實現原理: https://zhuanlan.zhihu.com/p/664233831
|