详解Gemini API的使用:在国内实现大模型对话与目标检测教程

摘要:本博客介绍了如何利用Gemini API实现多轮对话和图像目标检测识别功能,在Python中快速搭建自己的大模型完成实际任务。通过详细的步骤解析,介绍了如何申请Gemini API密钥,调用API、对话实现的代码,给出了上传图片识别和检测的示例,并使用OpenCV绘制检测框显示结果。涵盖了从API交互到图像标记的全过程,使用户能够快速实现智能视觉应用,进一步降低了AI技术的使用门槛。

在这里插入图片描述

文章目录

  • 1. 前言:简述几个大模型
  • 2. 申请Gemini API步骤
  • 3. 使用Python调用Gemini API实现对话与目标检测
    • 3.1 调用Gemini API实现简单对话
    • 3.2 调用Gemini API实现多轮对话
    • 3.3 调用Gemini API实现目标检测


1. 前言:简述几个大模型

今年的人工智能火上了诺贝尔奖,随着生成式预训练模型(GPT)和基于Transformer结构的神经网络模型的发展,AI技术迎来了“神仙打架”的局面。无论是美国的OpenAI、Google,还是中国的百度、阿里巴巴、华为,各大公司都纷纷推出了自己的大规模语言模型,推动了人工智能在自然语言处理、图像识别等多个领域的迅速发展。老思十分期待通用人工智能的出现,也希望能用上强大的AI工具解放生产力。

在这里插入图片描述

其实大模型的特点在于其强大的数据理解、生成和推理能力,可以广泛应用于对话、图像生成、文本生成、目标检测等任务。调用API可以用一种更方便、定制化地实现个人或企业需求,在后续的博客中也将介绍更多大模型API的使用方法。在全球范围内,以下是目前较为流行的几种大模型及其特点:

  1. OpenAI GPT-4
    OpenAI的GPT-4是当前全球知名的语言模型之一,具备极强的自然语言理解和生成能力,尤其擅长文本对话和创作。GPT-4的API接口通过OpenAI提供,并可嵌入到不同应用中。 访问链接

  2. Google Gemini
    作为Google的最新大语言模型,Gemini具备较强的语义理解和生成能力,尤其在多语言和多任务处理方面表现出色。Google Bard(现在是Gemini)在对话式AI助手和知识问答领域广泛应用。 访问链接

  3. Claude by Anthropic
    Anthropic的Claude模型以安全性和可控性著称,特别关注生成模型的安全性和公正性。Claude被应用于AI助理等场景,并在模型的价值观和合规性方面进行特殊优化。 访问链接

  4. 百度文心一言 (ERNIE Bot)
    作为国内领先的生成式语言模型,百度文心一言基于ERNIE(Enhanced Representation through Knowledge Integration)技术,尤其适合中文语境下的自然语言理解和生成任务。其能力覆盖对话、图像生成、视频处理等多个领域。 访问链接

  5. 阿里巴巴通义千问
    阿里的通义千问(Tongyi Qianwen)在自然语言生成、机器翻译、文本摘要等任务上表现出色,适合复杂的业务场景。通义千问在电商、客服等领域应用广泛,支持企业级API服务。 访问链接

  6. 华为盘古 (Pangu)
    华为推出的盘古大模型具有强大的数据处理和AI计算能力,特别适用于行业应用场景。盘古大模型适合企业需求,可支持金融、能源等领域的定制化解决方案。 访问链接

这里的前3个都需要科学上网才能访问,国内的一直在对标GPT和赶超,玩法倒是很多也有特色。另外,还有像智普清言、Kimi我也经常使用,可以利用这些大模型快速构建智能对话、图像识别等功能。而Gemini最近出了免费的API,整合起来真是方便好用,能更便捷地将大模型引入到自己的应用中。这里整一个API来玩一下,准备后续搭建一个个人的AI助手。


2. 申请Gemini API步骤

要使用Gemini API,首先需要注册账户并申请API权限。而要在国内访问则需要使用梯子,Gemini对国内或部分国家有限制,没选对节点也是用不了的,这点需要非常明确。如果这步无法进行,那后续确实也没必要看下去了,摊手。以下是申请API的详细步骤,能够顺利获取并配置Gemini API。

