【发布时间】: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