import SwiftUI
import RunAnywhere
struct ContentView: View {
@State private var prompt = ""
@State private var response = ""
@State private var isLoading = false
@State private var isModelLoaded = false
var body: some View {
VStack(spacing: 20) {
// Model status
HStack {
Circle()
.fill(isModelLoaded ? .green : .gray)
.frame(width: 10, height: 10)
Text(isModelLoaded ? "Model Ready" : "Model Not Loaded")
.font(.caption)
}
// Input
TextField("Enter your prompt...", text: $prompt)
.textFieldStyle(.roundedBorder)
.padding(.horizontal)
// Generate button
Button(action: { Task { await generate() } }) {
HStack {
if isLoading {
ProgressView()
.scaleEffect(0.8)
}
Text(isLoading ? "Generating..." : "Generate")
}
.frame(maxWidth: .infinity)
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
.disabled(isLoading || prompt.isEmpty || !isModelLoaded)
.padding(.horizontal)
// Response
ScrollView {
Text(response)
.padding()
.frame(maxWidth: .infinity, alignment: .leading)
}
.background(Color.gray.opacity(0.1))
.cornerRadius(10)
.padding(.horizontal)
}
.padding()
.task {
await loadModel()
}
}
func loadModel() async {
do {
try await RunAnywhere.loadModel("llama-3.2-1b-instruct-q4")
isModelLoaded = true
} catch {
response = "Failed to load model: \(error.localizedDescription)"
}
}
func generate() async {
isLoading = true
defer { isLoading = false }
do {
let result = try await RunAnywhere.generate(
prompt,
options: LLMGenerationOptions(
maxTokens: 200,
temperature: 0.7
)
)
response = result.text
} catch {
response = "Error: \(error.localizedDescription)"
}
}
}