(1) 注册Gemini账户

首先,访问Gemini官网,这其实是官方给出的说明文档,文档上有“获取API密钥”按钮:

在这里插入图片描述

点击按钮可以进入到登录界面,这里输入谷歌账号,没有就创建一个(在页面中输入邮箱、密码等基本信息完成注册。请确保输入的信息准确无误,便于后续的账户管理和安全保护。注册完成后,您会收到一封确认邮件,点击邮件中的链接完成账户激活,这样就成功注册了一个Gemini账户。):

在这里插入图片描述
(2) 获取API密钥

打开Google AI Studio 申请api的网址:https://makersuite.google.com/app/apikey。当然你也可以打开Gemini的首页 http://ai.google.dev ,并点击 Get API key in Google AI Studio 按钮。你需要先同意使用条款才能继续使用。进入API的网址后,如果你的网络或配置不对,就会跳到下面的页面,原因这个网页已经告诉你了,你需要改到合适的点。

在这里插入图片描述
在网络正确的情况下,可以进入下面的网页,这里点击密钥或者“API key”,如下图:
在这里插入图片描述

创建完成后点击“API密钥”那里,可以在弹出的复制窗口,那一串字符就是你的API key了:

在这里插入图片描述
(3)查看API文档

在申请API密钥并配置网络环境后,可以进入Gemini API文档页面查看详细的API使用说明。文档中列出了API的所有接口、请求参数和示例代码。阅读API文档能够帮助您更好地理解Gemini的接口设计和使用方法,为后续的代码开发打下基础。根据需求,您可以选择使用文本处理API(例如对话生成)或图像处理API(如目标检测等)。


3. 使用Python调用Gemini API实现对话与目标检测

3.1 调用Gemini API实现简单对话

一旦成功申请到Gemini API密钥,我们就可以通过Python代码调用Gemini的对话接口,实现智能对话功能。以下是一个完整的Python示例,演示如何使用google-generativeai库来配置和调用Gemini API,完成AI对话。

  1. 安装必要的库

    首先,确保安装了google-generativeai库,以便通过genai接口访问Gemini API。您可以使用以下命令安装:

    pip install google-generativeai
    
  2. 配置并调用Gemini对话API
    使用以下代码进行初始化配置,并调用对话接口进行内容生成。请将YOUR_API_KEY替换为您在Gemini开发者中心生成的API密钥。

    import google.generativeai as genai# 配置API密钥和传输协议
    genai.configure(api_key="YOUR_API_KEY", transport='rest')# 初始化模型并生成内容
    model = genai.GenerativeModel("gemini-1.5-flash")
    response = model.generate_content("Explain how AI works")
    print(response.text)
    
  3. 解释代码

    • genai.configure(api_key="YOUR_API_KEY", transport='rest'): 此行配置API密钥和传输协议,其中api_key是您的个人密钥,transport='rest'指定了使用RESTful API进行访问。
    • model = genai.GenerativeModel("gemini-1.5-flash"): 通过GenerativeModel类指定要使用的Gemini模型。在此例中,gemini-1.5-flash表示我们选用Gemini的1.5版本模型,该版本模型速度快且能有效生成对话内容。
    • response = model.generate_content("Explain how AI works"): 使用generate_content方法发送一个文本输入(如"Explain how AI works"),获取AI生成的响应内容。
    • print(response.text): 输出AI生成的文本内容。

注意:这里有个点很重要,你会发现用了个transport='rest',如果你搜网上Gemini API的教程,一堆人机或AI写的教程会告诉你用“genai.configure(api_key=“YOUR_API_KEY”)”,实际就是在国内是用不了的,因为没有ti zi转接。

此代码块可以轻松应用于不同的文本对话任务,运行结果如下:

在这里插入图片描述

只需修改输入内容,即可生成不同的对话回复,用中文也是没得问题的。

import google.generativeai as genai# 配置API密钥和传输协议
genai.configure(api_key="YOUR_API_KEY", transport='rest')# 初始化模型并生成内容
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("请使用中文,解释你是谁")
print(response.text)

这个代码运行,可以出现下面的回答,实际可以扩展到多轮对话。
在这里插入图片描述

3.2 调用Gemini API实现多轮对话

