OpenAI

这个由社区维护的 Swift 库提供了一种简单的方式来使用 OpenAI REST API

SPM Compatible Cocoapods Compatible Carthage Compatible License: MIT

安装

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/exyte/OpenAI")
]

CocoaPods

要安装 OpenAI,只需将以下行添加到您的 Podfile 中

pod 'ExyteOpenAI'

Carthage

要使用 Carthage 将 OpenAI 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "exyte/OpenAI"

要求

开发路线图

助手 API 用法

  1. 获取 您的 API 密钥。 不要与他人分享或在任何客户端代码中暴露它。

⚠️OpenAI 强烈建议客户端应用程序的开发人员通过单独的后端服务代理请求,以确保其 API 密钥的安全。 API 密钥可以访问和操作客户的账单、使用情况和组织数据,因此暴露它们会带来重大风险。

  1. 创建一个客户端实例。
let client = OpenAI(apiKey: "YOUR_API_KEY_HERE")
  1. 通过定义助手的指令和模型来创建一个助手。
let assistantPayload = CreateAssistantPayload(model: .gpt_4o, name: "My Assistant", instructions: "Be funny")
client.createAssistant(from: assistantPayload) <...>
  1. 创建一个线程来开始对话。
let threadPayload = CreateThreadPayload(messages: [...], metadata: [...])
client.createThread(from: threadPayload) <...>
  1. 从用户向线程添加消息。
let messagePayload = CreateMessagePayload(role: .user, content: "Hello!")
client.createMessage(in: threadId, payload: messagePayload) <...>
  1. 在线程上运行助手以生成响应。
client.createRun(in: threadId, payload: CreateRunPayload(assistantId: assistantId)) <...>
  1. 检查运行状态,直到它完成或失败。
client.retrieveRun(id: runId, from: threadId)
  1. 从助手检索消息。
let listPayload = ListPayload(after: lastMessageId)
client.listMessages(from: threadId, payload: listPayload) <...>

有关 OpenAI 助手 API 用法的更多详细信息,请参阅 platform.openai.com 和我们的 示例 部分。

可用端点

聊天

为给定的聊天会话创建一个模型响应。

创建聊天完成

createChatCompletion(
    from: CreateChatCompletionPayload(
        model: model,
        messages: [ChatCompletionMessage(role: .user, content: "Hello")]
    )
)

返回 ChatCompletion

模型

列出并描述 API 中可用的各种模型。 可以在 platform.openai.com 上找到模型列表及其差异。

列出模型

listModels()

返回 ObjectList<Model>

检索模型

retrieveModel(with: modelId)

返回 Model

删除微调模型

deleteModel(with: modelId)

返回 DeletionStatus

文件

文件用于上传可以与助手等功能一起使用的文档。

上传文件

uploadFile(payload: FilePayload(purpose: filePurpose, fileURL: fileURL))

返回 File

列出文件

listFiles()

返回 ObjectList<File>

检索文件

retrieveFile(id: fileId)

返回 File

删除文件

deleteFile(id: fileId)

返回 DeletionStatus

检索文件内容

retrieveFileContent(id: fileId, destinationURL: destinationURL)

返回 URL

助手

构建可以调用模型并使用工具来执行任务的助手。

创建助手

createAssistant(from: CreateAssistantPayload(model: model, name: name, ...))

返回 Assistant

列出助手

listAssistants(payload: ListPayload(limit: limit, ...))

返回 ObjectList<Assistant>

检索助手

retrieveAssistant(id: assistantId)

返回 Assistant

修改助手

modifyAssistant(id: assistandId, payload: CreateAssistantPayload(model: updatedModel, name: updatedName, ...))

返回 Assistant

删除助手

deleteAssistant(id: assistantId)

返回 DeletionStatus

创建线程

createThread(
    from: CreateThreadPayload(
	messages: [CreateMessagePayload(role: .user, content: "Hello"), ...],
	metadata: ["key1": "value1", ...]
    )
)

返回 Thread

检索线程

retrieveThread(id: threadId)

返回 Thread

修改线程

modifyThread(id: threadId, payload: ModifyPayload(metadata: ["key1": "value1", ...]))

返回 Thread

删除线程

deleteThread(id: threadId)

返回 DeletionStatus

创建消息

createMessage(in: threadId, payload: CreateMessagePayload(role: .user, content: "Hello"))

返回 Message

列出消息

listMessages(from: threadId, payload: ListPayload(limit: limit))

返回 ObjectList<Message>

检索消息

retrieveMessage(id: messageId, from: threadId)

返回 Message

修改消息

modifyMessage(id: messageId, from: threadId, payload: ModifyPayload(metadata: ["key1": "value1", ...]))

返回 Message

创建运行

createRun(in: threadId, payload: CreateRunPayload(assistantId: assistantId, ...))

返回 Run

创建带流式传输的运行

createStreamRun(in: threadId, payload: CreateStreamRunPayload(assistantId: assistantId))

返回 StreamEvent 序列

创建线程并运行

createThreadAndRun(
    from: CreateThreadAndRunPayload(
	assistantId: assistantId,
	thread: CreateThreadPayload(
	    messages: [CreateMessagePayload(role: .user, content: "Hello"), ...],
	    metadata: ["key1": "value1", ...]
	)
    )
)

返回 Run

列出运行

listRuns(from: threadId, payload: ListPayload(limit: limit, ...))

返回 ObjectList<Run>

检索运行

retrieveRun(id: runId, from: threadId)

返回 Run

修改运行

modifyRun(id: runId, from: threadId, payload: ModifyPayload(metadata: ["key1": "value1", ...]))

返回 Run

取消运行

cancelRun(id: runId, from: threadId)

返回 Run

列出运行步骤

listRunSteps(from: runId, in: threadId, payload: ListPayload(limit: limit, ...))

返回 ObjectList<RunStep>

检索运行步骤

retrieveRunStep(id: runStepId, from: runId, in: threadId)

返回 RunStep

示例

要尝试 OpenAIAssistants 示例

我们的其他开源 SwiftUI 库

PopupView - Toasts 和 popups 库
Grid - 最强大的 Grid 容器
ScalingHeaderScrollView - 具有粘性标头的滚动视图,该标头在您滚动时缩小
AnimatedTabBar - 具有许多预设动画的标签栏
MediaPicker - 可自定义的媒体选择器
Chat - 具有完全可自定义的消息单元格、输入视图和内置媒体选择器的聊天 UI 框架
AnimatedGradient - 动画线性渐变
ConcentricOnboarding - 动画 onboarding 流程
FloatingButton - 浮动按钮菜单
ActivityIndicatorView - 许多动画加载指示器
ProgressIndicatorView - 许多动画进度指示器
FlagAndCountryCode - 每个国家的电话代码和旗帜
SVGView - SVG 解析器
LiquidSwipe - 流体导航动画