如何免費訪問和使用Gemini API?
譯文Gemini是谷歌開發(fā)的一個新模型。有了Gemini可以為查詢提供圖像、音頻和文本,獲得幾乎完美的答案。
我們在本教程中將學(xué)習(xí)Gemini API以及如何在機器上設(shè)置它。我們還將探究各種Python API函數(shù),包括文本生成和圖像理解。
Gemini AI模型介紹
Gemini是谷歌研究院和谷歌DeepMind等團隊合作開發(fā)的新型AI模型。它為多模態(tài)而建,理解并處理不同類型的數(shù)據(jù),比如文本、代碼、音頻、圖像和視頻。
Gemini是谷歌迄今為止開發(fā)的最先進、最龐大的AI模型。它非常靈活,可以從數(shù)據(jù)中心到移動設(shè)備的各種系統(tǒng)上高效運行。這意味著它有望徹底改變企業(yè)和開發(fā)人員構(gòu)建和擴展AI應(yīng)用程序的方式。
以下是針對不同用例設(shè)計的Gemini模型的三個版本:
- Gemini Ultra:最龐大最先進的AI,能夠執(zhí)行復(fù)雜的任務(wù)。
- Gemini Pro:一種良好性能和可擴展性兼?zhèn)涞哪P汀?/span>
- Gemini Nano:最適合移動設(shè)備。
Gemini Ultra具有最先進的性能,在幾個指標(biāo)上超過了GPT-4的性能。它是第一個在大規(guī)模多任務(wù)語言理解基準(zhǔn)測試中超越人類專家的模型,該基準(zhǔn)測試57個不同學(xué)科的世界知識和解決問題的能力。這展示了其先進的理解和解決問題的能力。
設(shè)置
要使用API,我們必須先獲得一個API密鑰,可以從這里獲?。篽ttps://ai.google.dev/tutorials/setup。
然后,點擊“獲取API密鑰”按鈕,隨后點擊“在新項目中創(chuàng)建API密鑰”。
復(fù)制API密鑰并將其設(shè)置為環(huán)境變量。我們使用Deepnote,很容易設(shè)置名為“GEMINI_API_KEY”的密鑰。只要轉(zhuǎn)入到集成,向下滾動并選擇環(huán)境變量。
在下一步中,我們將使用PIP安裝Python API:
pip install -q -U google-generativeai
之后,我們將根據(jù)谷歌的GenAI設(shè)置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
設(shè)置好API密鑰后,使用Gemini Pro模型生成內(nèi)容就很簡單。向‘generate_content’函數(shù)提供一個提示,將輸出顯示為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可以為一個提示生成多個響應(yīng),名為候選響應(yīng)。你可以選擇最合適的一個。在本文的例子中,我們只有一個響應(yīng)。
response.candidates
不妨讓它用Python編寫一個簡單的游戲。
response = model.generate_content("Build a simple game in Python")
Markdown(response.text)
結(jié)果很簡單,也很中肯。大多數(shù)LLM開始解釋Python代碼,而不是編寫代碼。
配置響應(yīng)
你可以使用‘generation_config’變量定制響應(yīng)。我們將候選響應(yīng)計數(shù)限制為1,添加停止詞“space”,并設(shè)置最大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)
正如你所見,響應(yīng)在“space“這個單詞前停止了。很神奇。
流式傳輸響應(yīng)
你也可以使用‘stream ’參數(shù)來流式傳輸響應(yīng)。它類似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的多模態(tài)性。將圖像加載到“PIL”中并顯示它。
import PIL.Image
img = PIL.Image.open('images/photo-1.jpg')
img
我們有一張奧古斯塔拱門的高質(zhì)量圖像。
不妨加載Gemini Pro Vision模型,并為其提供該圖像。
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(img)
Markdown(response.text)
該模型準(zhǔn)確地識別了宮殿,并提供了有關(guān)其歷史和建筑的更多信息。
不妨將相同的圖像提供給GPT-4,并向它詢問該圖像。兩種模型都給出了幾乎相似的答案,但我更喜歡GPT-4的響應(yīng)。
我們將向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模型難以生成長格式博文。
聊天對話會話
我們可以設(shè)置模型進行來回的聊天會話。這樣一來,模型可以使用之前的對話記住上下文和響應(yīng)。
在本文中,我們已開始了聊天會話,并要求模型幫助我開始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}'))
我們可以向下滾動,并查看模型的整個會話。
使用嵌入
嵌入模型在上下文感知應(yīng)用程序中越來越受歡迎。Gemini embedding-001模型允許將單詞、句子或整個文檔表示為編碼語義含義的密集向量。這種向量表示可以通過比較不同文本片段對應(yīng)的嵌入向量來方便地比較它們之間的相似性。
我們可以將內(nèi)容提供給“embed_content”,并將文本轉(zhuǎn)換為嵌入。就是這么簡單。
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”參數(shù),將多個文本塊轉(zhuǎn)換為嵌入。
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]
如果你在重現(xiàn)同樣的結(jié)果時遇到麻煩,請查看Deepnote工作區(qū)(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)。
結(jié)語
有很多高級函數(shù)在本入門教程中并沒有介紹。你可以通過《Gemini API: Python快速入門》了解關(guān)于Gemini API的更多信息:https://ai.google.dev/tutorials/python_quickstart#generate_text_from_text_inputs.
我們在本教程中學(xué)習(xí)了Gemini以及如何訪問Python API來生成響應(yīng)。尤其是,我們學(xué)習(xí)了文本生成、視覺理解、流傳輸、對話歷史、自定義輸出和嵌入。然而,Gemini的功能太強大了,本文只涉及皮毛。
原文標(biāo)題:How to Access and Use Gemini API for Free,作者:Abid Ali Awan