为了实现多轮对话,我们可以创建一个循环,让用户通过键盘输入内容,Gemini生成并输出回复,持续进行互动。以下是经过修改的Python代码,可以实现连续的问答对话。

import google.generativeai as genai# 配置API密钥和传输协议
genai.configure(api_key="YOUR_API_KEY", transport='rest')# 初始化模型
model = genai.GenerativeModel("gemini-1.5-flash")# 记录对话历史
conversation_history = []print("开始对话吧!输入 'exit' 结束对话。")while True:# 用户输入user_input = input("你: ")if user_input.lower() == "exit":print("对话结束。")break# 将用户输入添加到对话历史中conversation_history.append({"role": "user", "content": user_input})# 调用API生成回复response = model.generate_content(user_input)# 输出AI的回复ai_reply = response.textprint("Gemini:", ai_reply)# 将AI回复也添加到对话历史中conversation_history.append({"role": "assistant", "content": ai_reply})

代码解释

  • 循环结构while True循环不断读取用户输入,并将输入内容发送给Gemini API实现多轮对话。
  • 用户输入检测:当用户输入"exit"时,循环会终止,结束对话。
  • 对话历史conversation_history列表用于保存用户和AI之间的对话记录,以便后续扩展时,可以将对话上下文传递给模型,形成更连贯的对话。
  • API调用与输出:调用generate_content生成回复,并将AI回复输出到屏幕上。

通过这个代码,您可以进行多轮对话,每次发送的内容都会作为新的输入,Gemini会基于最新的输入内容生成回复。下面是输入两轮对话的测试结果:

在这里插入图片描述

3.3 调用Gemini API实现目标检测

利用Gemini API,可以实现目标检测功能,不需要构建复杂的模型,仅需通过API便可完成物体识别并获取边界框信息。以下内容将逐步讲解如何使用Python与Gemini API交互,以实现目标检测并在图像中绘制标记。


(1)安装和配置必要的Python库

首先,确保已经安装google-generativeai库,这是调用Gemini API的关键库。还需要安装cv2numpyPillow等库,用于图像处理和绘制边界框:

pip install google-generativeai opencv-python-headless numpy pillow

完成安装后,在代码中配置API密钥,确保能够成功连接Gemini API。


(2)加载图像并与Gemini API进行交互

为了检测图像中的物体,我们首先加载本地图像文件,并通过Gemini模型发送目标检测请求。Gemini API将返回包含物体类别和边界框信息的文本数据,格式为[ymin, xmin, ymax, xmax, classification]。以下是加载图像并请求检测结果的代码:

import google.generativeai as genai
from PIL import Image# 设置API密钥
genai.configure(api_key="YOUR_API_KEY", transport='rest')# 加载图像
input_image = 'picture.png'
img = Image.open(input_image)# 与Gemini模型交互,获取边界框信息
model = genai.GenerativeModel(model_name='gemini-1.5-pro')
response = model.generate_content([img,("Return bounding boxes for all classes observed in the image. ""Format each detection as [ymin, xmin, ymax, xmax, classification]."),
])result = response.text

在上面的代码中,generate_content方法将图像和说明性文本发送给Gemini模型,获取模型的检测结果。result变量中包含了物体检测的返回数据。


(3)解析模型返回的检测结果

Gemini API返回的结果包含了目标检测中的边界框和分类标签。我们可以通过正则表达式解析出这些信息,并将其转换为可以使用的数据格式:

import redef parse_bounding_box(response):bounding_boxes = re.findall(r'\[(\d+,\s*\d+,\s*\d+,\s*\d+,\s*[\w\s]+)\]', response)# 转换为列表parsed_boxes = []for box in bounding_boxes:parts = box.split(',')numbers = list(map(int, parts[:-1]))label = parts[-1].strip()parsed_boxes.append((numbers, label))return parsed_boxes# 使用解析函数
bounding_box = parse_bounding_box(result)
print("检测结果:", bounding_box)

parse_bounding_box函数使用正则表达式从API返回的文本中提取边界框和类别标签。这样,我们可以获得清晰的物体位置信息和类别。


(4)绘制边界框和标签

接下来,我们使用OpenCV库在图像上绘制边界框和标签。代码会读取边界框的位置和类别信息,并为每个类别分配随机颜色,使标记更加清晰可辨:

