这门课运行时什么都不打印

问题描述 投票:0回答:0

我已经尝试了将近一个星期,以找出为什么在这门课上课时什么也没有打印出来

class IntentHandler: INExtension {
    override func handler(for intent: INIntent) -> Any {
        guard intent is PromptIntent else {
            fatalError("Unhandled Intent error : \(intent)")
        }
        print("IntentHandler has run")
        return PromptIntentHandler()
    }
}

另外,作为这个问题的延伸,我似乎找不到原因,不管实际变量是什么,这段代码总是返回默认大小写:

//MARK: PromptIntentHandler (API)
class PromptIntentHandler: NSObject, PromptIntentHandling {
    let openAI = OpenAI(apiToken: "myAPIKey")
    let defaults = UserDefaults.standard
    
    func setModelType() -> Model {
        let modelType = ((defaults.string(forKey: "ModelType") ?? "None") as String)
        
        switch modelType {
        case "Plus":
            print("Plan is Plus")
            return .curie
        case "Pro":
            print("Plan is Pro")
            return .textDavinci_003
        case "Ultra":
            print("Plan is Ultra")
            return .textDavinci_003
        default:
            print("User isn't subscriped")
            return .ada
        }
    }
    
    func handle(intent: PromptIntent, completion: @escaping (PromptIntentResponse) -> Void) {
        openAI.completions(query: .init(
            model: setModelType(),
            prompt: intent.query!,
            temperature: 0,
            max_tokens: 200,
            top_p: 1,
            frequency_penalty: 1,
            presence_penalty: 2,
            stop: ["\\n"])) { result in
                
                switch result {
                case .success(let response):
                    let outputText = response.choices.first?.text
                    completion(.success(answer: outputText!))
                    print(outputText!)
                case .failure(let error):
                    print(error.localizedDescription)
                }
            }
    }
    
    func resolveQuery(for intent: PromptIntent, with completion: @escaping (INStringResolutionResult) -> Void) {
        // check if the intent's query is empty
        if intent.query == nil || intent.query!.isEmpty {
            // if yes, return a need value resolution result
            completion(INStringResolutionResult.needsValue())
        } else {
            // otherwise, return a success resolution result with the query
            completion(INStringResolutionResult.success(with: intent.query ?? ""))
        }
    }
}

和头等舱一样,也没有打印。更糟糕的是,开关总是返回默认值。我在其他地方有这段代码作为完整性检查,它工作得很好,返回预期值并打印预期语句(我的计划是 Ultra):

let defaults = UserDefaults.standard
print((defaults.string(forKey: "ModelType") ?? "None") as String)
                            
if ((defaults.string(forKey: "ModelType") ?? "None") as String) == "Ultra" {
print("Ultra")
} else {
print("Something is wrong")
}

如果有人能提供一些关于为什么会发生这些事情的见解,我将非常感激。非常感谢您能为我提供的任何帮助!

我已经尝试了一切,从不同文件共享的不同变量,同一文件中的所有内容,到用户默认值,再到 if else 语句、开关、函数。我将其隔离为 class IntentHandler: INExtension { } 和 class PromptIntentHandler: NSObject, PromptIntentHandling { } 发生的一些奇怪的事情。

不同的目标成员可能是问题所在吗?我错过了这些课程有什么特别之处吗?是别的东西吗?我不知道!

ios swift swiftui sirikit sirishortcuts
© www.soinside.com 2019 - 2024. All rights reserved.