Langchainは、言語モデルを活用したアプリケーション開発のためのフレームワークです。この記事では、Langchainを使ってGoogleのGenerative AIモデルを効果的に使用する方法を、初心者にも分かりやすく解説します。LangchainのREADMEとドキュメントの内容を基に、具体的なコードブロックを交えて説明していきます。
こちらの記事もおすすめ
Langchainの基本
Langchainは、コンテキストに基づいた推論アプリケーションを構築するためのフレームワークです。コンテキスト認識、推論、外部データソースからのデータ取得など、言語モデルを活用した多様なアプリケーション開発を可能にします。
設定方法
GoogleのGenerative AIを使用するためには、最初にlangchain-google-genai
Pythonパッケージをインストールし、APIキーを生成する必要があります。以下の手順に従ってください。
%pip install --upgrade --quiet langchain-google-genai
from langchain_google_genai import GoogleGenerativeAI
from getpass import getpass
api_key = getpass()
llm = GoogleGenerativeAI(model="models/text-bison-001", google_api_key=api_key)
print(
llm.invoke(
"Pythonというプログラミング言語の長所と短所は何ですか?"
)
)
llm = GoogleGenerativeAI(model="gemini-pro", google_api_key=api_key)
print(
llm.invoke(
"Pythonというプログラミング言語の長所と短所は何ですか?"
)
)
このコードは、Pythonパッケージをインストールし、Google Generative AIモデル(models/text-bison-001
と gemini-pro
)に質問を送り、その回答を表示する方法を示しています。
text-bison-001は日本語に対応していない模様...
チェーン内での使用
Langchainでは、プロンプトテンプレートを使って質問とその回答のフォーマットを定義し、その後Generative AIモデルをチェーンの一部として組み込むことができます。
from langchain.prompts import PromptTemplate
template = """質問: {question}
回答: 一歩ずつ考えてみましょう。"""
prompt = PromptTemplate.from_template(template)
chain = prompt | llm
question = "2+2はいくつですか?"
print(chain.invoke({"question": question}))
この方法では、質問を受け取り、定義したフォーマットに従って回答を整形し、Generative AIモデルに渡して回答を得ることができます。
ストリーミング呼び出し
大量のデータや、リアルタイムでの応答が求められる場合、ストリーミング呼び出しを使用することができます。以下の例では、雪についての短い詩をリアルタイムで受け取る方法を示しています。
import sys
for chunk in llm.stream("雪についての短い詩を教えて"):
sys.stdout.write(chunk)
sys.stdout.flush()
セーフティ設定
Geminiモデルは、デフォルトでセーフティ設定がありますが、これをオーバーライドすることが可能です。もしモデルから「セーフティ警告」を多く受け取る場合、以下のようにセーフティ設定属性を調整することで対応できます。
from langchain_google_genai import GoogleGenerativeAI, HarmBlockThreshold, HarmCategory
llm = GoogleGenerativeAI(
model="gemini-pro",
google_api_key=api_key,
safety_settings={
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
},
)
Googleのセーフティ設定タイプで利用可能なカテゴリや閾値の一覧を確認してください。
この記事を通して、LangchainとGoogle Generative AIモデルの基本的な使い方を理解できたことでしょう。これらのツールを使って、さまざまなプロジェクトやアプリケーションを開発する際の基礎として活用してください。
コメント