OpenAISwift

GitHub
1.7k 255 简单 1 次阅读 昨天MIT语言模型
AI 解读 由 AI 自动生成,仅供参考

OpenAISwift 是一个专为 Swift 开发者设计的开源库,旨在简化 iOS、macOS 等苹果平台应用与 OpenAI HTTP API(包括 ChatGPT)的集成过程。它充当了原生代码与人工智能服务之间的桥梁,让开发者无需手动处理复杂的网络请求和 JSON 数据解析,即可轻松在应用中调用文本生成、智能对话等强大功能。

该工具主要解决了 Swift 生态中缺乏官方或便捷客户端的问题,显著降低了接入门槛。无论是构建智能客服机器人、内容辅助创作工具,还是进行原型验证,开发者都能通过它快速实现 AI 能力落地。OpenAISwift 特别适合熟悉 Swift 语言的移动应用开发者、独立程序员以及希望将大模型能力融入苹果生态产品的技术团队。

其技术亮点在于全面支持现代 Swift 并发特性,同时提供传统的回调闭包写法,兼顾新旧项目需求。库内封装了完整的 API 参数选项,涵盖从基础的文本补全到多轮对话上下文管理,并预定义了多种模型类型供灵活选择。作为一个社区维护的项目,它通过 Swift Package Manager 和 CocoaPods 提供了简便的安装方式,帮助开发者高效、稳定地构建下一代智能应用。

使用场景

一位 iOS 开发者正在为一款教育类 App 开发"AI 口语陪练”功能,需要让应用能够实时理解用户输入并生成自然的对话回复。

没有 OpenAISwift 时

  • 开发者必须手动构建复杂的 HTTP 请求头、处理 JSON 序列化与反序列化,代码冗长且容易出错。
  • 难以直接利用 Swift 原生的 async/await 特性,导致回调嵌套严重,主线程阻塞风险高,界面易卡顿。
  • 缺乏类型安全的模型定义,调用 ChatGPT 或 GPT-4 接口时需反复查阅文档确认参数格式,调试效率极低。
  • 每次更新 API 版本或切换模型(如从 davinci 切换到 gpt-4)都需要大量修改底层网络代码,维护成本高昂。

使用 OpenAISwift 后

  • 仅需几行代码即可初始化客户端并发送请求,库自动处理底层网络通信与数据解析,大幅减少样板代码。
  • 完美支持 Swift 并发编程,通过 try await 语法即可异步获取对话结果,代码逻辑清晰且保证 UI 流畅响应。
  • 提供强类型的 ChatMessageOpenAIModelType 枚举,编译期即可检查参数错误,显著降低运行时崩溃概率。
  • 灵活配置模型参数(如 temperature、maxTokens),切换不同 AI 模型只需更改枚举值,无需重构核心逻辑。

OpenAISwift 将繁琐的 API 对接工作转化为简洁的类型安全调用,让 iOS 开发者能专注于打造卓越的 AI 交互体验。

运行环境要求

操作系统
  • macOS
  • Linux
  • Windows
GPU

未说明

内存

未说明

依赖
notes这是一个 Swift 编写的 OpenAI API 客户端库,并非本地运行的 AI 模型,因此不需要 GPU、特定显存或大量内存。它通过 HTTP 请求调用 OpenAI 云端服务,主要依赖有效的 OpenAI API Key。支持 Swift 并发 (async/await) 和传统回调写法。可通过 Swift Package Manager、CocoaPods 或手动复制源码集成到 iOS、macOS、watchOS、tvOS 或 Linux 项目中。
python不适用 (Swift 语言项目)
Swift 5.7+
Xcode (推荐)
Swift Package Manager 或 CocoaPods
OpenAISwift hero image

快速开始

GitHub Workflow Status (with branch)

Twitter Follow

Swift 中的 OpenAI API 客户端库

这是一个由社区维护的库,用于访问 OpenAI 的 HTTP API。完整的 API 文档可以在这里找到: https://beta.openai.com/docs

安装 💻

Swift 包管理器(推荐)

你可以使用 Swift 包管理器来集成该库,在 Package.swift 文件中添加以下依赖项,或者直接在 Xcode 中添加。

.package(url: "https://github.com/adamrushy/OpenAISwift.git", from: "1.2.0")

CocoaPods

CocoaPods 是一个适用于 Cocoa 项目的依赖管理工具。有关使用和安装说明,请访问其官网。要通过 CocoaPods 将 OpenAISwift 集成到你的 Xcode 项目中,请在你的 Podfile 中指定:

pod 'OpenAISwift'

手动方式

将源文件复制到你自己的项目中。

使用 🤩

在你的项目中导入框架:

import OpenAISwift

创建一个 OpenAI API 密钥,并将其添加到你的配置中:

let openAI = OpenAISwift(config: OpenAISwift.Config.makeDefaultOpenAI(apiKey: MY SECRET KEY))

