谷歌Gemini Pro模型 Api 调用

news2024/11/25 13:33:54

写在前面

本篇博客主要介绍如下内容

  • Gemini Pro模型 ApiKey的申请
  • Gemini Pro模型 Api调用的方法
  • 几个模型Api调用的demo程序
  • 调用Gemini Pro模型中可能遇到的问题及解决方案

模型 ApiKey的申请

  1. 注册好Google账号,并在浏览器完成登录
  2. 访问 : https://makersuite.google.com/app/apikey
  3. 按照下图操作,获取key
    在这里插入图片描述

调用方法

一、 使用http进行调用

import requests
import json

def test_with_http(apikey, text):
    url = f'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={apikey}'
    headers = {'Content-Type': 'application/json'}
    data = {
        'contents': [
            {
                'parts': [
                    {
                        'text': text
                    }
                ]
            }
        ]
    }
    response = requests.post(url, headers=headers, data=json.dumps(data))
    print(response.json())

if __name__ == '__main__':
    apikey = "这里换成ApiKey"
    text = "请做一个自我介绍"
    test_with_http(apikey=apikey, text=text)

二、基于Google提供的 Python 库

注意

根据Gemini Api的使用文档介绍,要求Python版本在3.9以上,本次测试为 3.10 版本
在这里插入图片描述

步骤

1.(可选) 建议创建一个全新的Python虚拟环境: python -m venv pyvenv
2.(可选)激活当前环境 : .\pyvenv\Scripts\activate
3. 安装Google提供的google-generativeai库:pip install google-generativeai
4. 测试代码:

import google.generativeai as genai


def test_with_api(apikey, text):
    # 注意这行代码,官方提供的demo没有transport='rest' 会出现超时问题,因此一点要加上
    genai.configure(api_key=apikey, transport='rest')
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content(text, stream=True)
    for chunk in response:
        print(chunk.text, end='', flush=True)


if __name__ == '__main__':
    apikey = "这里换成ApiKey"
    text = "请做一个自我介绍"
    test_with_api(apikey=apikey, text=text)
  1. 输出结果
    在这里插入图片描述
可能遇到的报错
  1. 由于每个人电脑的Python环境不同,有可能出现google-auth版本过低等相关报错

解决方案:
升级 google-auth ,在终端执行下面指令
pip install --upgrade google-auth

  1. 连接超时问题 google.api_core.exceptions.RetryError: Deadline of 60.0s exceeded while calling target function

原因:

  1. 网络问题,这个情况自行Google、BaiDu解决
  2. 没有设置网络传输方式 transport = ‘rest’,也就是步骤4中提示的注意点,此时需要在代码中修改为 : genai.configure(api_key=apikey, transport='rest')

Gemini-Pro模型中其他应用场景

使用gemini-pro-vision进行图片API调用

目前,Gemini提供了2个免费的APi服务:
在这里插入图片描述

步骤
  1. 安装pillow库 : pip install pillow
  2. 注意:使用的图片格式尽量为jpg格式,并且图片尽量小一点,可以拿500kb以下的进行测试
  3. 代码
import google.generativeai as genai
import PIL.Image


def test_gemini_pro_vision(apikey, text, image_path):
    genai.configure(api_key=apikey, transport='rest')
    model = genai.GenerativeModel('gemini-pro-vision')
    img = PIL.Image.open(image_path)
    response = model.generate_content([text, img], stream=True)
    response.resolve()
    print(response.text)


if __name__ == '__main__':
    apikey = "这里换成ApiKey"
    test_gemini_pro_vision(apikey, text="请你描述一下图片的内容。", image_path='2.jpg')

在这里插入图片描述

参考

  1. 关于更多Gemini-Api的应用场景和使用说明,参考 : Gemini API: Quickstart with Python
  2. 谷歌Gemini Api Key获取方式: apikey

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低成本TB级数据库技术选型之思考两三点

一、背景 前段时间在搞毕业论文的选题,最头疼的就是大量的文献检索和阅读,从研究的角度上我们可以将文献分为四类: 理论文献:为研究提供理论的框架和基础的文献。这些文献可能并不会和所做的研究直接相关,甚至由于理…

梦里河山:自在正定,跨年寄语

‍ ‍雏鹰高飞,我们也渐渐失去了新年第一天去香炉峰顶祈福的动力。向往着梦里河山,于是启动了这次的跨年之旅。 雾途 放假的第一天,早早起床,7点钟开车驱往赵子龙的故乡——正定。万万没有想到,出了五环,晨…

老品牌新玩法?经济内循环下逆势开出100多家门店,他被央视青睐!

2023年12月26日,CCTV-2整点财经栏目以“抢抓复苏机遇,连锁品牌主打新活力”为主题,播报我国老品牌发展现状,新消费时代以来,消费者的选择多样化、分众化、小众化、个性化,给“老品牌”发展带来前所未有的挑…

计算机毕业设计——SpringBoot社区物业管理系统(附源码)

