每當向他人介紹 Semantic Kernel, 會得到的第一個問題就是 Semantic Kernel 類似於LangChain嗎,或者是c# 版本的LangChain嗎? 爲了全面而不想重複的回答這個問題,因此我寫下這篇文章。
在 ChatGPT 之前,構建 集成AI的應用程序的主要分爲兩個步驟:
- 機器學習工程師/數據科學家創建模型,然後通過 REST API 終結點發布此模型。
- 應用程序開發人員通過傳遞確定性參數來調用 REST API 終結點。
有了GPT以後 構建與 AI 集成的應用程序過去要簡單得多,應用程序員開發人員直接訪問OpenAI的REST API,將它集成到我們的應用中,但是真正開始集成的時候才發現挑戰不僅僅是調用API,例如:
- 如何將OpenAI與內部知識搜索(內部文檔,數據庫,SharePoint等)集成
- 如何將OpenAI與其他系統集成,如SAP,ERP,CRM,HR系統,IT票務系統等。
- 如何有效地跟蹤聊天對話歷史記錄
- 如何以可配置的方式將提示實現到代碼中(而不是使它們看起來像魔術字符串))
- 如何最小化使用的Token
- 如何在服務限制內和圍繞服務配額和限制[1]工作 - 更具體地說,圍繞最大請求數/分鐘
- 以及更多...
這中間需要有一個業務流程協調程序。該服務編排來自各種依賴項(OpenAI、Azure 搜索、數據庫等)的輸入和輸出,並將其拼接在一起。
- 這種模式可以從微軟最近發佈的Copilot服務中看出。請注意,GitHub Copilot、M365 Copilot、D365 Copilot 和Security Copilot的架構之間都有一個“Copilot Service”,用於將應用程序與LLM模型和其他服務鏈接起來。
- 另請注意,微軟在架構圖中提到了的是“LLM”,而不是“GPT-4”。這是因爲業務流程協調程序服務同時使用不同的 LLM 來實現其目的。
這就是像Semantic Kernel和LangChain這樣的庫的用武之地。這些庫可幫助開發人員:
- 管理對話歷史記錄,這是ChatCompletionAPI 希望開發人員弄清楚的。
- 根據意圖規劃方法。
- 爲該方法實現“鏈接”
- 管理Memory和服務連接要求(即對話歷史記錄、外部 API 等)
LangChain目前是“最成熟”(但相當新的)擁有大型開源社區的。第一次提交是在 2022 年10月。
- 它支持Python和TypeScript,其中Python具有更多功能[2]。
- 大多數在線文章都使用Jupyter筆記本 演示 LangChain,LangChai也不把自己被稱爲“SDK”,它是爲習慣於使用筆記本的ML工程師構建的。
- 應用程序開發人員需要弄清楚如何組織代碼和使用 LangChain,軟件工程方面的組織相對SK 顯得差了很多。
- LangChain由Harrison Chase[3]創立,他的職業是ML工程師,更多是從ML 工程師角度架構應用。
- LangChain開源社區的貢獻非常活躍,目前已經有29k star。
- 採用MIT開源協議
Semantic Kernel(SK)是相對“較新的”,但它是爲開發人員構建的。第一次提交是在 2023 年 2 月。
- 它主要面向 C# 開發人員,它也支持 Python,(功能另請參閱功能奇偶校驗文檔[4])。
- 因爲它是爲開發人員構建的,所以它被稱爲輕量級 SDK,可幫助開發人員將代碼組織到內置於 Planner 中的技能、記憶和連接器中(在此處閱讀更多內容)。
- 示例代碼中有很多業務流程協調程序 Web 服務的示例。
- SK由一個以軟件開發工程能力超強的組織(微軟)創立。開源社區規模也相當活躍,目前已經有5.7k star。
- 它是由微軟創立的,文檔方面做的也非常好,它有一個官方的支持頁面[5]和LinkedIn學習課程[6]。
- 由於 SK 在構建時考慮了應用,因此有一個 MS Graph連接器工具包[7],適用於需要與日曆、電子郵件、OneDrive 等集成的方案。
- 微軟絕對是接入 OpenAI 最快也是最早的大型公司,他們發佈的“Semantic Kernel” 是工程實踐的結晶,同時發佈了LLM創建軟件的九項原則,稱之爲Schillace Laws of Semantic AI[8]https://learn.microsoft.com/zh-cn/semantic-kernel/howto/schillacelaws
這兩個庫我們選擇使用哪一個,我覺得主要的考慮因素是開發人員的技能,LLM 已經將機器學習的門檻降低到普通開發人員就可以開發AI應用,SK 在幫助應用開發人員開發AI方面的幫助會比LangChain更大,我會選擇採用SK來構建AI應用。
相關鏈接
- [1] 服務配額和限制: https://learn.microsoft.com/zh-cn/azure/cognitive-services/openai/quotas-limits
- [2] Langchain特性: https://langchain.com/features.html
- [3] Harrison Chase: https://github.com/hwchase17
- [4] SK功能奇偶校驗文檔: https://github.com/microsoft/semantic-kernel/blob/python-preview-archived-dont-delete/python/FEATURE_PARITY.md
- [5] SK支持頁面: http://aka.ms/sk/support
- [6] SK LinkedIn學習課程: https://www.linkedin.com/learning/introducing-semantic-kernel-building-ai-based-apps
- [7] MS Graph連接器工具包:https://learn.microsoft.com/en-us/semantic-kernel/concepts-sk/connectors#whats-the-ms-graph-connector-kit
- [8] Schillace Laws of Semantic AI:https://learn.microsoft.com/zh-cn/semantic-kernel/howto/schillacelaws
- [9] LangChain:Model as a Service粘合劑,被ChatGPT插件幹掉了嗎?: https://mp.weixin.qq.com/s/3coFhAdzr40tozn8f9Dc-w