import cv2
import numpy as np
from PIL import Imagelabel_colors = {}  # 用于存储每个类别的颜色def draw_bounding_boxes(image, bounding_boxes_with_labels):if image.mode != 'RGB':image = image.convert('RGB')image = np.array(image)for bounding_box, label in bounding_boxes_with_labels:width, height = image.shape[1], image.shape[0]ymin, xmin, ymax, xmax = bounding_boxx1 = int(xmin / 1000 * width)y1 = int(ymin / 1000 * height)x2 = int(xmax / 1000 * width)y2 = int(ymax / 1000 * height)# 颜色分配if label not in label_colors:color = np.random.randint(0, 256, (3,)).tolist()label_colors[label] = colorelse:color = label_colors[label]# 绘制框和标签cv2.rectangle(image, (x1, y1), (x2, y2), color, 2)cv2.putText(image, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)return Image.fromarray(image)# 绘制并显示结果
output = draw_bounding_boxes(img, bounding_box)
output.show()
output.save("pic_annotated.jpg")

在代码中,draw_bounding_boxes函数根据模型返回的边界框信息在图像上绘制矩形框,并显示标签。绘制完成后,使用output.show()可以立即查看结果图像,或通过output.save()保存标记后的图像。


(5)运行结果

通过以上步骤,可以加载图像、发送目标检测请求、解析返回结果,并在图像中绘制出标记。运行结果如下,没想到吧,它居然直接识别出来了:

在这里插入图片描述

再换一张图还是能搞定,这个效果确实不错。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G时代已来:我们该如何迎接超高速网络?

内容概要 随着5G技术的普及,我们的生活似乎变得更加“科幻”了。想象一下,未来的智能家居将不仅仅是能够听你说“开灯”;它们可能会主动询问你今天心情如何,甚至会推荐你一杯“维他命C芒果榨汁”,帮助你抵御夏天的炎热…

算法每日练 -- 双指针篇(持续更新中)

介绍: 常见的双指针有两种形式,一种是对撞指针(左右指针),一种是快慢指针(前后指针)。需要注意这里的双指针不是 int* 之类的类型指针,而是使用数组下标模拟地址来进行遍历的方式。 …

理解鸿蒙app 开发中的 context