1, 概述 1.1 课题背景 近几年来,随着物业相关的各种信息越来越多,比如报修维修、缴费、车位、访客等信息,对物业管理方面的需求越来越高,我们在工作中越来越多方面需要利用网页端管理系统来进行管理,我们…

Java商城 免 费 搭 建:鸿鹄云商实现多种商业模式,VR全景到SAAS,应有尽有

鸿鹄云商 b2b2c产品概述 【b2b2c平台】,以传统电商行业为基石,鸿鹄云商支持“商家入驻平台自营”多运营模式,积极打造“全新市场,全新 模式”企业级b2b2c电商平台,致力干助力各行/互联网创业腾飞并获取更多的收益。从消…

Vue-响应式数据

一、ref创建基本类型的响应式数据 vue3可以使用ref、reactive去定义响应式数数据。 知识点汇总 使用ref需要先引入ref,import {ref} from vue在模板 template 中使用了添加ref 的响应式数据,变量的后面不用添加.value所有js代码里面,去操作r…

Python进行批量字符替换的3种方法

一、问题的提出 之前,我写过一篇如何在word中计算数学算式: 如何用Python批量计算Word中的算式-CSDN博客 为了计算算式,就需要对算式进行格式化,把不规则的算式转换成规则的算式,这时就会涉及到一些字符的批量替换。…

Spring见解 1

1.Spring概述 1.1.Spring介绍 ​ Spring是轻量级Java EE应用开源框架(官网: http://spring.io/ ),它由Rod Johnson创为了解决企业级编程开发的复杂性而创建 1.2.简化应用开发体现在哪些方面? IOC 解决传统Web开发中…

uni-app App.vue生命周期全局样式全局存储globalData

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

小企业是否应该采用SD-WAN组网?

在当今数字化时代,企业成功的关键之一是建立稳定高效的网络连接。无论企业规模大小如何,网络都是实现高效运营和达成业务目标的重要组成部分。对于小企业而言,考虑成本效益和资源管理显得尤为重要。那么,对于小企业来说&#xff0…

Rust赋值语句和数字类型

赋值语句 在Rust中,使用let关键字定义变量。格式是let 变量名:变量类型 变量值;,下边是个例子: let age:i32 18;这就是定义一个有符号32位的数字变量age,而其中的值是18。 而在C语言定义变量的语句格式是类型 变量名 变量值。…

2023年“中银杯”安徽省网络安全B模块(部分解析)

前言 以下是2023年中银杯安徽省网络安全B模块题目,镜像可以私聊我 B模块安全事件响应/网络安全数据取证/应用安全(400 分) B-1:CMS网站渗透测试 任务环境说明: √服务器场景:Server2206(关…

详解动态顺序表

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

SIC产业链简述

同第一代硅半导体产业链类似,SiC产业链也分为以下几个环节: 设备和材料环节,包括晶体生长炉、MOCVD、切割设备、碳粉/硅粉/SiC粉体、石墨件等耗材; SiC衬底合外延环节,包括导SiC晶体生长、衬底晶片、外延片等制造&am…

[嵌入式专栏](FOC - 单电阻,双电阻,三电阻采样原理)

文章目录 1 . 前言2 . 三电阻方案2.1 电路接法2.2 采样原理2.3 采样注意事项 3 . 双电阻方案3.1 电路接法3.2 采样原理3.3 采样注意事项 4 . 单电阻方案4.1 电路接法4.2 采样原理4.3 采样注意事项4.4 采样时机4.5 开关管状态-电流方向 5 . 运放接法6 . AD采样周期7 . 小结 【极…

Dryad数据库学习

从一篇science论文中看到数据存储在了这个平台,这里分享一下:datadryad.org 亲测无需注册,可以直接下载,从一个数据测试看,数据存储在亚马逊云,下载速度还可以,6M/s的样子。 Dryad 是一个开放的…

Kioptrix-5

环境搭建 将原来的网络适配器删除掉,重新配置一个即可! 靶场下载地址:Kioptrix: 2014 (#5) ~ VulnHub 信息收集 nmap -sn 192.168.1.0/24 -oN live.port 发现存活主机为192.168.1.159,探测开放的端口信息: # nmap…

2024年最火爆的前端技术:虚拟DOM让页面性能飞升!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 前言 正文 📘 一、什么是虚拟D…

KBDNO1.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复

不少小伙伴,求助电脑报错“KBDNO1.DLL文件缺失,软件或游戏无法启动或运行”,应该怎么办? 首先,我们先来了解“KBDNO1.DLL文件”是什么? KBDNO1.DLL是Windows操作系统中的一个动态链接库文件,主…

Nginx解决跨域问题过程

学习Nginx解决跨域问题 结果 server {listen 22222;server_name localhost;location / {if ($request_method OPTIONS) {add_header Access-Control-Allow-Origin http://localhost:8080;add_header Access-Control-Allow-Headers *;add_header Access-Control-Allo…