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

Gemini API调用响应过慢问题排查:代码还是API故障?

聊天机器人API调用延迟过高问题排查

我正在为学校项目设计一款聊天机器人原型,但API调用延迟极高,响应时长至少需要2分钟。已尝试指定指令、更换模型,也换过不同设备和WiFi网络,问题依旧。想知道是代码问题还是API本身的问题?

我的代码

import Foundation
import SwiftUI
import GoogleGenerativeAI

enum ChatRole {
    case user
    case model
}

struct ChatMessage: Identifiable, Equatable {
    let id = UUID().uuidString
    var role: ChatRole
    var message: String
}

class ChatService: ObservableObject {
    @Published private var chat: Chat?
    @Published private(set) var messages = [ChatMessage]()
    @Published private(set) var loadingResponse = false
    
    func sendMessage(_ message: String) {
        loadingResponse = true
        if (chat == nil) {
     let history: [ModelContent] = messages.map { ModelContent(role: $0.role == .user ? "user" : "model", parts: $0.message)}
            chat = GenerativeModel(name: "gemini-2.0-flash-lite-preview-02-05", apiKey: APIKey.default, systemInstruction: "You are a financial AI assistant. You are called Assist, and is supposed to do nothing other than answer questions.").startChat(history: history)
 }
 
 // MARK: Add user's message to the list
 messages.append(.init(role: .user, message: message))
 
 Task {
     do {
         let response = try await chat?.sendMessage(message)
         
         loadingResponse = false
         
         guard let text = response?.text else {
             messages.append(.init(role: .model, message: "Something went wrong, please try again."))
             return
         }
         
         messages.append(.init(role: .model, message: text))
     }
     catch {
         loadingResponse = false
         messages.append(.init(role: .model, message: "Something went wrong, please try again."))
     }
 }
}
}

代码层面潜在问题

  • 聊天历史初始化时机偏差:首次调用sendMessage时,创建chat对象用的messages数组还没加入当前用户消息(append操作在创建chat之后),不过这只会导致首次聊天历史为空,和延迟无关。
  • 缺少超时控制:当前代码没有设置API请求超时时间,若API服务器无响应,请求会等待系统默认超时(可能长达数分钟)。可以给请求添加超时包装:
    Task {
        do {
            let response = try await Task.withTimeout(30) { // 设置30秒超时
                try await chat?.sendMessage(message)
            }
            
            loadingResponse = false
            
            guard let text = response?.text else {
                messages.append(.init(role: .model, message: "请求失败,请重试。"))
                return
            }
            
            messages.append(.init(role: .model, message: text))
        } catch is CancellationError {
            loadingResponse = false
            messages.append(.init(role: .model, message: "请求超时,请重试。"))
        } catch {
            loadingResponse = false
            messages.append(.init(role: .model, message: "请求失败,请重试。"))
        }
    }
    
  • 可选值调用的隐性风险:chat?.sendMessage中若chat初始化失败为nil,会直接返回nil触发错误,但这不是延迟的直接原因。

API层面排查方向

  • 预览版模型稳定性:你使用的gemini-2.0-flash-lite-preview-02-05是预览版模型,可能存在服务器负载过高或地区性延迟问题,即使更换其他模型,若所在地区的谷歌API节点拥堵,也会导致高延迟。
  • API节点地区匹配:若设备所在地区没有谷歌API的就近节点,跨地区请求会产生极高延迟,可确认API密钥绑定的地区是否与实际使用地区匹配。
  • 官方API状态:谷歌Gemini API可能存在临时服务故障或限流,可通过谷歌AI Studio查看API使用统计,确认是否有异常请求记录。

快速排查步骤

  1. 发送极短的简单测试消息(如“你好”),排除消息内容复杂度导致的延迟。
  2. 用上述代码添加超时控制,确认是否是请求超时导致的长时间等待。
  3. 使用谷歌官方API测试工具直接调用Gemini API,若同样出现高延迟,说明是API服务或网络节点问题;若工具调用正常,则是代码配置问题。

内容的提问来源于stack exchange,提问作者Harrinandhaan Sathish Kumaar N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:36:16