谷歌Gemini Pro模型 Api 调用

写在前面

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

  • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

向日葵远程工具安装Mysql的安装与配置

目录 一、向日葵远程工具安装 1.1 简介 1.2 下载地址 二、Mysql 5.7 安装与配置 2.1 简介 2.2 安装 2.3 初始化mysql服务端 2.4 启动mysql服务 2.5 登录mysql 2.6 修改密码 2.7 设置外部访问 三、思维导图 一、向日葵远程工具安装 1.1 简介 向日葵远程控制是一款用…

javascript之跳转页面的几种方法?

文章目录 前言代码演示及解释使用location.href属性使用location.assign()方法使用location.replace()方法使用window.open()方法使用document.URL方法 总结 前言 本章学习的是JavaScript中的跳转页面的几种方法 代码演示及解释 使用location.href属性 可以直接将一个新的URL…

HarmonyOS 路由传参

本文 我们来说两个page界面间的数据传递 路由跳转 router.pushUrl 之前我们用了不少了 但是我们只用了它的第一个参数 url 其实他还有个params参数 我们第一个组件可以编写代码如下 import router from ohos.router Entry Component struct Index {build() {Row() {Column() …

C#上位机与欧姆龙PLC的通信08----开发自己的通讯库读写数据

1、介绍 前面已经完成了7项工作: C#上位机与欧姆龙PLC的通信01----项目背景-CSDN博客 C#上位机与欧姆龙PLC的通信02----搭建仿真环境-CSDN博客 C#上位机与欧姆龙PLC的通信03----创建项目工程-CSDN博客 C#上位机与欧姆龙PLC的通信04---- 欧姆龙plc的存储区 C#上…

项目 杂碎 知识点 汇总!!!

Vue !!! setup生命周期 使用 nextTick !!获取节点 onMounted中可以使用JS,获取节点,setup生命周期无法获取节点 vue实现文本粘贴复制 Vue遍历对象 1、使用v-for指令:可以直接遍历对象的键和值 2、使用 Object.keys…

(已解决)word如何制作和引用参考文献

文章目录 正文其他 一般使用latex,但是有的时候会遇到使用word的情况,这里记录一下word如何弄参考文献。 正文 1.首先复制你的参考文献到word里面,然后要编号,记住,一定要编号,否则到时候无法引用。 那么…

深度学习|2.11 向量化vectorization

2.11 向量化的作用 向量化可以使得向量中的每一个维度的数据进行并行计算,从而加快了神经网络的计算速度。 验证 其他

Eureka注册及使用

一、Eureka的作用 Eureka是一个服务注册与发现的工具,主要用于微服务架构中的服务发现和负载均衡。其主要作用包括: 服务提供者将自己注册到Eureka Server上,包括服务的地址和端口等信息。服务消费者从Eureka Server上获取服务提供者的地址…

Jetson_Xavier_NX开发板重编译RT内核

一、准备源码和交叉编译工具 官方网址:Jetson Linux Archive | NVIDIA Developer 我的板子的jtop显示内核为35.4.1,因此以35.4.1为例: 点击进入: 新版本和老版本不一样,如果是老版本要注意自己的型号 不同版本的包名也不一样,但内部文件相差不大,注意仔细区分。 以3…

PiflowX组件-JDBCWrite

JDBCWrite组件 组件说明 使用JDBC驱动向任意类型的关系型数据库写入数据。 计算引擎 flink 有界性 Sink: Batch Sink: Streaming Append & Upsert Mode 组件分组 Jdbc 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默…

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

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

Flume基础知识(一):Flume组成原理与架构

1. Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。 Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。 2. Fl…

win10连上了wifi热点但是无法上网

我的情况是能正常连接wifi热点(手机连接这个热点能上网,说明这个wifi热点是正常的) 但是没法上网 打开cmd窗口发现能ping通百度,掘金,csdn这些网址。这就更奇怪了!于是根据上面的提示,检查了代…

PCBA电阻失效分析

一、案例背景 PCBA电阻使用一段时间后发生功能失效不良,据此情况,对失效电阻进行分析,明确失效原因。 二、分析过程 1、针对排阻的分析 数据通讯的主要连接点: 电阻测试结果: 测试结果:RP2、RP5 排阻第 3 …

Android Studio xml布局代码补全功能失效问题

这里写目录标题 前言:问题描述原因分析:解决方案:1.更新 Android Studio 版本2.原版本解决XML补全失效 小结 前言: 在开发过程中,你可能遇到很多奇奇怪怪的问题。Android Studio 编译器出现问题也是常有的事情&#x…

【计算机设计大赛作品】豆瓣电影数据挖掘可视化—信息可视化赛道获奖项目深入剖析【可视化项目案例-22】

文章目录 一.【计算机设计大赛作品】豆瓣电影数据挖掘可视化—信息可视化赛道获奖项目深入剖析【可视化项目案例-22】1.1 项目主题:豆瓣电影二.代码剖析2.1 项目效果展示2.2 服务端代码剖析2.3 数据分析2.4 数据评分三.寄语四.本案例完整源码下载一.【计算机设计大赛作品】豆瓣…

Qt高质量的开源项目合集

文章目录 1.Qt官网下载/文档2.第三方开源 1.Qt官网下载/文档 Qt Downloads Qt 清华大学开源软件镜像站 Qt 官方博客 2.第三方开源 记录了平常项目开发中用到的第三方库,以及一些值得参考的项目! Qt AV 基于Qt和FFmpeg的跨平台高性能音视频播放框…

【C Primer Plus第六版 学习笔记】 第十六章 C预处理器和C库

有基础,进阶用,个人查漏补缺 第十五章的内容之前学过,跳过 预处理之前,编译器必须对该程序进行一些翻译处理 首先把源代码中出现的字符映射到原字符集 其次编译器定位每个反斜杠后面跟着换行符的实例,并删除它们&…

数据结构基本概念

数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。它包括数据的逻辑结构、数据的存储结构和数据的基本运算。 数据的逻辑结构 数据的逻辑结构是指数据元素之间的逻辑关系。所谓逻辑关系是指数据元素之间的关联方式或“邻接关系”。 逻辑结构与数据元素本…

[④Meson]: Unit Tests

前言 Meson构建系统支持uni-tests,使用run()命令可以非常方便进行uni-test测试。 Syntax 基本语法: e executable(prog, source.c) test(name of test, e)下面是创建两个可执行程序,并且将它们在test中使用的例子: test0 e…