是什么 Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用文件路径)、area(文件分区…

贝尔不等式,路径积分与AB(Aharonov-Bohm)效应

贝尔不等式、路径积分与Aharonov-Bohm(AB)效应 这些概念分别源于量子力学不同的理论分支和思想实验,但它们都揭示了量子力学的奇异性质,包括非局域性、相位效应和波粒二象性。以下详细解析每一概念,并探讨其相互联系。…

python 爬虫 入门 六、Selenium

Selenium本来是一个自动测试工具,用于模拟用户对网站进行操作。在爬虫领域也有其用处。 一、下载安装Selenium及附属插件 pip install Selenium 安装完成后还需要安装一个浏览器驱动,来让python能启动浏览器。 如果是Edge或者其他基于Chromium的浏览器…

Linux(CentOS)yum update -y 事故

CentOS版本:CentOS 7 事情经过: 1、安装好CentOS 7,系统自带JDK8,版本为:1.8.0_181 2、安装好JDK17,版本为:17.0.13 3、为了安装MySQL执行了 yum update -y(这个时候不知道该命令的…

uniapp uni-calendar日历实现考勤统计功能

根据日历组件代码结构 构成相应结构的状态统计数据 list 再遍历到每日的子组件中 <view class"uni-calendar__weeks-item" v-for"(weeks,weeksIndex) in item" :key"weeksIndex"><calendar-item class"uni-calendar-item--hook&q…

环境配置与搭建

安装pytorch 官网连链接&#xff1a;https://pytorch.org/ 特殊包名 cv2 pip install opencv-python sklearn pip install scikit-learnPIL pip install Pillow使用jupyter notebook pip install jupyter安装显卡驱动 Windows Linux 视频教程&#xff1a; 【ubuntu2…

【数据库实验一】数据库及数据库中表的建立实验

目录 实验1 学习RDBMS的使用和创建数据库 一、 实验目的 二、实验内容 三、实验环境 四、实验前准备 五、实验步骤 六、实验结果 七、评价分析及心得体会 实验2 定义表和数据库完整性 一、 实验目的 二、实验内容 三、实验环境 四、实验前准备 五、实验步骤 六…

SpringBoot健身房管理:技术与实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

CulturalBench :一个旨在评估大型语言模型在全球不同文化背景下知识掌握情况的基准测试数据集

2024-10-04&#xff0c;为了提升大型语言模型在不同文化背景下的实用性&#xff0c;华盛顿大学、艾伦人工智能研究所等机构联合创建了CulturalBench。这个数据集包含1,227个由人类编写和验证的问题&#xff0c;覆盖了包括被边缘化地区在内的45个全球区域。CulturalBench的推出&…

python登录功能实现

一.用python实现基本的登录功能 #-----------------1.基本登录功能------------------- nameinput("qq账号&#xff1a;") if name"jc":passwdinput("密码&#xff1a;")if passwd"123456":print("登录成功")else:print(&q…

如何使用Python管理环境变量

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 环境变量 📒📝 环境变量简介📝 Python 中的环境变量操作📝 获取环境变量📝 设置环境变量🔖 临时设置🔖 永久设置📝 删除环境变量📝 临时删除📝 永久删除📝 小结⚓️ 相关链接 ⚓️📖 介绍 📖 环境变量…

设置允许多用户远程登录 Windows 云服务器

操作场景 本文档以 Windows Server 2016 操作系统云服务器为例&#xff0c;指导您配置多用户远程登录 Windows 云服务器。 注意&#xff1a; 微软提供的多用户远程登录功能试用期为120天&#xff0c;若未购买多用户登录授权&#xff08;RDS CALs&#xff09;&#xff0c;则试…

喜报!景联文科技成功通过DCMM数据管理能力成熟度二级认证

10月30日&#xff0c;中国电子信息行业联合会公示了新一批DCMM贯标企业&#xff0c;景联文科技成功通过DCMM数据管理能力成熟度二级认证&#xff08;乙方认证&#xff09;。 DCMM是《数据管理能力成熟度评估模型》的简称&#xff0c;是我国在数据管理领域首个正式发布的国家标准…

Android setContentView执行流程(1)-生成DecorView

setContentView的流程主要就是讲在Activity的onCreate方法中调用setContentView方法之后&#xff0c;我们自定义的xml文件加载的过程&#xff0c;学习它可以让我们对整个View树的理解更加透彻&#xff0c;并且通过源码的学习&#xff0c;我们可以从根本上理解一些问题&#xff…

《操作系统 - 清华大学》2 -1:操作系统的启动

文章目录 0. 内容摘要1. 计算机体系机构概述2.启动2.1 启动时计算机内存和磁盘布局2.2. 内存映射 3. 系统调用、异常、中断3.1 定义3.2 背景3.3 中断、异常和系统调用的不同点3.3.1 源头3.3.2 处理时间3.3.3 响应 0. 内容摘要 两部分的内容 第一部分是启动。知道操作系统怎么是…

在服务器里安装2个conda

1、安装新的conda 下载地址&#xff1a;Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 本文选择&#xff1a;Anaconda3-2023.03-1-Linux-x86_64.sh 安装&#xff1a;Ubuntu安装Anaconda详细步骤&#xff08;Ubuntu22.04.1&#xff…

【系统集成项目管理工程师】知识点汇总

十五矩阵图 ITTO&#xff08;Input - Tools & Techniques - Output&#xff09;一览图 整合管理、范围管理 进度管理、成本管理 成本管理&#xff08;续&#xff09;、质量管理、资源管理 沟通管理、风险管理 风险管理&#xff08;续&#xff09;、采购管理、干系人管理

Java | Leetcode Java题解之第552题学生出勤记录II

题目&#xff1a; 题解&#xff1a; class Solution {static final int MOD 1000000007;public int checkRecord(int n) {long[][] mat {{1, 1, 0, 1, 0, 0},{1, 0, 1, 1, 0, 0},{1, 0, 0, 1, 0, 0},{0, 0, 0, 1, 1, 0},{0, 0, 0, 1, 0, 1},{0, 0, 0, 1, 0, 0}};long[][] re…