Swift und KI: Wie man ChatGPT in der Entwicklung von iOS-Apps einsetzt

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Swift trifft künstliche Intelligenz: Warum das gerade jetzt wichtig ist

\n\n

Stellen Sie sich vor: Sie schreiben eine App für iOS, und plötzlich kann Ihr Benutzer sie einfach fragen: „Wie kocht man Pasta Carbonara?“ – und erhält nicht einen Link zu Wikipedia, sondern eine lebendige, ausführliche Antwort. Oder bitten: „Schreibe einen Brief an den Chef über die Verschiebung der Deadline“ – und nach einer Sekunde ist der Entwurf fertig. Klingt wie Magie? Nein, das ist Swift + ChatGPT.

\n\n

Im Jahr 2024 ist die Integration von Sprachmodellen in mobile Apps nicht mehr nur etwas für die Großen. Jeder Swift-Entwickler kann jetzt an einem Abend künstliche Intelligenz in seine App einbauen. Und heute zeige ich Ihnen, wie das geht – mit echtem Code, ohne überflüssige Informationen und mit dem Verständnis dafür, was unter der Haube passiert.

\n\n

Übrigens, wenn Sie gerade erst mit Swift beginnen und die Grundlagen vertiefen möchten, ist PythonLib ein großartiger Ort, um Ihre Basis aufzufrischen, bevor Sie in die KI eintauchen. Und jetzt – an die Arbeit.

\n\n

Schritt 1. Umgebung vorbereiten: Was Sie für die Arbeit mit ChatGPT in Swift benötigen

\n\n

Bevor wir Code schreiben, stellen wir sicher, dass Sie alles Nötige haben. Sie benötigen:

\n\n
    \n
  • Xcode 15.0 oder neuer (vorzugsweise die neueste Version)
  • \n
  • iOS 16.0+ (um async/await ohne Workarounds zu nutzen)
  • \n
  • API-Schlüssel von OpenAI (registrieren Sie sich auf platform.openai.com, erstellen Sie einen Schlüssel)
  • \n
  • Eine Bibliothek für die Netzwerkarbeit – wir verwenden URLSession, also sind keine externen Abhängigkeiten nötig
  • \n
\n\n

Wichtiger Tipp: Speichern Sie den API-Schlüssel niemals direkt im Code. Verwenden Sie .xcconfig-Dateien oder einen Server-Proxy. In den Beispielen zeige ich, wie man den Schlüssel aus Info.plist liest, aber in der Produktion sollten Sie ihn unbedingt verschlüsseln oder ein Backend verwenden.

\n\n

Schritt 2. Erstellen der Anfragestruktur an ChatGPT

\n\n

ChatGPT verwendet die OpenAI API, die JSON akzeptiert und die Antwort des Modells zurückgibt. Lassen Sie uns eine einfache, aber funktionale Struktur zum Senden von Nachrichten erstellen.

\n\n

Datenmodelle

\n\n
// Nachrichtenmodell\nstruct Message: Codable {\n    let role: String    // "system", "user" oder "assistant"\n    let content: String\n}\n\n// Anfragemodell\nstruct ChatGPTRequest: Codable {\n    let model: String\n    let messages: [Message]\n    let temperature: Double?\n}\n\n// Antwortmodell\nstruct ChatGPTResponse: Codable {\n    struct Choice: Codable {\n        let message: Message\n    }\n    let choices: [Choice]\n}\n
\n\n

Beachten Sie temperature – dies ist der Kreativitätsparameter. Ein Wert von 0.0 macht die Antworten streng und faktenbasiert, 1.0 macht sie kreativ. Für einen Chatbot setzen Sie 0.7, für die Ideengenerierung 0.9.

\n\n

Service für die API-Arbeit

\n\n
class ChatGPTService {\n    \n    private let apiKey: String\n    private let baseURL = "https://api.openai.com/v1/chat/completions"\n    \n    init() {\n        // Schlüssel aus Info.plist lesen (nur für Tests!)\n        guard let key = Bundle.main.object(forInfoDictionaryKey: "OPENAI_API_KEY") as? String else {\n            fatalError("API Key not found")\n        }\n        self.apiKey = key\n    }\n    \n    func sendMessage(_ text: String) async throws -> String {\n        let messages = [\n            Message(role: "system", content: "Du bist ein nützlicher Assistent für iOS-Entwickler. Antworte kurz und auf Deutsch."),\n            Message(role: "user", content: text)\n        ]\n        \n        let requestBody = ChatGPTRequest(\n            model: "gpt-3.5-turbo",\n            messages: messages,\n            temperature: 0.7\n        )\n        \n        var request = URLRequest(url: URL(string: baseURL)!)\n        request.httpMethod = "POST"\n        request.setValue("application/json", forHTTPHeaderField: "Content-Type")\n        request.setValue("Bearer \\(apiKey)", forHTTPHeaderField: "Authorization")\n        request.httpBody = try JSONEncoder().encode(requestBody)\n        \n        let (data, _) = try await URLSe                

Blogs

Buchempfehlungen