Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
131 lines (94 loc) · 4.02 KB

File metadata and controls

131 lines (94 loc) · 4.02 KB
Copy raw file
Download raw file
Outline
Edit and raw actions

OpenAI

A modern, type-safe Swift package for seamless integration with OpenAI's API across all Apple platforms. Built with async/await support and streaming capabilities.

Features

  • 🛡️ Type Safety: Comprehensive Swift types for all API endpoints
  • ⚡ Modern Swift: Built with async/await, Codable, and Swift concurrency
  • 🔄 Streaming Support: Chat completions with async sequences
  • 🌐 Cross-Platform: Works on Apple platforms (iOS, macOS, tvOS, watchOS, visionOS), Linux and Android
  • 🎯 Comprehensive API Coverage: Support for all major OpenAI endpoints

Compatibility

  • macOS 10.15+
  • iOS 13.0+
  • tvOS 13.0+
  • watchOS 6.0+
  • visionOS 1.0+

Installation

From Xcode menu: File > Swift Packages > Add Package Dependency

https://github.com/Recouse/OpenAI

In your Package.swift file, first add the following to the package dependencies:

.package(url: "https://github.com/Recouse/OpenAI.git", from: "0.1.0"),

And then, include "OpenAI" as a dependency for your target:

.target(
    name: "<target>",
    dependencies: [
        .product(name: "OpenAI", package: "OpenAI"),
    ]
),

Basic Usage

import OpenAI

// Initialize client
let client = OpenAI(apiKey: "your-api-key-here")

// Simple chat completion
let response = try await client.chat.completions(
    model: .gpt4_1_mini,
    messages: [.user("Explain quantum computing in simple terms")]
)

print(response.choices.first?.message.content ?? "No response")

Streaming Responses

Chat Completions

// Stream chat completions
let stream = client.chat.completionsStream(
    model: .gpt4_1_nano,
    messages: [.user("Write a short story about space exploration")]
)

for try await chunk in stream {
    print(chunk.choices.first?.delta.content ?? "")
}

Responses

// Stream responses
let responses = openAI.responses.createStream(
    input: .text("Explain teleportation in simple terms"),
    model: .gpt4_1_nano
)

for try await response in responses {
    // Filter text deltas
    guard response.type == .outputTextDelta else { continue }
    print(response.delta ?? "")
}

Examples

Check out the Examples directory for a complete sample application demonstrating how to use this package in an app.

What's Implemented:

Dependencies

Contributing

Contributions to are always welcomed! If you'd like to contribute, please fork this repository and submit a pull request with your changes.

License

OpenAI is released under the MIT license. See LICENSE for more information.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.