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

概述

集成详情

模型功能

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

设置

您可以通过 @langchain/google-genai 集成包中的 ChatGoogleGenerativeAI 类访问 Google 的 geminigemini-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 的工具调用与使用其他模型的工具调用基本相同,但在模式方面有一些限制。 Google AI API 不允许工具模式包含具有未知属性的对象。例如,以下 Zod 模式将抛出错误: 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. 系统消息不是原生支持的,如果存在,将与第一条 human 消息合并。
  3. 对于常规聊天对话,消息必须遵循 human/ai/human/ai 交替模式。您不能连续提供 2 条 AI 或 human 消息。
  4. 如果消息违反了 LLM 的安全检查,可能会被阻止。在这种情况下,模型将返回空响应。

API 参考

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