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