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使用统计,确认是否有异常请求记录。
快速排查步骤
- 发送极短的简单测试消息(如“你好”),排除消息内容复杂度导致的延迟。
- 用上述代码添加超时控制,确认是否是请求超时导致的长时间等待。
- 使用谷歌官方API测试工具直接调用Gemini API,若同样出现高延迟,说明是API服务或网络节点问题;若工具调用正常,则是代码配置问题。
内容的提问来源于stack exchange,提问作者Harrinandhaan Sathish Kumaar N
相关产品推荐
相关产品推荐