该框架支持 Swift 并发;下面的每个示例都同时提供了 async/await 和完成处理程序两种版本。

补全

预测输入文本的补全内容。

openAI.sendCompletion(with: "Hello how are you") { result in // Result<OpenAI, OpenAIError>
    switch result {
    case .success(let success):
        print(success.choices.first?.text ?? "")
    case .failure(let failure):
        print(failure.localizedDescription)
    }
}

这将返回一个包含补全结果的 OpenAI 对象。

还支持其他 API 参数:

do {
    let result = try await openAI.sendCompletion(
        with: "What's your favorite color?",
        model: .gpt3(.davinci), // 可选的 `OpenAIModelType`
        maxTokens: 16,          // 可选的 `Int?`
        temperature: 1          // 可选的 `Double?`
    )
    // 使用结果
} catch {
    // ...
}

有关支持的完整模型列表,请参阅 OpenAIModelType.swift。更多关于模型的信息,请参阅 OpenAI API 文档

聊天

通过 ChatGPT(即 GPT-3.5)和 GPT-4(处于测试阶段)获取聊天对话的响应。

do {
    let chat: [ChatMessage] = [
        ChatMessage(role: .system, content: "You are a helpful assistant."),
        ChatMessage(role: .user, content: "Who won the world series in 2020?"),
        ChatMessage(role: .assistant, content: "The Los Angeles Dodgers won the World Series in 2020."),
        ChatMessage(role: .user, content: "Where was it played?")
    ]

    let result = try await openAI.sendChat(with: chat)
    // 使用结果
} catch {
    // ...
}

所有 API 参数均受支持,除了在消息完成之前进行流式传输之外:

do {
    let chat: [ChatMessage] = [...]

    let result = try await openAI.sendChat(
        with: chat,
        model: .chat(.chatgpt),         // 可选的 `OpenAIModelType`
        user: nil,                      // 可选的 `String?`
        temperature: 1,                 // 可选的 `Double?`
        topProbabilityMass: 1,          // 可选的 `Double?`
        choices: 1,                     // 可选的 `Int?`
        stop: nil,                      // 可选的 `[String]?`
        maxTokens: nil,                 // 可选的 `Int?`
        presencePenalty: nil,           // 可选的 `Double?`
        frequencyPenalty: nil,          // 可选的 `Double?`
        logitBias: nil                 // 可选的 `[Int: Double]?`(请参阅内联文档)
    )
    // 使用结果
} catch {
    // ...
}

图像(DALL·E)

根据提示生成一张图片。

openAI.sendImages(with: "A 3d render of a rocket ship", numImages: 1, size: .size1024) { result in // Result<OpenAI, OpenAIError>
    switch result {
    case .success(let success):
        print(success.data.first?.url ?? "")
    case .failure(let failure):
        print(failure.localizedDescription)
    }
}

编辑

根据提示和指令对文本进行编辑。

do {
    let result = try await openAI.sendEdits(
        with: "Improve the tone of this text.",
        model: .feature(.davinci),               // 可选的 `OpenAIModelType`
        input: "I am resigning!"
    )
    // 使用结果
} catch {
    // ...
}

内容审核

对文本进行分类以用于内容审核目的(更多信息请参阅 OpenAI 参考资料)。

do {
    let result = try await openAI.sendModeration(
        with: "Some harmful text...",
        model: .moderation(.latest)     // 可选的 `OpenAIModelType`
    )
    // 使用结果
} catch {
    // ...
}

嵌入

获取给定输入的向量表示,该表示可以被机器学习模型和算法轻松消费。(更多信息请参阅 OpenAI 参考资料)。

do {
    let result = try await openAI.sendEmbeddings(
        with: "The food was delicious and the waiter..."
    )
    // 使用结果
} catch {
    // ...
}

贡献 ❤️

我主要是出于兴趣而创建了这个库,我们可以添加更多的端点,并进一步探索这个库。欢迎提交 PR 来帮助扩展这个库。

许可证 📥

MIT 许可证(MIT)

版权所有 © 2022 Adam Rush

特此授予任何人免费获取本软件及与其相关的文档文件(“软件”)副本的权利,允许以任何方式处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售该软件的副本,并允许向其提供本软件的人进行上述操作,但须遵守以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。

“软件”按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于适销性、特定用途适用性和非侵权性担保。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该等责任是基于合同、侵权或其他原因,亦无论该等责任是否源于、与本软件有关或因使用本软件而产生。

版本历史

1.4.12023/07/11
1.4.02023/07/11

常见问题

相似工具推荐

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

143.9k|★★☆☆☆|今天
开发框架Agent语言模型

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|昨天
语言模型图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|2天前
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|昨天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|3天前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

75.1k|★★★☆☆|今天
语言模型图像开发框架