ChatGoogleGenerativeAI
直接通过 Gemini API 访问 Google 的生成式 AI 模型,包括 Gemini 系列,或者使用 Google AI Studio 快速进行实验。langchain-google-genai 包提供了这些模型的 LangChain 集成。对于个人开发者来说,这通常是最佳的起点。
有关最新模型、其功能、上下文窗口等方面的信息,请访问 Google AI 文档。所有示例均使用 gemini-2.0-flash 模型。Gemini 2.5 Pro 和 2.5 Flash 可通过 gemini-2.5-pro-preview-03-25 和 gemini-2.5-flash-preview-04-17 获得。所有模型 ID 均可在 Gemini API 文档 中找到。
集成详情
| 类 | 包 | 本地 | 可序列化 | JS 支持 | 包下载量 | 最新包版本 |
|---|---|---|---|---|---|---|
| ChatGoogleGenerativeAI | langchain-google-genai | ❌ | beta | ✅ |
模型功能
| 工具调用 | 结构化输出 | JSON 模式 | 图像输入 | 音频输入 | 视频输入 | Token 级流式传输 | 原生异步 | Token 使用量跟踪 | Logprobs |
|---|---|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
设置
要访问 Google AI 模型,您需要创建一个 Google 账户,获取 Google AI API 密钥,并安装 langchain-google-genai 集成包。
1. 安装:
%pip install -U langchain-google-genai
2. 凭据:
前往 https://ai.google.dev/gemini-api/docs/api-key(或通过 Google AI Studio)来生成 Google AI API 密钥。
对话模型
使用 ChatGoogleGenerativeAI 类与 Google 的对话模型进行交互。有关详细信息,请参阅 API 参考。
import getpass
import os
if "GOOGLE_API_KEY" not in os.environ:
os.environ["GOOGLE_API_KEY"] = getpass.getpass("Enter your Google AI API key: ")
要启用模型调用的自动跟踪,请设置您的 LangSmith API 密钥:
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
实例化
现在我们可以实例化我们的模型对象并生成聊天补全:
from langchain_google_genai import ChatGoogleGenerativeAI
llm = ChatGoogleGenerativeAI(
model="gemini-2.0-flash",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
# other params...
)
API Reference:ChatGoogleGenerativeAI
调用
messages = [
(
"system",
"You are a helpful assistant that translates English to French. Translate the user sentence.",
),
("human", "I love programming."),
]
ai_msg = llm.invoke(messages)
ai_msg
AIMessage(content="J'adore la programmation.", additional_kwargs={}, response_metadata={'prompt_feedback': {'block_reason': 0, 'safety_ratings': []}, 'finish_reason': 'STOP', 'model_name': 'gemini-2.0-flash', 'safety_ratings': []}, id='run-3b28d4b8-8a62-4e6c-ad4e-b53e6e825749-0', usage_metadata={'input_tokens': 20, 'output_tokens': 7, 'total_tokens': 27, 'input_token_details': {'cache_read': 0}})
print(ai_msg.content)
J'adore la programmation.
链式调用
我们可以像这样将我们的模型与提示模板进行链式调用:
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are a helpful assistant that translates {input_language} to {output_language}.",
),
("human", "{input}"),
]
)
chain = prompt | llm
chain.invoke(
{
"input_language": "English",
"output_language": "German",
"input": "I love programming.",
}
)
API Reference:ChatPromptTemplate
AIMessage(content='Ich liebe Programmieren.', additional_kwargs={}, response_metadata={'prompt_feedback': {'block_reason': 0, 'safety_ratings': []}, 'finish_reason': 'STOP', 'model_name': 'gemini-2.0-flash', 'safety_ratings': []}, id='run-e5561c6b-2beb-4411-9210-4796b576a7cd-0', usage_metadata={'input_tokens': 15, 'output_tokens': 7, 'total_tokens': 22, 'input_token_details': {'cache_read': 0}})