使用 Gemini API 設計 Generative AI Application

2024-01-17

筆記如何使用 Google Gemini API 來打造生成式 AI 的應用 (Generative AI Application) 😎

logo

說明

首先要前往 https://ai.google.dev/ 申請 API Key 同時也有 Prompt 的互動介面可以測試。

日後管理介面則前往 https://makersuite.google.com/app/prompts



馬上參考 Gemini API: Quickstart with Python 馬上動手進行應用。

第一步是先透過 pip 安裝 library 簡化 API 的使用

pip install -q -U google-generativeai

接著是設定使用的模型、API Key 以及相關的設定。

import google.generativeai as genai
import settings

genai.configure(api_key= settings.api_key)

model = genai.GenerativeModel(
    'gemini-pro', 
    generation_config=settings.generation_config, 
    safety_settings=settings.safety_settings)

settings.py

api_key = ''

generation_config = {
  "temperature": 0.9,
  "top_p": 1,
  "top_k": 1,
  "max_output_tokens": 2048,
}

safety_settings = [
  {
    "category": "HARM_CATEGORY_HARASSMENT",
    "threshold": "BLOCK_NONE"
  },
  {
    "category": "HARM_CATEGORY_HATE_SPEECH",
    "threshold": "BLOCK_NONE"
  },
  {
    "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
    "threshold": "BLOCK_NONE"
  },
  {
    "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
    "threshold": "BLOCK_NONE"
  },
]

為了避免誤判,將生成內容安全性的封鎖都關閉,但如果要做為對外客服內容的處理,切記要選擇適當的 threshold。

app.py

response = model.generate_content("What is the meaning of life?")
response.text

使用 response.text 就可以取得回應內容

for candiate in response.candidates:
  print(candidate.content.parts[0].text)

但如果有多個回應,可以改用 response.candidates 的方式存取回應內容。

import PIL.Image
img = PIL.Image.open('image.jpg')

model = genai.GenerativeModel('gemini-pro-vision')

response = model.generate_content(
  ["Analyze the nutritional value of the following food and estimate its calorie content on this picture.", img], stream=True)

response.resolve()
response.text

將模型調整為 gemini-pro-vision 可以結合 prompt 問題以及圖片達到生成式人工智慧的多模態應用 (Multimodal)。