Swift与人工智能:如何在iOS应用开发中使用ChatGPT

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift遇见人工智能:为什么现在这很重要

\n\n

想象一下:你正在编写一个iOS应用,突然你的用户可以直接问它:“怎么做意大利面?”——然后得到的不是维基百科链接,而是一个生动、详细的回答。或者请求:“给老板写一封关于推迟截止日期的邮件”——一秒钟后草稿就准备好了。听起来像魔法?不,这是Swift + ChatGPT。

\n\n

在2024年,将语言模型集成到移动应用中已不再是巨头的专利。现在,任何Swift开发者都可以在一个晚上内为他们的应用添加人工智能。今天,我将向你展示如何做到这一点——使用真实代码,没有废话,并理解底层发生了什么。

\n\n

顺便说一句,如果你刚刚开始学习Swift,并希望更深入地了解基础知识,PythonLib是一个很好的地方,可以在深入AI之前打好基础。现在,让我们开始吧。

\n\n

第一步:准备环境——在Swift中使用ChatGPT需要什么

\n\n

在编写代码之前,让我们确保你拥有所有必要的东西。你需要:

\n\n
    \n
  • Xcode 15.0或更高版本(最好是最新版本)
  • \n
  • iOS 16.0+(以便使用async/await而无需变通方法)
  • \n
  • 来自OpenAI的API密钥(在platform.openai.com注册,创建一个密钥)
  • \n
  • 用于网络操作的库——我们将使用URLSession,因此不需要第三方依赖
  • \n
\n\n

重要提示:切勿将API密钥直接存储在代码中。使用.xcconfig文件或服务器代理。在示例中,我将展示如何从Info.plist读取密钥,但在生产环境中,务必加密或使用后端。

\n\n

第二步:创建向ChatGPT发送请求的结构

\n\n

ChatGPT使用OpenAI API,该API接受JSON并返回模型响应。让我们创建一个简单但功能齐全的结构来发送消息。

\n\n

数据模型

\n\n
// 消息模型\nstruct Message: Codable {\n    let role: String    // "system", "user" 或 "assistant"\n    let content: String\n}\n\n// 请求模型\nstruct ChatGPTRequest: Codable {\n    let model: String\n    let messages: [Message]\n    let temperature: Double?\n}\n\n// 响应模型\nstruct ChatGPTResponse: Codable {\n    struct Choice: Codable {\n        let message: Message\n    }\n    let choices: [Choice]\n}\n
\n\n

请注意temperature——这是创造性参数。值为0.0时,回答严格且基于事实;值为1.0时,回答富有创意。对于聊天机器人,设置为0.7;对于创意生成,设置为0.9。

\n\n

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        // 从Info.plist读取密钥(仅用于测试!)\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: "你是一个有用的iOS开发者助手。请用中文简要回答。"),\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                

博客

书籍推荐