Google AI 提供多种不同的聊天模型,包括强大的 Gemini 系列。有关最新模型、其功能、上下文窗口等信息,请访问 Google AI 文档。 这将帮助你开始使用 ChatGoogleGenerativeAI 聊天模型。所有 ChatGoogleGenerativeAI 功能和配置的详细文档,请访问 API 参考。
此库将被弃用此库基于 Google 的一个已弃用库构建,将被 ChatGoogle 库取代。 新的实现应使用 ChatGoogle 库,并且 现有的实现应考虑迁移。

概览

集成详情

模型功能

有关如何使用特定功能的指南,请参见下表标题中的链接。

设置

你可以通过 @langchain/google-genai 集成包中的 ChatGoogleGenerativeAI 类访问 Google 的 gemini 和 gemini-vision 模型,以及 LangChain 中的其他生成式模型。
你也可以通过 LangChain VertexAI 和 VertexAI-web 集成访问 Google 的 gemini 系列模型。请参阅 Vertex AI 集成文档。

凭据

在此处获取 API 密钥:https://ai.google.dev/tutorials/setup 然后设置 GOOGLE_API_KEY 环境变量:
如果你想自动跟踪模型调用,也可以通过取消注释以下内容来设置你的 LangSmith API 密钥:

安装

LangChain 的 ChatGoogleGenerativeAI 集成位于 @langchain/google-genai 包中:

实例化

现在我们可以实例化模型对象并生成聊天补全:

调用

安全设置

Gemini 模型有默认的安全设置,可以被覆盖。如果你从模型中收到很多“安全警告”,可以尝试调整模型的 safety_settings 属性。例如,要关闭对危险内容的安全阻止,你可以从 @google/generative-ai 包导入枚举,然后如下构造你的 LLM:

工具调用

使用 Google AI 进行工具调用与 使用其他模型进行工具调用 基本相同,但在 schema 方面有一些限制。 Google AI API 不允许工具 schema 包含具有未知属性的对象。例如,以下 Zod schema 将抛出错误: const invalidSchema = z.object({ properties: z.record(z.unknown()) }); 和 const invalidSchema2 = z.record(z.unknown()); 相反,你应该明确定义对象字段的属性。这是一个例子:

内置 Google 搜索检索

Google 还提供了一个内置的搜索工具,你可以使用它来将内容生成基于真实世界的信息。这是一个如何使用它的例子:
响应中还包含有关搜索结果的元数据:

代码执行

Google Generative AI 还支持代码执行。使用内置的 CodeExecutionTool,你可以让模型生成代码、执行代码,并在最终补全中使用结果:
你也可以将这次生成结果作为聊天历史传回给模型:

上下文缓存

上下文缓存允许你将某些内容传递给模型一次,缓存输入令牌,然后在后续请求中引用缓存的令牌以降低成本。你可以使用 GoogleAICacheManager 类创建一个 CachedContent 对象,然后使用 enableCachedContent() 方法将该 CachedContent 对象传递给你的 ChatGoogleGenerativeAIModel。
注意
  • 上下文缓存的最小输入令牌计数为 32,768,最大值与给定模型的最大值相同。

Gemini 提示常见问题

截至本文档编写时(2023/12/12),Gemini 对其接受的提示类型和结构有一些限制。具体来说:
  1. 提供多模态(图像)输入时,你最多只能有 1 条“human”(用户)类型的消息。你不能传递多条消息(尽管单条 human 消息可以有多个内容条目)。
  2. 不原生支持系统消息(system messages),如果存在,它们将与第一条 human 消息合并。
  3. 对于常规聊天对话,消息必须遵循 human/ai/human/ai 交替模式。你不能连续提供 2 条 AI 或 human 消息。
  4. 如果消息违反 LLM 的安全检查,可能会被阻止。在这种情况下,模型将返回空响应。

API 参考

所有 ChatGoogleGenerativeAI 功能和配置的详细文档,请访问 API 参考。