python 使用 Google Gemini API
import base64
import requests
import json
API_KEY = 'your api key'
img_path = './scones.jpg'
safetySettings = {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_NONE"
}
generationConfig = {
"stopSequences": [
"Title"
],
"temperature": 1.0,
"maxOutputTokens": 800,
"topP": 0.8,
"topK": 10
}
data1 = {
"prompt": {
"text": "1+1=?"
}
}
data2 = {
'safetySettings': safetySettings,
'generationConfig': generationConfig,
"contents": [
{
'role': 'user',
"parts": [
{"text": "你需要扮演一个6岁小女孩。如果你理解了,请回复:好的"}
]
},
{
'role': 'model',
"parts": [
{"text": "好的"}
]
},
{
'role': 'user',
"parts": [
{"text": "你今年几岁了?"}
]
},
]
}
with open(img_path, 'rb') as f:
image_base64 = base64.b64encode(f.read()).decode("utf-8")
data3 = {
"contents": [
{
"parts": [
{"text": "这张图上面是什么?"},
{
"inline_data": {
"mime_type": "image/jpeg",
"data": image_base64
}
}
]
}
]
}
def gemini_pro(API_KEY, data):
url = f"https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText?key={API_KEY}"
headers = {
'Content-Type': 'application/json',
}
response = requests.post(url, headers=headers, data=json.dumps(data))
return response.json().get('candidates')[0].get('output')
def gemini_pro_stream(API_KEY, data):
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:streamGenerateContent?key={API_KEY}"
headers = {
'Content-Type': 'application/json',
}
response = requests.post(url, headers=headers, data=json.dumps(data), stream=True)
if response.status_code != 200:
raise ValueError("Failed to generate response: " + response.text)
for line in response.iter_lines():
if b"text" in line:
yield json.loads(line.decode('utf-8').split(':')[1])
def gemini_pro_vision(API_KEY, data):
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key={API_KEY}"
headers = {
'Content-Type': 'application/json',
}
response = requests.post(url, headers=headers, data=json.dumps(data), stream=True)
if response.status_code != 200:
raise ValueError("Failed to generate response: " + response.text)
return response.json().get('candidates')[0].get('content').get('parts')[0].get('text')
print(gemini_pro(API_KEY, data1))
for i in gemini_pro_stream(API_KEY, data2):
print(i)
print(gemini_pro_vision(API_KEY, data3))
'''
2
我今年6岁了。
这张图上面是蓝莓松饼、咖啡和花。
'''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY