You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI聊天机器人开发遇Google Generative AI 400错误求助

Google Generative AI 400错误排查与解决(SwiftUI聊天机器人)

以下是针对你遇到的「运行1-2次后出现400错误」问题的排查方向和解决方案:

1. 触发API调用速率限制

Google Generative AI的免费额度有严格的调用频率限制,短时间内重复调用会触发400错误,这是最可能的原因。

  • 解决方案:
    • 在每次调用接口前添加延迟(比如try await Task.sleep(nanoseconds: 1_000_000_000),即1秒延迟);
    • 登录Google Cloud控制台,查看你的Generative AI配额使用情况,若额度不足可申请提升。

2. 异步逻辑的竞态条件

你的按钮点击逻辑中,会先启动异步任务goNuts(),再清空promptMain,虽然函数内先赋值了let prompt = promptMain,但极端情况下可能出现prompt为空的无效请求。

  • 解决方案:调整按钮逻辑,确保先获取当前prompt再清空:
    Button("ASK"){
        let currentPrompt = promptMain
        guard !currentPrompt.isEmpty else { return }
        promptMain = ""
        history1 = currentPrompt
        Task {
            await goNuts(with: currentPrompt)
        }
    }
    
    同时修改goNuts函数:
    func goNuts(with prompt: String) async {
        do {
            let response = try await palmClient.generateText(with: prompt)
            if let candidate = response.candidates?.first, let text = candidate.output {
                answer = text
            }
        } catch {
            errorMessage = error.localizedDescription
        }
    }
    

3. API密钥权限或有效性问题

即便能运行几次,也可能是密钥权限变化或访问限制导致后续请求失败:

  • 解决方案:登录Google Cloud控制台,确认你的API密钥已启用Generative Language API,且未设置IP限制等访问规则。

4. 显式指定模型参数

默认模型可能存在变动或配额限制,显式指定模型可避免此类问题:

  • 修改goNuts内的请求代码:
    let response = try await palmClient.generateText(
        model: "models/text-bison-001",
        prompt: prompt
    )
    

内容的提问来源于stack exchange,提问作者Kadri Özgür

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:42:53