1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini API呼び出し方法

Last updated at Posted at 2024-12-28

はじめに

Google GeminiをAPIで利用する方法を記載する。

利用する方法としてGoogle AIとVertex AIの2種類がある。
Google AIはAPIキー認証で簡易に利用可能。個人開発に向いている。
Vertex AIはよりカスタマイズ性が高い。
もう少し詳細な違いは以下参照。

Google AI

APIキーの取得

Google AI for Developers にアクセスし、API キーを取得する。

API呼び出し(curl)

  • 以下のコマンドを実行する。
  • 取得したAPIキーへの置換を忘れず行う。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key=GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
  "contents": [{
    "parts":[{"text": "富士山とは何ですか?"}]
    }]
   }'

API呼び出し(python)

google-generativeai

import google.generativeai as genai

# APIキーの設定
genai.configure(api_key="GEMINI_API_KEY")

# モデルの初期化
model = genai.GenerativeModel(model_name="gemini-2.0-flash-exp")

# プロンプトの設定
prompt = "富士山とは何ですか?"

# コンテンツ生成の実行
response = model.generate_content(prompt)

# 結果の表示
print(response.candidates[0]['content']['parts'])

google-genai

from google import genai
from google.genai import types

# クライアントの初期化
client = genai.Client(api_key='GEMINI_API_KEY')

# コンテンツ生成の実行
response = client.models.generate_content(
    model='gemini-2.0-flash-exp',
    contents='富士山とは何ですか?',
    config=types.GenerateContentConfig(
        system_instruction='あなたは地理学の専門家として答えてください。',
        temperature= 0.1,
    ),
)

# 結果の表示
print(response.text)

参考:Google Gen AI SDK ドキュメント

langchain_google_genai

from langchain_google_genai import ChatGoogleGenerativeAI

# APIキーの設定
google_api_key="GEMINI_API_KEY"

# LLMの初期化
model = ChatGoogleGenerativeAI(model="gemini-2.0-flash-exp", google_api_key=google_api_key)

# プロンプトの定義
prompt = "富士山とは何ですか?"

# 応答の生成
response = model.invoke(prompt)

print(response)

参考:

Vertex AI

サービスアカウントファイルの取得

  1. Google Cloud プロジェクトの作成:

    • Google Cloud Consoleにアクセスし、プロジェクトを作成する。
    • 既存のプロジェクトを使用する場合は、そのプロジェクトを選択する。
  2. Vertex AI APIの有効化:

    • Google Cloud Consoleのナビゲーション メニューから「APIとサービス」 > 「ライブラリ」を選択する。
    • 「Vertex AI API」を検索し、「有効にする」をクリックしてAPIを有効化する。
  3. 課金の有効化:

    • Vertex AI APIを利用するには、プロジェクトで課金が有効になっている必要がある。
    • Google Cloud Consoleの「課金」セクションで課金アカウントを設定する。
  4. 認証情報の設定:

    • サービス アカウントの作成:
      • Google Cloud Consoleのナビゲーション メニューから「IAMと管理」 > 「サービス アカウント」を選択する。
      • 「+ サービス アカウントを作成」をクリックし、サービス アカウント名、ID、説明を入力する。
      • 「作成して続行」をクリックする。
    • ロールの割り当て:
      • サービス アカウントに適切なロールを割り当てる。
      • 「ロールを選択」で「Vertex AI ユーザー」などの必要な権限を選択し、「続行」をクリックする。
    • サービス アカウント キーの作成とダウンロード:
      • サービス アカウントの詳細ページで「キー」タブを選択する。
      • 「鍵を追加」 > 「新しい鍵を作成」をクリックする。
      • キーのタイプとして「JSON」を選択し、「作成」をクリックする。
      • JSON形式のキーファイルが自動的にダウンロードされる。
      • このキーファイルは機密情報であるため、安全な場所に保管し、第三者と共有しないこと。

5-a. 環境変数の設定:

  • ダウンロードしたサービス アカウントのキーファイルのパスを環境変数GOOGLE_APPLICATION_CREDENTIALSに設定する。
    export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/service-account-file.json"
    
  • この設定により、Google Cloud クライアント ライブラリは指定された認証情報を使用してAPIにアクセスできる。

5-b.

  • もしくはコード内でサービスアカウントファイルを参照する
  • 以降のコードはこの方法を用いる

API呼び出し(python)

Vertex AI SDK

import vertexai
from vertexai.generative_models import GenerativeModel
from google.oauth2 import service_account

# サービス アカウント キーファイルのパス
key_path = "./service-account-key/service-account-file.json"

# 認証情報の読み込み
credentials = service_account.Credentials.from_service_account_file(key_path)

PROJECT_ID = "vertexai-dev-1"
REGION = "us-central1"  # e.g. us-central1
vertexai.init(project=PROJECT_ID, location=REGION, credentials=credentials)

model = GenerativeModel("gemini-2.0-flash-exp")

response = model.generate_content("富士山とは何ですか?")
print(response.text)

参考:

langchain_google_vertexai

from google.oauth2 import service_account
from langchain_google_vertexai import ChatVertexAI

# サービス アカウント キーファイルのパス
key_path = "./service-account-key/service-account-file.json"

# 認証情報の読み込み
credentials = service_account.Credentials.from_service_account_file(key_path)

# LLMの初期化
model = ChatVertexAI(
    model="gemini-2.0-flash-exp",
    project="vertexai-dev-1",
    location="us-central1",
    credentials=credentials,
)

# プロンプトの定義
prompt = "富士山とは何ですか?"

# 応答の生成
response = model.invoke(prompt)

print(response)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?