本篇我們要接續#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對話
創建Google Gemini API
https://ai.google.dev/gemini-api?gad_source=1&gclid=Cj0KCQjwrp-3BhDgARIsAEWJ6SwaQV-Fs2jtEo6GUQ7swWjfnU5OQMBQ5n8DtcCILAgO1HSmS1X0cyYaAnn7EALw_wcB&hl=zh-tw
按著圖片順序創建金鑰
記得複製自己的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。
使用了 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"模型使用
稍微等一下就會顯示出來了!
如果你的文字輸入很久都沒有出現時,請去終端機查看是否有以下這些回應,Google gemini會評估你的提問是超出安全評分,所以...問正常問題...
設計一個簡易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()
這樣就成功完成第一步了!!!恭喜!!!
接著我們進行下一篇,來設計出自己的AI!