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 기능에 대한 다양한 대상이 포함되어 있으므로이 readme의 각 대상 섹션의 추가 설정 안내서를 따르십시오.
Spezi LLM은 개발자가 SPEZI 기반 애플리케이션에 LLM을 통합 할 수 있도록 여러 가지 목표를 제공합니다.
아래 섹션은 Spezi 기반 애플리케이션에 언어 모델을 통합하기 위해 SpezillMlocal, Spezillmopenai 및 SpezillMfog Targets의 설정 및 기본 사용을 강조합니다.
메모
개별 목표의 사용법에 대한 자세한 내용은 패키지의 DOCC 문서를 참조하십시오.
대상을 통해 개발자는 중간 크기의 언어 모델 (LLMS)을 로컬에서 쉽게 실행할 수 있습니다. 이 모듈을 사용하면 순수하게 스위프트 기반 API를 통해 로컬 실행 LLM과 상호 작용할 수 있습니다. Spezillm 대상의 인프라 위에 구축하는 저수준 코드와의 상호 작용이 필요하지 않습니다.
중요한
Spezi LLM Local은 시뮬레이터와 호환되지 않습니다. 기본 mlx-swift
에는 최신 금속 MTLGPUFAMILY가 필요하며 시뮬레이터는이를 제공하지 않습니다.
중요한
중요 : LLM 로컬 대상을 사용하려면 일부 LLM은 프로젝트에 메모리 제한 자격을 추가해야합니다.
일반적인 SpeziAppDelegate
내에서 SPEZI 로컬 LLM 실행을 구성 할 수 있습니다. 아래의 예에서, Spezi Ecosystem 내에서 LLM 기능을 제공하는 Spezillm Target의 LLMRunner
SpezillMlocal Target의 LLMLocalPlatform
으로 구성됩니다. 이를 통해 LLMRunner
언어 모델을 로컬로 실행할 수 있습니다.
class TestAppDelegate : SpeziAppDelegate {
override var configuration : Configuration {
Configuration {
LLMRunner {
LLMLocalPlatform ( )
}
}
}
}
아래의 코드 예는 Spezillm LLMRunner
통한 로컬 LLM과의 상호 작용을 보여 주며, 위에 표시된 Configuration
통해 Swiftui Environment
에 주입됩니다.
LLMLocalSchema
는 실행 된 LLMLocalSession
의 유형 및 구성을 정의합니다. 이 변환은 LLMLocalPlatform
사용하는 LLMRunner
통해 이루어집니다. LLMLocalSession/generate()
를 통한 추론은 생성 된 모든 String
조각을 생성하는 AsyncThrowingStream
을 반환합니다.
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
Spezillm Target의 인프라 위에 구축 된 Openai GPT API와 상호 작용하기위한 순수한 신속한 API를 제공합니다. 또한 SpeziLLMOpenAI
개발자에게 OpenAI 기능 호출 메커니즘을 활용하기 위해 선언적 도메인 특정 언어를 제공합니다. 이를 통해 OpenAI LLM과 Spezi 생태계와 같은 외부 도구 간의 구조화되고 양방향 및 신뢰할 수있는 커뮤니케이션이 가능합니다.
Spezi 생태계 내에서 Openai LLM을 사용하려면 Spezillm LLMRunner
LLMOpenAIPlatform
과 함께 Spezi Configuration
에서 초기화해야합니다. 이후에야 LLMRunner
OpenAI LLM의 추론에 사용될 수 있습니다. 자세한 내용은 Spezillm 설명서를 참조하십시오.
import Spezi
import SpeziLLM
import SpeziLLMOpenAI
class LLMOpenAIAppDelegate : SpeziAppDelegate {
override var configuration : Configuration {
Configuration {
LLMRunner {
LLMOpenAIPlatform ( )
}
}
}
}
중요한
MacOS에서 SpeziLLMOpenAI
사용하는 경우 Keychain Access Groups
Project_name> 서명 및 기능> + 기능을 통해 Xcode 프로젝트에 동봉하는 자격을 추가하십시오. 키 체인 그룹의 배열은 비어있을 수 있으며 기본 자격 만 필요합니다.
아래 코드 예는 Spezillm LLMRunner
통한 OpenAI LLM과의 상호 작용을 보여 주며, 위에 표시된 Configuration
통해 Swiftui Environment
에 주입됩니다.
LLMOpenAISchema
는 실행 된 LLMOpenAISession
의 유형과 구성을 정의합니다. 이 변환은 LLMOpenAIPlatform
사용하는 LLMRunner
통해 이루어집니다. LLMOpenAISession/generate()
통한 추론은 생성 된 모든 String
조각을 산출하는 AsyncThrowingStream
을 반환합니다.
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
대상을 사용하면 로컬 네트워크 내에서 FOG 노드 컴퓨팅 리소스에서 실행되는 LLM을 사용할 수 있습니다. FOG 노드는 MDNS를 통해 서비스를 광고하여 클라이언트가 로컬 네트워크 내에서 특정 호스트를 제공하는 모든 포그 노드를 발견 할 수 있습니다. 그런 다음 SpeziLLMFog
LLM 추론 작업을 로컬 네트워크 내의 임의의 FOG 노드로 동적으로 발송하고 응답을 사용자에게 표면으로 스트리밍합니다.
중요한
SpeziLLMFog
실제로 추론 요청을 수행하는 일부 컴퓨팅 리소스에서 호스팅 된 로컬 네트워크 내에 SpeziLLMFogNode
필요합니다. SpeziLLMFog
이러한 포그 노드를 쉽게 설정할 수있는 SpeziLLMFogNode
Docker 기반 패키지를 제공합니다. 자세한 내용 README.md
SPM 패키지의 루트 레벨의 FogNode
디렉토리를 참조하십시오.
Spezi 생태계 내에서 Fog LLM을 사용하려면 Spezillm LLMRunner
LLMFogPlatform
과 함께 Spezi Configuration
에서 초기화해야합니다. 이후에야 LLMRunner
안개 LLM과의 추론에 사용될 수 있습니다. 자세한 내용은 Spezillm 설명서를 참조하십시오. LLMFogPlatform
은 FOG 노드 웹 서비스 인증서에 서명하는 데 사용 된 사용자 정의 루트 CA 인증서로 초기화되어야합니다 (자세한 내용은 FogNode/README.md
문서 참조). SpeziLLMFog
사용하여 FOG 노드에서 루트 CA 인증서를 자원으로 자원으로 복사하고 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
통한 Fog LLM과의 상호 작용을 보여 주며, 위에 표시된 Configuration
통해 Swiftui Environment
에 주입됩니다.
LLMFogSchema
는 실행 된 LLMFogSession
의 유형 및 구성을 정의합니다. 이 변환은 LLMFogPlatform
사용하는 LLMRunner
통해 이루어집니다. LLMFogSession/generate()
를 통한 추론 ()은 생성 된 모든 String
조각을 생성하는 AsyncThrowingStream
을 반환합니다. LLMFogSession
은 설정시 로컬 네트워크 내에서 사용 가능한 모든 LLM 포그 노드를 자동으로 발견하고 LLM 추론 작업을 FOG 컴퓨팅 리소스로 발송하여 응답을 스트리밍하고 사용자에게 표면을 표면합니다.
중요한
LLMFogSchema
LLMFogParameters/init(modelType:systemPrompt:authToken:)
통해 Bearer
HTTP 필드의 FOG 노드에 모든 요청과 함께 전달되는 권한 부여 토큰을 반환하는 폐쇄를 수락합니다. LLMFogSession
이 오래 지속될 수 있고 토큰이 만료 될 수 있으므로 토큰은 모든 LLM 추론 요청시 폐쇄를 통해 생성됩니다. 외부 시스템에 불필요한 토큰 새로 고침 왕복을 방지하기 위해 폐쇄가 적절하게 토큰을 캐시합니다.
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 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스를 참조하십시오.