【问题标题】:OpenAISwift package works for ios not for MacOpenAISwift 包适用于 ios,不适用于 Mac
【发布时间】:2023-01-03 06:31:17
【问题描述】:

我一直按照说明使用 OpenAISwift 客户端库构建一个简单的 SwiftUI ChatGPT-3 客户端。该应用程序在 iOS 上按预期运行,但当我尝试运行 macos 版本时,出现以下错误:

2023-01-02 15:07:14.845094-0500 ChatGPT2[35955:1083936] [] networkd_settings_read_from_file 沙盒阻止此进程读取位于“/Library/Preferences/com.apple.networkd.plist”的网络设置文件,请添加一个例外。 2023-01-02 15:07:14.845261-0500 ChatGPT2[35955:1083936] [] networkd_settings_read_from_file 沙盒阻止此进程读取位于“/Library/Preferences/com.apple.networkd.plist”的网络设置文件,请添加一个例外。 2023-01-02 15:07:15.078105-0500 ChatGPT2[35955:1086396] [] nw_resolver_can_use_dns_xpc_block_invoke 沙盒不允许访问 com.apple.dnssd.service

我在 github 上发现了另一个 macos OpenAIKit 项目,指出需要将以下内容添加到 macos 的 info.plist 中:

<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-only</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.network.server</key>
    <true/>
</dict>
</plist>

但我没有在 XCode 14 项目属性信息部分看到这些选项。我会尝试将 dict 对象粘贴到 info.plist 的文本版本中,但我看不到将 info.plist 编辑为文本的方法。

这是我正在使用的简单代码:

import SwiftUI
import OpenAISwift

final class ViewModel: ObservableObject {
    init() {}
    
    private var client: OpenAISwift?
    
    func setup() {
        client = OpenAISwift(authToken: "MYKEYHERE")
       
        
    }
    
    func send(text: String,
        completion: @escaping (String) -> Void) {
            client?.sendCompletion(with: text,
                           maxTokens: 500,
                           completionHandler: {result in
        
        switch result {
        case .success(let model):
            let output = model.choices.first?.text ?? ""
            completion(output)
        case .failure:
            break
        }
    })
}
}

struct ContentView: View {
    @ObservedObject var viewModel = ViewModel()
    @State var text = ""
  @State var models = [String]()
    
    var body: some View {
        VStack(alignment: .leading) {
            ForEach(models, id: \.self) { string in
                Text(string)
            }
            
            Spacer()
            
            HStack {
                TextField("Type here ...", text: $text)
                Button("Send") {
                    send()
                }
            }
        }
        .onAppear{
            viewModel.setup()
        }.padding()
        
    }
    
    func send() {
        guard !text.trimmingCharacters(in: .whitespaces).isEmpty else {
            return
        }
        models.append("Me: \(text)")
        viewModel.send(text: text) { response in
            DispatchQueue.main.async {
                self.models.append("ChatGPT: " + response)
                self.text = ""
            }
            
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

如何让这个多平台应用程序在 macos Ventura 13.1 上运行?谢谢你的帮助。

【问题讨论】:

    标签: macos swiftui artificial-intelligence sandbox chatgpt


    【解决方案1】:

    我在签名和功能下的项目编辑器中找到了一个用于启用沙箱的部分。我选择了传入和传出网络连接并解决了问题。 ChatGPT 现在正在与 macOS SwiftUI 应用对话。我应该声明,我不确定这样做可能会启用哪些漏洞(如果有的话)。我很想听听任何人关于检查这两个设置可能存在的安全问题的消息。

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多