如何免費訪問和使用Gemini API?
譯文Gemini是谷歌開發的一個新模型。有了Gemini可以為查詢提供圖像、音頻和文本,獲得幾乎完美的答案。
我們在本教程中將學習Gemini API以及如何在機器上設置它。我們還將探究各種Python API函數,包括文本生成和圖像理解。
Gemini AI模型介紹
Gemini是谷歌研究院和谷歌DeepMind等團隊合作開發的新型AI模型。它為多模態而建,理解并處理不同類型的數據,比如文本、代碼、音頻、圖像和視頻。
Gemini是谷歌迄今為止開發的最先進、最龐大的AI模型。它非常靈活,可以從數據中心到移動設備的各種系統上高效運行。這意味著它有望徹底改變企業和開發人員構建和擴展AI應用程序的方式。
以下是針對不同用例設計的Gemini模型的三個版本:
- Gemini Ultra:最龐大最先進的AI,能夠執行復雜的任務。
- Gemini Pro:一種良好性能和可擴展性兼備的模型。
- Gemini Nano:最適合移動設備。
Gemini Ultra具有最先進的性能,在幾個指標上超過了GPT-4的性能。它是第一個在大規模多任務語言理解基準測試中超越人類專家的模型,該基準測試57個不同學科的世界知識和解決問題的能力。這展示了其先進的理解和解決問題的能力。
設置
要使用API,我們必須先獲得一個API密鑰,可以從這里獲取:https://ai.google.dev/tutorials/setup。
然后,點擊“獲取API密鑰”按鈕,隨后點擊“在新項目中創建API密鑰”。
復制API密鑰并將其設置為環境變量。我們使用Deepnote,很容易設置名為“GEMINI_API_KEY”的密鑰。只要轉入到集成,向下滾動并選擇環境變量。
在下一步中,我們將使用PIP安裝Python API:
pip install -q -U google-generativeai
之后,我們將根據谷歌的GenAI設置API密鑰,并初始化實例。
import google.generativeai as genai
import os
gemini_api_key = os.environ["GEMINI_API_KEY"]
genai.configure(api_key = gemini_api_key)
使用Gemini Pro
設置好API密鑰后,使用Gemini Pro模型生成內容就很簡單。向‘generate_content’函數提供一個提示,將輸出顯示為Markdown。
from IPython.display import Markdown
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("Who is the GOAT in the NBA?")
Markdown(response.text)
這令人驚訝,但我不同意這個列表。然而,我明白這完全是個人喜好。
Gemini可以為一個提示生成多個響應,名為候選響應。你可以選擇最合適的一個。在本文的例子中,我們只有一個響應。
response.candidates
不妨讓它用Python編寫一個簡單的游戲。
response = model.generate_content("Build a simple game in Python")
Markdown(response.text)
結果很簡單,也很中肯。大多數LLM開始解釋Python代碼,而不是編寫代碼。
配置響應
你可以使用‘generation_config’變量定制響應。我們將候選響應計數限制為1,添加停止詞“space”,并設置最大token和溫度。
response = model.generate_content(
'Write a short story about aliens.',
generation_config=genai.types.GenerationConfig(
candidate_count=1,
stop_sequences=['space'],
max_output_tokens=200,
temperature=0.7)
)
Markdown(response.text)
正如你所見,響應在“space“這個單詞前停止了。很神奇。
流式傳輸響應
你也可以使用‘stream ’參數來流式傳輸響應。它類似Anthropic和OpenAI API,但速度更快。
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("Write a Julia function for cleaning the data.", stream=True)
for chunk in response:
print(chunk.text)
使用Gemini Pro Vision
下面我們將加載Masood Aslami的圖像,并用它來測試Gemini Pro Vision的多模態性。將圖像加載到“PIL”中并顯示它。
import PIL.Image
img = PIL.Image.open('images/photo-1.jpg')
img
我們有一張奧古斯塔拱門的高質量圖像。
不妨加載Gemini Pro Vision模型,并為其提供該圖像。
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(img)
Markdown(response.text)
該模型準確地識別了宮殿,并提供了有關其歷史和建筑的更多信息。
不妨將相同的圖像提供給GPT-4,并向它詢問該圖像。兩種模型都給出了幾乎相似的答案,但我更喜歡GPT-4的響應。
我們將向API提供文本和圖像。我們讓Vision模型用圖像作為參考寫一篇旅游博文。
response = model.generate_content(["Write a travel blog post using the image as reference.", img])
Markdown(response.text)
它為我提供了一個簡短的博文,我原以為是更長的格式。
與GPT-4相比,Gemini Pro Vision模型難以生成長格式博文。
聊天對話會話
我們可以設置模型進行來回的聊天會話。這樣一來,模型可以使用之前的對話記住上下文和響應。
在本文中,我們已開始了聊天會話,并要求模型幫助我開始Dota 2游戲。
model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
chat.send_message("Can you please guide me on how to start playing Dota 2?")
chat.history
如你所見,“chat”對象保存用戶和模式聊天的歷史記錄。
我們還可以以Markdown樣式顯示它們。
for message in chat.history:
display(Markdown(f'**{message.role}**: {message.parts[0].text}'))
不妨問一個緊跟的問題。
chat.send_message("Which Dota 2 heroes should I start with?")
for message in chat.history:
display(Markdown(f'**{message.role}**: {message.parts[0].text}'))
我們可以向下滾動,并查看模型的整個會話。
使用嵌入
嵌入模型在上下文感知應用程序中越來越受歡迎。Gemini embedding-001模型允許將單詞、句子或整個文檔表示為編碼語義含義的密集向量。這種向量表示可以通過比較不同文本片段對應的嵌入向量來方便地比較它們之間的相似性。
我們可以將內容提供給“embed_content”,并將文本轉換為嵌入。就是這么簡單。
output = genai.embed_content(
model="models/embedding-001",
content="Can you please guide me on how to start playing Dota 2?",
task_type="retrieval_document",
title="Embedding of Dota 2 question")
print(output['embedding'][0:10])
[0.060604308, -0.023885584, -0.007826327, -0.070592545, 0.021225851, 0.043229062, 0.06876691, 0.049298503, 0.039964676, 0.08291664]
我們可以通過將字符串列表傳遞給“content”參數,將多個文本塊轉換為嵌入。
output = genai.embed_content(
model="models/embedding-001",
content=[
"Can you please guide me on how to start playing Dota 2?",
"Which Dota 2 heroes should I start with?",
],
task_type="retrieval_document",
title="Embedding of Dota 2 question")
for emb in output['embedding']:
print(emb[:10])
[0.060604308, -0.023885584, -0.007826327, -0.070592545, 0.021225851, 0.043229062, 0.06876691, 0.049298503, 0.039964676, 0.08291664]
[0.04775657, -0.044990525, -0.014886052, -0.08473655, 0.04060122, 0.035374347, 0.031866882, 0.071754575, 0.042207796, 0.04577447]
如果你在重現同樣的結果時遇到麻煩,請查看Deepnote工作區(https://deepnote.com/workspace/abid-5efa63e7-7029-4c3e-996f-40e8f1acba6f/project/How-to-Access-and-Use-Gemini-API-55818013-847a-46c6-ac51-9c814955f5cd/notebook/Notebook%201-af572259a2374c39a21eb31a63dc23a7https://deepnote.com/workspace/abid-5efa63e7-7029-4c3e-996f-40e8f1acba6f/project/How-to-Access-and-Use-Gemini-API-55818013-847a-46c6-ac51-9c814955f5cd/notebook/Notebook%201-af572259a2374c39a21eb31a63dc23a7)。
結語
有很多高級函數在本入門教程中并沒有介紹。你可以通過《Gemini API: Python快速入門》了解關于Gemini API的更多信息:https://ai.google.dev/tutorials/python_quickstart#generate_text_from_text_inputs.
我們在本教程中學習了Gemini以及如何訪問Python API來生成響應。尤其是,我們學習了文本生成、視覺理解、流傳輸、對話歷史、自定義輸出和嵌入。然而,Gemini的功能太強大了,本文只涉及皮毛。
原文標題:How to Access and Use Gemini API for Free,作者:Abid Ali Awan