iT邦幫忙

2

#2 Python SDK for Gemini API 使用 Google 的 Gemini 大型語言模型

  • 分享至 

  • xImage
  •  

本篇我們要接續#1 製作屬於自己的 AI Vtuber
https://ithelp.ithome.com.tw/articles/10352663

此流程通過整合 Google Gemini API、EDGE TTS、VB-Audio 虛擬音頻、Vtube Studio 以及 YouTube Data API,實現了從文本生成到語音合成,再到聊天室實時互動的全面應用。人人都可以製作出自己的AI Vtuber!

  • Python連接Google Gemini API與AI對話
  • AI人物設定
  • 加入EDGE TTS使AI對話輸出音效
  • VB-Audio虛擬音源下載
  • 用戶自訂輸出音源測試
  • Vtube Studio接音源後嘴吧開閉互動
  • 整合目前功能(模型對話+從Vtube Studio嘴吧輸出音效)
  • YouTube Data API接取live chat id 讀取聊天室資訊

本篇
Python連接Google Gemini API與AI對話

  • 流程:
  • 創建Google Gemini API
  • python連接Google Gemini API
  • 設計一個簡易GUI對話框

創建Google Gemini API

https://ai.google.dev/gemini-api?gad_source=1&gclid=Cj0KCQjwrp-3BhDgARIsAEWJ6SwaQV-Fs2jtEo6GUQ7swWjfnU5OQMBQ5n8DtcCILAgO1HSmS1X0cyYaAnn7EALw_wcB&hl=zh-tw
按著圖片順序創建金鑰
https://ithelp.ithome.com.tw/upload/images/20240917/20167256JoUbzJ3rOs.png
https://ithelp.ithome.com.tw/upload/images/20240917/20167256d3Q2aD4Xci.png
https://ithelp.ithome.com.tw/upload/images/20240917/201672568TN0wUQMi7.pnghttps://ithelp.ithome.com.tw/upload/images/20240917/20167256YE6dA9ZW9X.png
記得複製自己的API KEY。

python連接Google Gemini API
Gemini APK操作手冊https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#python

回到Google Gemini API主畫面右上角,有教學說什麼語言該用甚麼寫法,框架已經幫我們寫好了,我們只需放入剛剛的API KEY。
https://ithelp.ithome.com.tw/upload/images/20240917/20167256wZykiVTBAj.png
https://ithelp.ithome.com.tw/upload/images/20240917/20167256bZ93gHqY5J.png

使用了 os.environ 來取得 API 金鑰,但 os.environ 是用來從環境變數中獲取值的。你在代碼中直接將 API 金鑰放入會錯誤!
環境變數是操作系統用來存儲系統級或用戶級配置信息的變數:簡單來說,環境變數就是在你的電腦上事先設定好的配置參數。你在代碼中可以直接使用這些已經保存好的設定,而不用在代碼裡寫死這些參數值。
直接使用 API 金鑰,無需從環境變數中獲取(複製底下代碼後更改api key與提問)
先安裝pip install google-generativeai

"""
Install the Google AI Python SDK

$ pip install google-generativeai
"""

import os
import google.generativeai as genai

genai.configure(api_key="輸入你的api key")

# Create the model
generation_config = {
  "temperature": 1,
  "top_p": 0.95,
  "top_k": 64,
  "max_output_tokens": 8192,
  "response_mime_type": "text/plain",
}

model = genai.GenerativeModel(
  model_name="gemini-1.5-flash",
  generation_config=generation_config,
  # safety_settings = Adjust safety settings
  # See https://ai.google.dev/gemini-api/docs/safety-settings
)

chat_session = model.start_chat(
  history=[
  ]
)

response = chat_session.send_message("你的問題")

print(response.text)

重點解釋:
"temperature": 1,控制生成文本的隨機性,值越高隨機性越大(範圍 0-1)。
"top_p": 0.95,控制選擇單詞的機率,較高的值會選擇更多可能的單詞(範圍 0-1)。
"top_k": 64,控制選擇的單詞數量(範圍 1 到最大詞彙表大小)。
"max_output_tokens": 8192,控制生成文本的最大令牌數(最大字數)。
"response_mime_type": "text/plain",指定返回的文本格式為純文本。
model_name="gemini-1.5-flash"模型使用

稍微等一下就會顯示出來了!
https://ithelp.ithome.com.tw/upload/images/20240917/20167256UWKfv31bVt.png

如果你的文字輸入很久都沒有出現時,請去終端機查看是否有以下這些回應,Google gemini會評估你的提問是超出安全評分,所以...問正常問題...
https://ithelp.ithome.com.tw/upload/images/20240917/20167256Jdsto8sEoV.png

設計一個簡易GUI對話框

來到本篇最後一步了!
就是結合tkinter設計一個簡易對話GUI,代碼可直接複製貼上,改好API KEY就能直接使用~

import tkinter as tk
import google.generativeai as genai

genai.configure(api_key="API KEY")

generation_config = {
    "temperature": 1,
    "top_p": 0.95,
    "top_k": 64,
    "max_output_tokens": 8192,
    "response_mime_type": "text/plain",
}

model = genai.GenerativeModel(
    model_name="gemini-1.5-flash",
    generation_config=generation_config,
)

chat_session = model.start_chat(history=[])

def send_message():
    user_input = message_entry.get()
    if user_input.strip():
        chat_session.send_message(user_input)
        response = chat_session.send_message(user_input)
        response_text = response.text
        chat_display.config(state=tk.NORMAL)
        chat_display.insert(tk.END, f"You: {user_input}\n")
        chat_display.insert(tk.END, f"Bot: {response_text}\n")
        chat_display.config(state=tk.DISABLED)
        message_entry.delete(0, tk.END)

root = tk.Tk()
root.title("簡易聊天視窗")

chat_display = tk.Text(root, height=15, width=50, state=tk.DISABLED)
chat_display.pack(padx=10, pady=10)

message_entry = tk.Entry(root, width=40)
message_entry.pack(side=tk.LEFT, padx=10, pady=10)

send_button = tk.Button(root, text="發送", command=send_message)
send_button.pack(side=tk.RIGHT, padx=10, pady=10)

root.mainloop()

https://ithelp.ithome.com.tw/upload/images/20240917/20167256yRKH9gHj9M.png
這樣就成功完成第一步了!!!恭喜!!!
接著我們進行下一篇,來設計出自己的AI!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言