Swift et l'IA : comment utiliser ChatGPT dans le développement d'applications iOS

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Swift rencontre l'intelligence artificielle : pourquoi c'est important maintenant

\n\n

Imaginez : vous développez une application pour iOS, et soudain, votre utilisateur peut simplement lui demander : « Comment préparer des pâtes à la carbonara ? » — et obtenir non pas un lien vers Wikipédia, mais une réponse vivante et détaillée. Ou demander : « Écris une lettre au patron concernant le report de la date limite » — et en une seconde, le brouillon est prêt. Cela ressemble à de la magie ? Non, c'est Swift + ChatGPT.

\n\n

En 2024, l'intégration de modèles linguistiques dans les applications mobiles n'est plus réservée aux géants. Désormais, tout développeur Swift peut ajouter de l'intelligence artificielle à son application en une soirée. Et aujourd'hui, je vais vous montrer comment faire — avec du code réel, sans blabla et en comprenant ce qui se passe sous le capot.

\n\n

D'ailleurs, si vous débutez tout juste votre parcours avec Swift et souhaitez approfondir les bases, PythonLib est un excellent endroit pour consolider vos connaissances avant de plonger dans l'IA. Et maintenant, passons aux choses sérieuses.

\n\n

Étape 1. Préparer l'environnement : ce dont vous avez besoin pour travailler avec ChatGPT en Swift

\n\n

Avant d'écrire du code, assurons-nous que vous avez tout le nécessaire. Vous aurez besoin de :

\n\n
    \n
  • Xcode 15.0 ou plus récent (de préférence la dernière version)
  • \n
  • iOS 16.0+ (pour utiliser async/await sans bricolage)
  • \n
  • Une clé API d'OpenAI (inscrivez-vous sur platform.openai.com, créez une clé)
  • \n
  • Une bibliothèque pour travailler avec le réseau — nous utiliserons URLSession, donc aucune dépendance externe n'est nécessaire
  • \n
\n\n

Conseil important : ne stockez jamais la clé API directement dans le code. Utilisez des fichiers .xcconfig ou un proxy serveur. Dans les exemples, je montrerai comment lire la clé depuis Info.plist, mais en production, chiffrez-la ou utilisez un backend.

\n\n

Étape 2. Créer la structure de la requête vers ChatGPT

\n\n

ChatGPT utilise l'API OpenAI, qui accepte du JSON et renvoie la réponse du modèle. Créons une structure simple mais fonctionnelle pour envoyer des messages.

\n\n

Modèles de données

\n\n
// Modèle de message\nstruct Message: Codable {\n    let role: String    // "system", "user" ou "assistant"\n    let content: String\n}\n\n// Modèle de requête\nstruct ChatGPTRequest: Codable {\n    let model: String\n    let messages: [Message]\n    let temperature: Double?\n}\n\n// Modèle de réponse\nstruct ChatGPTResponse: Codable {\n    struct Choice: Codable {\n        let message: Message\n    }\n    let choices: [Choice]\n}\n
\n\n

Notez le paramètre temperature — c'est le paramètre de créativité. Une valeur de 0.0 rend les réponses strictes et factuelles, 1.0 les rend créatives. Pour un chatbot, réglez-le sur 0.7, pour la génération d'idées, sur 0.9.

\n\n

Service pour travailler avec l'API

\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        // Lecture de la clé depuis Info.plist (uniquement pour les 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: "Tu es un assistant utile pour développeur iOS. Réponds brièvement, en français."),\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

Book Recommendations