10
6

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-02-19

右も左もわからずの自分がやってみて面白かったとか、備忘録とかにした方がいいと思った物を記事にしたものなります。もし、必要な方にいらっしゃったら、この記事が役に立てたら嬉しいと思います。


なんだと?Gemini APIが無料?

OpenAI社のChatGPTのAPIは初回限定かつ、期限ありで20ドルの枠まで使えたことに対し、GoogleのGeminiはいくつかの制限はあるが無料で使えると発表していた。これを用いれば自分のおもちゃ用ボットとかも作れるわけなので、早速APIしないと思った。

無料の枠でできること

以下のイメージを参照
image.png

まず、Gemini APIのkeyを発行しよう

以下のページからGemini ProのAPI Keyの申し込みができる
Gemini Pro APIの申請ページ

「Get API key」を押下し、API発行まで進めば完了です。
image.png

pythonでやり取り開始

API keyが発行完了したら、すぐpythonを用いて会話ができる。
GenerativeModelに「gemini-pro」を指定したら、テキストベースのみに、「gemini-pro-vision」にすると、イメージなどがインプットができるようになる
→ 「gemini-pro-vision」の場合、model.generate_content()を使用

model.start_chat()からチャットセッションを取得したら会話が続けることができる

チャットプロンプト用はこちら。

main.py
import vertexai
from vertexai.preview.generative_models import GenerativeModel, ChatSession

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"
vertexai.init(project=project_id, location=location)

model = GenerativeModel("gemini-pro")
chat = model.start_chat()

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    response = chat.send_message(prompt)
    return response.text

prompt = "Hello."
print(get_chat_response(chat, prompt))

prompt = "What are all the colors in a rainbow?"
print(get_chat_response(chat, prompt))

prompt = "Why does it appear when it rains?"
print(get_chat_response(chat, prompt))

マルチモーダル用はこちら。

main.py
import http.client
import typing
import urllib.request
from vertexai.preview.generative_models import GenerativeModel, Image

# create helper function
def load_image_from_url(image_url: str) -> Image:
    with urllib.request.urlopen(image_url) as response:
        response = typing.cast(http.client.HTTPResponse, response)
        image_bytes = response.read()
    return Image.from_bytes(image_bytes)

# Load images from Cloud Storage URI
landmark1 = load_image_from_url(
    "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark1.png"
)
landmark2 = load_image_from_url(
    "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark2.png"
)
landmark3 = load_image_from_url(
    "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark3.png"
)

# Pass multimodal prompt
model = GenerativeModel("gemini-pro-vision")
response = model.generate_content(
    [
        landmark1,
        "city: Rome, Landmark: the Colosseum",
        landmark2,
        "city: Beijing, Landmark: Forbidden City",
        landmark3,
    ]
)
print(response)

無料の期限(2024年の頭までかな)があると思うが、お金を払わず、トイプロジェクトができることはGoogleに感謝の気持ちでいっぱい。
有料になっても、
テキスト入力 0.00025ドル/1,000文字
テキスト出力 0.0005ドル/1,000文字
になるようだ。

10
6
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
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?