这个用 Swift 编写的社区维护库,提供了一种简单的方式来使用 OpenAI REST API。
dependencies: [
.package(url: "https://github.com/exyte/OpenAI")
]
要安装 OpenAI
,请简单地将以下行添加到您的 Podfile 中
pod 'ExyteOpenAI'
要使用 Carthage 将 OpenAI
集成到您的 Xcode 项目中,在您的 Cartfile
中指定它
github "exyte/OpenAI"
- iOS 16+、tvOS 16+、macOS 13+、watchOS 8+
- Xcode 15+
- 获取 您的 API 密钥。不要与他人共享,也不应将其暴露在任何客户端代码中。
⚠️ OpenAI 强烈建议客户端应用程序的开发者通过单独的后端服务代理请求,以保护其 API 密钥。API 密钥可以访问和操作客户的账单、使用和组织数据,因此将其暴露是一个重大的风险。
- 创建客户端实例。
let client = OpenAI(apiKey: "YOUR_API_KEY_HERE")
- 通过定义其指令和模型创建助手。
let assistantPayload = CreateAssistantPayload(model: .gpt_4o, name: "My Assistant", instructions: "Be funny")
client.createAssistant(from: assistantPayload) <...>
- 创建线程以开始对话。
let threadPayload = CreateThreadPayload(messages: [...], metadata: [...])
client.createThread(from: threadPayload) <...>
- 从用户向线程添加消息。
let messagePayload = CreateMessagePayload(role: .user, content: "Hello!")
client.createMessage(in: threadId, payload: messagePayload) <...>
- 在线程上运行助手以生成响应。
client.createRun(in: threadId, payload: CreateRunPayload(assistantId: assistantId)) <...>
- 检查运行状态,直到完成或失败。
client.retrieveRun(id: runId, from: threadId)
- 从助手检索消息。
let listPayload = ListPayload(after: lastMessageId)
client.listMessages(from: threadId, payload: listPayload) <...>
有关 OpenAI Assistants API 使用更详细的信息,请参阅 platform.openai.com 和我们的 示例 部分。
列出并描述 API 中可用的各种模型。模型列表及其差异可以在 platform.openai.com 上找到。
listModels()
retrieveModel(with: modelId)
deleteModel(with: modelId)
文件用于上传文档,可以用于如助手等功能。
uploadFile(payload: FilePayload(purpose: filePurpose, fileURL: fileURL))
listFiles()
retrieveFile(id: fileId)
deleteFile(id: fileId)
retrieveFileContent(id: fileId, destinationURL: destinationURL)
构建可调用模型和使用工具执行任务的助手。
createAssistant(from: CreateAssistantPayload(model: model, name: name, ...))
listAssistants(payload: ListPayload(limit: limit, ...))
retrieveAssistant(id: assistantId)
modifyAssistant(id: assistandId, payload: CreateAssistantPayload(model: updatedModel, name: updatedName, ...))
deleteAssistant(id: assistantId)
createThread(
from: CreateThreadPayload(
messages: [CreateMessagePayload(role: .user, content: "Hello"), ...],
metadata: ["key1": "value1", ...]
)
)
retrieveThread(id: threadId)
modifyThread(id: threadId, payload: ModifyPayload(metadata: ["key1": "value1", ...]))
deleteThread(id: threadId)
createMessage(in: threadId, payload: CreateMessagePayload(role: .user, content: "Hello"))
listMessages(from: threadId, payload: ListPayload(limit: limit))
retrieveMessage(id: messageId, from: threadId)
modifyMessage(id: messageId, from: threadId, payload: ModifyPayload(metadata: ["key1": "value1", ...]))
createRun(in: threadId, payload: CreateRunPayload(assistantId: assistantId, ...))
createStreamRun(in: threadId, payload: CreateStreamRunPayload(assistantId: assistantId))
createThreadAndRun(
from: CreateThreadAndRunPayload(
assistantId: assistantId,
thread: CreateThreadPayload(
messages: [CreateMessagePayload(role: .user, content: "Hello"), ...],
metadata: ["key1": "value1", ...]
)
)
)
listRuns(from: threadId, payload: ListPayload(limit: limit, ...))
retrieveRun(id: runId, from: threadId)
modifyRun(id: runId, from: threadId, payload: ModifyPayload(metadata: ["key1": "value1", ...]))
cancelRun(id: runId, from: threadId)
listRunSteps(from: runId, in: threadId, payload: ListPayload(limit: limit, ...))
retrieveRunStep(id: runStepId, from: runId, in: threadId)
尝试 OpenAIAssistants 示例
- 克隆存储库
https://github.com/exyte/OpenAI
- 打开 OpenAIAssistantsExample/OpenAIAssistantsExample.xcodeproj
- 试试看!
- 模型
- 文件
- 助手
- 运行流式传输
- Swift 并发支持
- 聊天
- 音频
- 图片
- 审核
- 微调
- 存储文件
PopupView - 吐司和弹出窗口库
Grid - 最强大的网格容器
ScalingHeaderScrollView - 支持粘性头部且滚动时缩放的滚动视图
AnimatedTabBar - 具有多种预设动画的标签栏
MediaPicker - 可定制的媒体选择器
Chat - 具有完全可定制的消息单元格、输入视图和内置媒体选择器的聊天 UI 框架
AnimatedGradient - 动画线性渐变
ConcentricOnboarding - 动画引导流程
FloatingButton - 悬浮按钮菜单
ActivityIndicatorView - 许多动画加载指示器
ProgressIndicatorView - 许多动画进度指示器
FlagAndCountryCode - 每个国家的电话代码和国旗
SVGView - SVG 解析器
LiquidSwipe - 液态导航动画