Spezi LLM Swift軟件包包含有助於在應用程序中集成LLM相關功能的模塊。該軟件包為本地LLM執行,基於OpenAI的LLM的使用以及在本地網絡中運行的FOG節點資源上運行的LLM提供了所有必要的工具。
![]() | ![]() | ![]() |
|---|---|---|
OpenAI LLM Chat View | Language Model Download | Local LLM Chat View |
您需要在XCode或Swift軟件包中將Spezillm Swift軟件包添加到您的應用程序中。
重要的
如果您的應用程序尚未配置為使用SPEZI,請按照Spezi設置文章進行設置,以設置Core Spezi基礎架構。
由於Spezi LLM包含針對特定LLM功能的各種不同目標,因此請遵循此讀數的相應目標部分中的其他設置指南。
Spezi LLM提供了許多目標,以幫助開發人員在其基於SPEZI的應用程序中集成LLM:
下面的部分強調了Spezillmlocal,Spezillmopenai和Spezillmfog目標的設置和基本用途,以便將語言模型集成到基於Spezi的應用程序中。
筆記
要了解有關單個目標使用情況的更多信息,請參考包裝的DOCC文檔。
該目標使開發人員可以輕鬆地在本地執行中型語言模型(LLMS)。該模塊允許您通過純粹基於SWIFT的API與本地運行的LLM進行交互,不需要與低級代碼的交互作用,這是在Spezillm目標基礎架構之上構建的。
重要的
Spezi LLM Local與模擬器不兼容。基礎的mlx-swift需要現代的金屬mtlgpufamily,並且模擬器不提供。
重要的
重要的是:要使用LLM本地目標,一些LLM需要將增加的存儲器限制為項目。
您可以在典型的SpeziAppDelegate中配置SPEZI本地LLM執行。在下面的示例中,來自Spezillm目標的LLMRunner負責在Spezi生態系統內提供LLM功能,從Spezillmlocal目標配置了LLMLocalPlatform 。這為LLMRunner準備了本地執行語言模型。
class TestAppDelegate : SpeziAppDelegate {
override var configuration : Configuration {
Configuration {
LLMRunner {
LLMLocalPlatform ( )
}
}
}
} 下面的代碼示例通過SPEZILLM LLMRunner展示了與本地LLMS的交互,該相互作用通過上面顯示的Configuration注入SwiftUI Environment 。
LLMLocalSchema定義了執行的LLMLocalSession的類型和配置。這種轉換是通過使用LLMLocalPlatform的LLMRunner完成的。通過LLMLocalSession/generate()推論返回一種AsyncThrowingStream ,可產生所有生成的String片。
struct LLMLocalDemoView : View {
@ Environment ( LLMRunner . self ) var runner
@ State var responseText = " "
var body : some View {
Text ( responseText )
. task {
// Instantiate the `LLMLocalSchema` to an `LLMLocalSession` via the `LLMRunner`.
let llmSession : LLMLocalSession = runner (
with : LLMLocalSchema (
model : . llama3_8B_4bit ,
formatChat : LLMLocalSchema . PromptFormattingDefaults . llama3
)
)
do {
for try await token in try await llmSession . generate ( ) {
responseText . append ( token )
}
} catch {
// Handle errors here. E.g., you can use `ViewState` and `viewStateAlert` from SpeziViews.
}
}
}
}
筆記
要了解有關Spezillmlocal使用的更多信息,請參考DOCC文檔。
一個模塊,使您可以在SPEZI應用程序中與OpenAI的基於GPT的大型語言模型(LLM)進行交互。 SpeziLLMOpenAI提供了一種基於Swift的API,用於與OpenAI GPT API進行交互,該API建立在Spezillm目標基礎設施之上。此外, SpeziLLMOpenAI為開發人員提供了特定的域名域語言來利用OpenAI函數調用機制。這可以實現OpenAI LLM和外部工具(例如Spezi生態系統)之間的結構化,雙向和可靠的通信。
為了在Spezi生態系統中使用OpenAI LLM,Spezillm LLMRunner需要在Spezi Configuration中以LLMOpenAIPlatform進行初始化。只有之後, LLMRunner才能用於推斷OpenAI LLMS。有關更多詳細信息,請參見Spezillm文檔。
import Spezi
import SpeziLLM
import SpeziLLMOpenAI
class LLMOpenAIAppDelegate : SpeziAppDelegate {
override var configuration : Configuration {
Configuration {
LLMRunner {
LLMOpenAIPlatform ( )
}
}
}
} 重要的
如果在MacOS上使用SpeziLLMOpenAI ,請確保通過Project_Name>簽名和能力> +功能將Keychain Access Groups添加到封閉XCode項目中。鑰匙鏈組的數組可以空空,只需要基本權利。
下面的代碼示例通過Spezillm LLMRunner展示了與OpenAI LLM的交互作用,該相互作用通過上面顯示的Configuration將其註入SwiftUI Environment 。
LLMOpenAISchema定義了執行的LLMOpenAISession的類型和配置。這種轉換是通過使用LLMOpenAIPlatform的LLMRunner進行的。通過LLMOpenAISession/generate()推斷返回一個AsyncThrowingStream ,該流程產生所有生成的String件。
import SpeziLLM
import SpeziLLMOpenAI
import SwiftUI
struct LLMOpenAIDemoView : View {
@ Environment ( LLMRunner . self ) var runner
@ State var responseText = " "
var body : some View {
Text ( responseText )
. task {
// Instantiate the `LLMOpenAISchema` to an `LLMOpenAISession` via the `LLMRunner`.
let llmSession : LLMOpenAISession = runner (
with : LLMOpenAISchema (
parameters : . init (
modelType : . gpt3_5Turbo ,
systemPrompt : " You're a helpful assistant that answers questions from users. " ,
overwritingToken : " abc123 "
)
)
)
do {
for try await token in try await llmSession . generate ( ) {
responseText . append ( token )
}
} catch {
// Handle errors here. E.g., you can use `ViewState` and `viewStateAlert` from SpeziViews.
}
}
}
}
筆記
要了解有關Spezillmopenai使用的更多信息,請參閱DOCC文檔。
SpeziLLMFog目標使您可以使用本地網絡中的霧節點計算資源上運行的LLM。 FOG節點通過MDN宣傳其服務,使客戶能夠發現所有服務於本地網絡中特定主機的FOG節點。然後, SpeziLLMFog將LLM推理作業動態派遣到本地網絡中的隨機霧節點,並將其響應呈現給用戶。
重要的
SpeziLLMFog需要在某些計算資源上託管的本地網絡中的SpeziLLMFogNode ,實際上執行了推理請求。 SpeziLLMFog提供了基於SpeziLLMFogNode Docker的軟件包,可輕鬆設置這些霧節點。有關更多詳細信息,請參見SPM軟件包的根級別的FogNode目錄以及相應的README.md 。
為了在SPEZI生態系統中使用FOG LLM,SPEZILLM LLMRunner需要在SPEZI Configuration中使用LLMFogPlatform初始化。只有之後, LLMRunner才能用於使用FOG LLMS進行推理。有關更多詳細信息,請參見Spezillm文檔。需要使用用於簽署FOG節點Web服務證書的自定義根CA證書初始化LLMFogPlatform (有關更多信息,請參見Fog Node Web服務證書(請參閱FogNode/README.md文檔)。使用SpeziLLMFog將root CA證書從FOG節點作為資源複製到應用程序,並使用它在Spezi Configuration中初始化LLMFogPlatform 。
class LLMFogAppDelegate : SpeziAppDelegate {
private nonisolated static var caCertificateUrl : URL {
// Return local file URL of root CA certificate in the `.crt` format
}
override var configuration : Configuration {
Configuration {
LLMRunner {
// Set up the Fog platform with the custom CA certificate
LLMRunner {
LLMFogPlatform ( configuration : . init ( caCertificate : Self . caCertificateUrl ) )
}
}
}
}
} 下面的代碼示例通過Spezillm LLMRunner展示了與霧LLM的相互作用,該相互作用通過上面顯示的Configuration將其註入SwiftUI Environment 。
LLMFogSchema定義了執行的LLMFogSession的類型和配置。這種轉換是通過使用LLMFogPlatform的LLMRunner完成的。通過LLMFogSession/generate()推斷返回一種產生所有生成的String件的AsyncThrowingStream 。 LLMFogSession在設置後自動發現本地網絡中的所有可用LLM FOG節點,並將LLM推理作業發送到FOG計算資源,並將響應播放並浮出水面。
重要的
LLMFogSchema接受封閉,該封閉返回授權令牌,每個請求將通過LLMFogParameters/init(modelType:systemPrompt:authToken:) Bearer HTTP字段中的霧節點)傳遞給霧節點。令牌是通過每個LLM推理請求的關閉而創建的,因為LLMFogSession可能會持久,因此令牌可能會過期。確保閉合適當緩存令牌,以防止不必要的令牌刷新對外部系統的刷新。
struct LLMFogDemoView : View {
@ Environment ( LLMRunner . self ) var runner
@ State var responseText = " "
var body : some View {
Text ( responseText )
. task {
// Instantiate the `LLMFogSchema` to an `LLMFogSession` via the `LLMRunner`.
let llmSession : LLMFogSession = runner (
with : LLMFogSchema (
parameters : . init (
modelType : . llama7B ,
systemPrompt : " You're a helpful assistant that answers questions from users. " ,
authToken : {
// Return authorization token as `String` or `nil` if no token is required by the Fog node.
}
)
)
)
do {
for try await token in try await llmSession . generate ( ) {
responseText . append ( token )
}
} catch {
// Handle errors here. E.g., you can use `ViewState` and `viewStateAlert` from SpeziViews.
}
}
}
}
筆記
要了解有關Spezillmfog使用的更多信息,請參考DOCC文檔。
歡迎對該項目的貢獻。請確保首先閱讀貢獻指南和貢獻者契約守則。
該項目已根據MIT許可獲得許可。有關更多信息,請參見許可證。