ChatGoogleGenerativeAI
此文件將協助您開始使用 Google AI 聊天模型。如需所有 ChatGoogleGenerativeAI 功能和設定的詳細文件,請前往 API 參考。
Google AI 提供多種不同的聊天模型。如需最新模型、其功能、上下文視窗等的資訊,請前往 Google AI 文件。
Google 的 Gemini 模型可透過 Google AI 和 Google Cloud Vertex AI 存取。使用 Google AI 僅需一個 Google 帳戶和一個 API 金鑰。使用 Google Cloud Vertex AI 則需要一個 Google Cloud 帳戶(具有條款協議和計費),但提供企業級功能,例如客戶加密金鑰、虛擬私人雲等等。
若要深入瞭解這兩個 API 的主要功能,請參閱 Google 文件。
概觀
整合詳細資訊
類別 | 套件 | 本地 | 可序列化 | JS 支援 | 套件下載次數 | 套件最新版本 |
---|---|---|---|---|---|---|
ChatGoogleGenerativeAI | langchain-google-genai | ❌ | beta | ✅ |
模型功能
工具呼叫 | 結構化輸出 | JSON 模式 | 影像輸入 | 音訊輸入 | 視訊輸入 | Token 等級串流 | 原生非同步 | Token 使用量 | Logprobs |
---|---|---|---|---|---|---|---|---|---|
✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
設定
若要存取 Google AI 模型,您需要建立一個 Google 帳戶,取得 Google AI API 金鑰,並安裝 langchain-google-genai
整合套件。
憑證
前往 https://ai.google.dev/gemini-api/docs/api-key 產生 Google AI API 金鑰。完成後,設定 GOOGLE_API_KEY 環境變數
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"
安裝
LangChain Google AI 整合位於 langchain-google-genai
套件中
%pip install -qU langchain-google-genai
例項化
現在我們可以例項化我們的模型物件並產生聊天完成
from langchain_google_genai import ChatGoogleGenerativeAI
llm = ChatGoogleGenerativeAI(
model="gemini-1.5-pro",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
# other params...
)
調用
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 programmer. \n", response_metadata={'prompt_feedback': {'block_reason': 0, 'safety_ratings': []}, 'finish_reason': 'STOP', 'safety_ratings': [{'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', 'probability': 'NEGLIGIBLE', 'blocked': False}, {'category': 'HARM_CATEGORY_HATE_SPEECH', 'probability': 'NEGLIGIBLE', 'blocked': False}, {'category': 'HARM_CATEGORY_HARASSMENT', 'probability': 'NEGLIGIBLE', 'blocked': False}, {'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', 'probability': 'NEGLIGIBLE', 'blocked': False}]}, id='run-eef5b138-1da6-4226-9cfe-ab9073ddd77e-0', usage_metadata={'input_tokens': 21, 'output_tokens': 5, 'total_tokens': 26})
print(ai_msg.content)
J'adore programmer.
鏈結
我們可以像這樣使用提示範本鏈結我們的模型
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.",
}
)
AIMessage(content='Ich liebe das Programmieren. \n', response_metadata={'prompt_feedback': {'block_reason': 0, 'safety_ratings': []}, 'finish_reason': 'STOP', 'safety_ratings': [{'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', 'probability': 'NEGLIGIBLE', 'blocked': False}, {'category': 'HARM_CATEGORY_HATE_SPEECH', 'probability': 'NEGLIGIBLE', 'blocked': False}, {'category': 'HARM_CATEGORY_HARASSMENT', 'probability': 'NEGLIGIBLE', 'blocked': False}, {'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', 'probability': 'NEGLIGIBLE', 'blocked': False}]}, id='run-fbb35f30-4937-4a81-ae68-f7cb35721a0c-0', usage_metadata={'input_tokens': 16, 'output_tokens': 7, 'total_tokens': 23})
安全設定
Gemini 模型具有預設安全設定,可以覆寫。如果您從模型收到大量「安全警告」,您可以嘗試調整模型的 safety_settings
屬性。例如,若要關閉危險內容的安全封鎖,您可以依照以下方式建構您的 LLM
from langchain_google_genai import (
ChatGoogleGenerativeAI,
HarmBlockThreshold,
HarmCategory,
)
llm = ChatGoogleGenerativeAI(
model="gemini-1.5-pro",
safety_settings={
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
},
)
如需可用類別和閾值的列舉,請參閱 Google 的安全設定類型。
API 參考
如需所有 ChatGoogleGenerativeAI 功能和設定的詳細文件,請前往 API 參考:https://langchain-python.dev.org.tw/api_reference/google_genai/chat_models/langchain_google_genai.chat_models.ChatGoogleGenerativeAI.html