右も左もわからずの自分がやってみて面白かったとか、備忘録とかにした方がいいと思った物を記事にしたものなります。もし、必要な方にいらっしゃったら、この記事が役に立てたら嬉しいと思います。
なんだと?Gemini APIが無料?
OpenAI社のChatGPTのAPIは初回限定かつ、期限ありで20ドルの枠まで使えたことに対し、GoogleのGeminiはいくつかの制限はあるが無料で使えると発表していた。これを用いれば自分のおもちゃ用ボットとかも作れるわけなので、早速APIしないと思った。
無料の枠でできること
まず、Gemini APIのkeyを発行しよう
以下のページからGemini ProのAPI Keyの申し込みができる
Gemini Pro APIの申請ページ
「Get API key」を押下し、API発行まで進めば完了です。
pythonでやり取り開始
API keyが発行完了したら、すぐpythonを用いて会話ができる。
GenerativeModelに「gemini-pro」を指定したら、テキストベースのみに、「gemini-pro-vision」にすると、イメージなどがインプットができるようになる
→ 「gemini-pro-vision」の場合、model.generate_content()を使用
model.start_chat()からチャットセッションを取得したら会話が続けることができる
チャットプロンプト用はこちら。
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))
マルチモーダル用はこちら。
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文字
になるようだ。