Swift e IA: como usar o ChatGPT no desenvolvimento de aplicativos iOS

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Swift encontra a inteligência artificial: por que isso é importante agora

\n\n

Imagine: você está escrevendo um aplicativo para iOS e, de repente, seu usuário pode simplesmente perguntar: "Como fazer massa carbonara?" — e receber não um link para a Wikipedia, mas uma resposta viva e detalhada. Ou pedir: "Escreva um e-mail para o chefe sobre o adiamento do prazo" — e em um segundo o rascunho está pronto. Parece mágica? Não, é Swift + ChatGPT.

\n\n

Em 2024, a integração de modelos de linguagem em aplicativos móveis deixou de ser privilégio dos gigantes. Agora, qualquer desenvolvedor Swift pode adicionar inteligência artificial ao seu aplicativo em uma noite. E hoje vou mostrar como fazer isso — com código real, sem enrolação e com compreensão do que acontece nos bastidores.

\n\n

A propósito, se você está começando no Swift e quer se aprofundar nos fundamentos, o PythonLib é um ótimo lugar para reforçar a base antes de mergulhar na IA. Agora, vamos ao que interessa.

\n\n

Passo 1. Preparando o ambiente: o que é necessário para trabalhar com ChatGPT em Swift

\n\n

Antes de escrever código, vamos garantir que você tenha tudo o que precisa. Você vai precisar de:

\n\n
    \n
  • Xcode 15.0 ou superior (de preferência a versão mais recente)
  • \n
  • iOS 16.0+ (para usar async/await sem gambiarras)
  • \n
  • Chave de API da OpenAI (registre-se em platform.openai.com, crie uma chave)
  • \n
  • Biblioteca para trabalhar com rede — usaremos URLSession, então não são necessárias dependências externas
  • \n
\n\n

Dica importante: nunca armazene a chave de API diretamente no código. Use arquivos .xcconfig ou um proxy de servidor. Nos exemplos, mostrarei como ler a chave do Info.plist, mas em produção, criptografe ou use um backend.

\n\n

Passo 2. Criando a estrutura da requisição para o ChatGPT

\n\n

O ChatGPT usa a API da OpenAI, que recebe JSON e retorna a resposta do modelo. Vamos criar uma estrutura simples, mas funcional, para enviar mensagens.

\n\n

Modelos de dados

\n\n
// Modelo de mensagem\nstruct Message: Codable {\n    let role: String    // "system", "user" ou "assistant"\n    let content: String\n}\n\n// Modelo de requisição\nstruct ChatGPTRequest: Codable {\n    let model: String\n    let messages: [Message]\n    let temperature: Double?\n}\n\n// Modelo de resposta\nstruct ChatGPTResponse: Codable {\n    struct Choice: Codable {\n        let message: Message\n    }\n    let choices: [Choice]\n}\n
\n\n

Observe o temperature — é o parâmetro de criatividade. O valor 0.0 torna as respostas rigorosas e factuais, 1.0 as torna criativas. Para um chatbot, use 0.7; para geração de ideias, 0.9.

\n\n

Serviço para trabalhar com a 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        // Lê a chave do Info.plist (apenas para testes!)\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: "Você é um assistente útil para desenvolvedores iOS. Responda de forma concisa, em português."),\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