使用 Gemini API,您可以构建多轮自由对话。Vertex AI in Firebase SDK 通过管理对话状态来简化该流程,因此与 generateContentStream()
或 generateContent()
不同,您无需自行存储对话记录。
使用 Gemini API 的其他方式
可选择试用 Gemini API 的替代“Google AI”版本
使用 Google AI Studio 和 Google AI 客户端 SDK 免费访问(在可用的情况下,且受限)。 这些 SDK 应仅用于移动应用和 Web 应用中的原型设计。熟悉 Gemini API 的运作方式后,请迁移到我们的 Vertex AI in Firebase SDK(本文档)。这些 SDK 提供了许多对移动应用和 Web 应用至关重要的其他功能,例如使用 Firebase App Check 保护 API 免遭滥用,以及支持请求中的大型媒体文件。
可选地在服务器端调用 Gemini API in Vertex AI(例如使用 Python、Node.js 或 Go)
使用服务器端 Vertex AI SDK、Genkit 或 Firebase Extensions Gemini API。
准备工作
如果您尚未完成入门指南,请先完成该指南。该指南介绍了如何设置 Firebase 项目、将应用连接到 Firebase、添加 SDK、初始化 Vertex AI 服务以及创建 GenerativeModel
实例。
发送聊天提示请求
如需构建多轮对话(例如聊天),请先通过调用 startChat()
初始化聊天。然后,使用 sendMessageStream()
(或 sendMessage()
)发送新的用户消息,这也会将消息和回复附加到聊天记录中。
与对话中的内容相关联的 role
有两个可能的选项:
user
:提供提示的角色。此值是调用sendMessageStream()
(或sendMessage()
)的默认值,如果传递其他角色,该函数会抛出异常。model
:提供响应的角色。使用现有history
调用startChat()
时,可以使用此角色。
选择是流式传输回答 (sendMessageStream
),还是等待系统生成完整结果 (sendMessage
)。
您可以通过不等待模型生成的完整结果,而是使用流式处理部分结果,从而实现更快的互动。
以下示例展示了如何使用 startChat()
和 sendMessageStream()
从模型中流式传输响应:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To stream generated text output, call sendMessageStream and pass in the message
let contentStream = try chat.sendMessageStream("How many paws are in my house?")
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
或者,您也可以等待整个结果,而不是流式传输;只有在模型完成整个生成过程后,才会返回结果。
以下示例展示了如何使用 startChat()
和 sendMessage()
发送新用户消息:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")
您还可以执行以下操作
- 了解如何在向模型发送长提示之前计算令牌数。
- 设置 Cloud Storage for Firebase,以便在多模式请求中添加大型文件,并获得更可控的解决方案,以便在问题中提供文件。 文件可以是图片、PDF、视频和音频。
- 开始考虑为正式版做好准备,包括设置 Firebase App Check,以保护 Gemini API 免遭未经授权的客户端滥用。 此外,请务必查看正式版核对清单。
试用其他功能
- 根据纯文本提示生成文本。
- 从多模态提示(包括文本、图片、PDF、视频和音频)生成文本。
- 从文本和多模态提示生成结构化输出(例如 JSON)。
- 根据文本提示生成图片。
- 使用函数调用将生成式模型连接到外部系统和信息。
了解如何控制内容生成
- 了解提示设计,包括最佳实践、策略和示例提示。
- 配置模型参数,例如温度和输出 token 数上限(适用于 Gemini)或宽高比和人物生成(适用于 Imagen)。
- 使用安全设置来调整收到可能被视为有害的回答的可能性。
详细了解支持的模型
了解适用于各种用例的模型及其配额和价格。就您使用 Vertex AI in Firebase 的体验提供反馈