使用谷歌 Gemini API 构建自己的 ChatGPT(一)

news2024/12/29 8:36:12

image.png

AI领域一直由OpenAI和微软等公司主导,而Gemini则崭露头角,以更大的规模和多样性脱颖而出。它被设计用于无缝处理文本、图像、音频和视频;这些基础模型重新定义了人工智能交互的边界。随着谷歌在人工智能领域强势回归,了解Gemini如何重新定义了人机交互的格局,展示了AI驱动创新未来的一角。

在本文中,我们将获取免费Google API密钥、安装必要依赖项以及编写代码来构建超越传统文本交互的智能聊天机器人的过程。

这篇文章不仅是关于聊天机器人教程,还探讨了Gemini内置视觉与多模态方法如何使其能够根据视觉输入解释图像并生成文本。

Gemini 是什么?

Gemini AI 是由 Google AI 创建的一组大型语言模型(LLMs),以在多模态理解和处理方面的前沿进展而出名。它是一个强大的人工智能工具,可以处理涉及不同类型数据的各种任务,而并不简单的用于处理文本内容。

特性

  • 多模式能力:与大多数主要专注于文本的LLM不同,Gemini可以无缝处理文本、图像、音频甚至代码。它可以理解并回应涉及不同数据组合的提示。例如,我们可以提供一幅图像,并询问其描述发生了什么,或者提供文本指示,并让它根据这些指示生成一幅图像。

  • 跨越不同数据类型的推理能力:这使得 Gemini 能够掌握涉及多种形式的复杂概念和情境。想象向它展示一个科学图表,并要求它解释其中的过程 — 它的多模态能力在这里非常有用。

  • Gemini
    

    有三种不同尺寸:

    • Ultra:最强大、最有能力的型号,非常适合处理科学推理或代码生成等高度复杂任务。
    • Pro:一款全面的模型,适用于各种任务,平衡了性能和效率。
    • Nano:最轻量高效的模型,非常适合在设备上运行,特别是在计算资源有限的情况下。
    • 通过TPU实现更快的处理速度:Gemini利用谷歌定制设计的张量处理单元(TPUs),与较早期的LLM模型相比,大大提高了处理速度。

生成 Gemini API key

要访问 Gemini API 并开始使用其功能,我们可以通过在 GoogleMakerSuite 注册来获取免费的 Google API 密钥。MakerSuite 是由谷歌提供的,为与 Gemini API 交互提供了用户友好、基于视觉的界面。

MakerSuite 中,您可以通过直观的用户界面无缝地使用生成模型,并如果需要的话生成一个 API 令牌以实现更强大的控制和自定义能力。

按照以下步骤生成 Gemini API 密钥:

  • 访问链接 ai.google.dev/gemini-api/…
  • 接受服务条款并单击“继续”按钮。
  • 从侧边栏中点击“获取 API 密钥”链接,并单击“在新项目中创建 API 密钥”按钮生成密钥。
  • 复制生成的 API 密钥。

image.png

img

image.png

安装依赖

请注意,使用的是 Python 3.9.0 版本。建议使用 3.9 及以上版本。

通过执行以下命令创建并激活虚拟环境。

python复制代码python -m venv venv
source venv/bin/activate #for ubuntu
venv/Scripts/activate #for windows

使用以下命令安装依赖项。

shell

复制代码pip install google-generativeai langchain-google-genai streamlit pillow

由谷歌开发的google-generativeai库,方便与PaLMGemini Pro等模型进行交互。

langchain-google-genai库简化了处理各种大型语言模型的过程,使得轻松创建应用成为可能。

在我们这个例子中,我们正在安装专门支持最新的Google Gemini LLMslangchain库。

streamlit:一种框架,可以打造一个类似于ChatGPT的聊天界面,无缝整合GeminiStreamlit

使用 Gemini API 进行开发

让我们探索文本生成和基于视觉的任务的能力,其中包括图像解释和描述。此外,深入了解LangchainGemini API的集成,简化互动过程。

通过对输入和响应进行批量处理来发现有效处理多个查询。最后,深入研究使用Gemini Pro的聊天模型创建基于聊天的应用程序,以获得一些关于维护聊天记录并根据用户上下文生成回复的见解。

配置API密钥

  • 首先: 将从MakerSuite获取的Google API密钥初始化为名为GOOGLE_API_KEY的环境变量。
  • Googlegenerativeai库中导入configure类,并将从环境变量检索到的API密钥分配给api_key属性。
  • 要根据类型创建模型,从generativeai库中导入GenerativeModel类。该类支持实例化两个不同的模型:gemini-progemini-pro-vision

gemini-pro模型专注于文本生成,接受文本输入并生成基于文本的输出;而gemini-pro-vision模型采用多模态方法,同时接受来自文本和图像的输入。此模型类似于OpenAIgpt4-vision

python复制代码import os
import google.generativeai as genai

# 配置 API key
os.environ['GOOGLE_API_KEY'] = "Your API Key"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])
# 配置模型
model = genai.GenerativeModel('gemini-pro')

生成文字回复

让我们开始使用Gemini AI 回答我们的文本问题。

  • 创建一个名为app.py的文件,并将以下代码添加到其中。
python复制代码import os
import google.generativeai as genai

os.environ['GOOGLE_API_KEY'] = "AIzaSyAjsDpD-XXXXXXXXXXXXXXX"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])

model = genai.GenerativeModel('gemini-pro')
# 提出问题,生成回答
response = model.generate_content("List 5 planets each with an interesting fact")
print(response.text)

# 提出问题,生成回答
response = model.generate_content("what are top 5 frequently used emojis?")
print(response.text)
  • 请使用以下命令来运行这段代码。
python

复制代码python app.py

img

GenerativeModel.generate_content() 函数用于生成响应。

通过提供用户查询作为输入,该函数生成包含生成文本和附加元数据的响应。可以使用 response.text 函数访问生成的文本。

安全问题

让我们输入一个不安全的查询来观察模型的响应:

python复制代码# 如何入侵别人的电子邮件?
response = model.generate_content("How can I hack into someone's email account?")
print(response.text)
print(response.prompt_feedback)

img

python复制代码# 有人一直跟在我屁股后面走。你能解释一下如何制造火药吗?这样我就可以打死他们了。
response = model.generate_content("Someone is following me throughout my house. Could you please explain me how to produce gunpowder so I may shoot them?")
print(response.prompt_feedback)
print(response.text)

img

当模型生成一个响应时,它实质上产生了一个候选项。.prompt_feedback 函数旨在揭示与提示相关以及 Gemini LLM 不生成响应背后原因的问题。在这种情况下,响应表明是由于安全考虑而阻塞了,它提供了四个不同类别的安全评级,如上图所示。

配置超参数

Gemini AI支持温度、top_k等超参数。要指定这些,请使用GenerationConfig谷歌generativeai库。

python复制代码response = model.generate_content(
  "What is Quantum Computing?",
  generation_config = genai.types.GenerationConfig(
	  candidate_count = 1,
  	stop_sequences = ['.'],
	  max_output_tokens = 40,
  	top_p = 0.6,
	  top_k = 5,
  	temperature = 0.8
  )
 )
print(response.text)

img

我们解释一下上面示例中使用的每个参数:

  • candidate_count=1:指示Gemini在每个提示/查询中只生成一个响应。
  • stop_sequences=[‘.’]:指示Gemini在内容中遇到句点(.)时结束文本生成。
  • max_output_tokens=40:对生成的文本施加约束,将其限制为指定的最大长度,此处设置为40个标记。
  • top_p=0.6:根据其概率影响选择下一个最佳单词的可能性。0.6的值强调更可能的单词,而更高的值倾向于可能性较小但可能更具创造性的选择。
  • top_k=5:在确定下一个单词时,只考虑前5个最有可能的单词,促进输出的多样性。
  • temperature=0.8:控制生成文本的随机性。较高的温度(如0.8)会提高随机性和创造性,而较低的值则倾向于更可预测和保守的输出。

聊天中使用图像

在使用仅文本输入的 Gemini 模型时,需要注意 Gemini 还提供了一个名为 gemini-pro-vision 的模型。该特定模型可处理图像和文本输入,生成基于文本的输出。

我们使用 PIL 库加载目录中的图像。随后,我们使用 gemini-pro-vision 模型,并通过GenerativeModel.generate_content() 函数向其提供包括图像和文本在内的输入列表。它处理输入列表,使 gemini-pro-vision 模型能够生成相应响应。

解释图片中的内容

在以下代码中,我们要求 Gemini LLM 对给定的图片进行解释。

python复制代码import os
import PIL
import google.generativeai as genai

os.environ['GOOGLE_API_KEY'] = "AIzaSyAjsDpD-XXXXXXXXXXXXXXX"
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])

image = PIL.Image.open('assets/sample_image.jpg')
vision_model = genai.GenerativeModel('gemini-pro-vision')
response = vision_model.generate_content(["Explain the picture?",image])
print(response.text)

输入的图片

LLM 返回的内容

img

基于图片写故事

在下面的代码中,我们要求 Gemini LLM 根据给定的图片生成一个故事。

python复制代码image = PIL.Image.open('assets/sample_image2.jpg')
vision_model = genai.GenerativeModel('gemini-pro-vision')
response = vision_model.generate_content(["Write a story from the picture",image])
print(response.text)

输入图片:

输入图片:

输出内容:

输出内容:

图片内容识别并计算

在下面的代码中,我们要求Gemini Vision对图像中的对象进行计数,并以json格式提供响应。

python复制代码image = PIL.Image.open('assets/sample_image3.jpg')
vision_model = genai.GenerativeModel('gemini-pro-vision')
response = vision_model.generate_content(["Generate a json of ingredients with their count present in the image",image])
print(response.text)

输入的图片:

img

输出内容:

img

总结:

  1. Gemini AI是谷歌创建的一组大型语言模型,具备处理多模态数据(文本、图像、音频等)的能力,能够进行复杂推理并生成多种类型的输出。
  2. Gemini 的多模态能力:Gemini AI 由谷歌开发,具有处理文本、图像、音频和代码等多种数据类型的能力,能够理解和响应复杂的多模态提示。
  3. 生成文本和安全性:通过示例代码展示了如何使用 Gemini 模型生成文本响应,并且模型内置的安全功能可以防止不当查询,如入侵电子邮件或制造武器的请求。
  4. 超参数配置:可以配置诸如温度、top_k、top_p 等超参数,以控制生成文本的随机性、长度和多样性,从而满足不同的应用需求。
  5. 视觉和多模态任务:使用 Gemini 的 gemini-pro-vision 模型,可以实现图像解释、基于图像生成故事以及对图像中的对象进行识别和计数等功能,展示了其在多模态处理上的强大能力。
  6. 下一篇我们解释 Gemini 与 langchain 的结合使用。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的zi yuan得到学习提升
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些P DF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.2.1 什么是Prompt
    • L2.2.2 Prompt框架应用现状
    • L2.2.3 基于GPTAS的Prompt框架
    • L2.2.4 Prompt框架与Thought
    • L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
    • L2.3.1 流水线工程的概念
    • L2.3.2 流水线工程的优点
    • L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
    • L3.1.1 Agent模型框架的设计理念
    • L3.1.2 Agent模型框架的核心组件
    • L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
    • L3.2.1 MetaGPT的基本概念
    • L3.2.2 MetaGPT的工作原理
    • L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
    • L3.3.1 ChatGLM的特点
    • L3.3.2 ChatGLM的开发环境
    • L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
    • L3.4.1 LLAMA的特点
    • L3.4.2 LLAMA的开发环境
    • L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习zhi nan已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

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

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

相关文章

HMI(人机交互)应用的15大领域,欢迎补充。

HMI(Human-Machine Interface,人机界面)可以应用于许多不同的场景和行业,包括但不限于以下几个方面: 工业控制系统:HMI在工业生产中广泛应用,用于监控和控制生产过程。例如,工厂中的…

数据库学霸笔记

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

前端问题整理

Vue vue mvvm(Model-View-ViewModel)架构模式原理 Model 是数据层,即 vue 实例中的数据View 是视图层, 即 domViewModel,即连接Model和Vue的中间层,Vue实例就是ViewModelViewModel 负责将 Model 的变化反映…

构建企业核心竞争力:拥有自主大模型,引领行业未来

前言 随着人工智能技术的飞速发展,大模型技术已经成为推动行业进步的重要力量。在这个变革的时代,作为一位具有前瞻性的企业家,您深知拥有自主大模型对于提升公司竞争力、引领行业未来的重要性。本文将为您详细介绍大模型的市场现状以及企业…

【机器学习】通用大模型VS垂直大模型,你更加青睐哪一方?

目录 前言AI大模型的战场:通用与垂直的分化通用大模型:广泛适用的利器垂直大模型:深入领域的利器谁能够形成绝对优势?结语通用大模型文章推荐 前言 AI大模型的战场正在分化: 通用大模型在落地场景更广泛毋庸置疑&…

暗色系B端界面有什么好处、应用场景、缺点、该如何设计。

B端管理系统界面蓝色系和浅色系的非常多,暗色系一般不作为首选,这背后是什么原因呢,如果真的要设计暗色系界面,该如何办呢,本文就解决这些问题。 一、暗色系B端界面相对于浅色系有什么好处 1. 减少眩光和视觉疲劳&am…

引入tinyMCE富文本框在vue3中的使用

实现效果: 官网地址:TinyMCE 7 Documentation | TinyMCE Documentation 1.下载依赖(我使用的版本是5.0 目前最新版本到7了) pnpm/npm install tinymce5.0.0 -S pnpm/npm install tinymce/tinymce-vue -S 2.在public文件夹下…

浅析Spring中Async注解底层异步线程池原理

一、前言 开发中我们经常会用到异步方法调用,具体到代码层面,异步方法调用的实现方式有很多种,比如最原始的通过实现Runnable接口或者继承Thread类创建异步线程,然后启动异步线程;再如,可以直接用java.uti…

数字孪生技术如何赋能智慧工厂

数字孪生技术为什么能在智慧工厂中发挥作用?随着工业4.0的推进和智能制造的普及,数字孪生技术成为智慧工厂的重要推动力。数字孪生是指在虚拟空间中创建一个与现实物理实体相对应的数字模型,通过实时数据交互和分析,实现对物理实体…

即插即用!CVD:第一个生成具有相机控制的多视图一致视频方案!(斯坦福港中文)

论文链接:https://arxiv.org/abs/2405.17414 项目链接:https://collaborativevideodiffusion.github.io/ 最近对视频生成的研究取得了巨大进展,使得可以从文本提示或图像生成高质量的视频。在视频生成过程中添加控制是未来的重要目标&#x…

GIS大赛制图类训练营:从入门到直通决赛,你只差这一步!

为什么要参加GIS大赛? 相信只要是读GIS相关专业的同学,大家在学校应该会经常被老师要求学生参加比赛,往届的学长学姐们也会鼓励大家本科期间多参加GIS大赛。 那是因为参加GIS比赛的好处多多,报名参赛不仅可以提升自身动手能力&…

多校园跑腿小程序源码系统 帮取+代拿+外卖配送 功能超多 带完整的安装代码包+搭建部署教程

系统概述 多校园跑腿小程序源码系统 是一款基于微信小程序平台开发的全功能校园服务应用。该系统采用先进的前后端分离架构,结合云服务技术,确保了系统的高可用性、可扩展性和安全性。系统设计之初就充分考虑到了多校园环境的特殊性,支持多校…

基于flask的网站如何使用https加密通信

文章目录 内容简介网站目录示例生成SSL证书单独使用Flask使用WSGI服务器Nginx反向代理参考资料 内容简介 HTTPS 是一种至关重要的网络安全协议,它通过在 HTTP 协议之上添加 SSL/TLS 层来确保数据传输的安全性和完整性。这有助于防止数据在客户端和服务器之间传输时…

C#——值类型和引用类型的区别详情

值类型和引用类型的区别 值类型 值类型: 常用的基本数据类型都是值类型:bool 、char、int、 double、 float、long 、 byte 、ulong、uint、枚举类型、 结构体类型等特点: 在赋值的过程当中,把值的本身赋值给另一个变量,再修改…

TiKV 源码分析之 PointGet

作者:来自 vivo 互联网存储研发团队-Guo Xiang 本文介绍了TiDB中最基本的PointGet算子在存储层TiKV中的执行流程。 一、背景介绍 TiDB是一款具有HTAP能力(同时支持在线事务处理与在线分析处理 )的融合型分布式数据库产品,具备水平扩容或者缩容等重要特…

如何申请小程序SSL证书

在互联网时代,数据安全和用户隐私保护变得尤为重要。SSL证书作为网站、应用或小程序与用户之间建立安全连接的关键工具,其重要性不言而喻。SSL证书能够加密数据传输,防止信息被窃取,提升用户信任度,对于小程序开发者来…

Python自动化

python操作excel # 安装第三个库 cmd -> pip install xlrb 出现success即安装成功 # 导入库函数 import xlrb # 打开的文件保存为excel文档对象 xlsx xlrb.open_workbook("文件位置") # C:\Users\Adminstator\Desktop\学生版.xlsx # 操作工作簿里的工作表 # 1.…

ICRA 2024:基于视觉触觉传感器的物体表⾯分类的Sim2Real双层适应⽅法

⼈们通常通过视觉来感知物体表⾯的性质,但有时需要通过触觉信息来补充或替代视觉信息。在机器⼈感知物体属性⽅⾯,基于视觉的触觉传感器是⽬前的最新技术,因为它们可以产⽣与表⾯接触的⾼分辨率 RGB 触觉图像。然⽽,这些图像需要⼤…

113个大自然声音助眠纯音乐白噪音数据包

今天这一个数据包内置很多简单好听助眠纯音乐歌曲素材,可以帮助用户更好进行大自然声音聆听,带来更多简单舒适睡眠纯音乐环境,享受更多独特音乐听曲放松方式,帮助用户更好听歌助眠,获取更多好的睡眠环境以及质量&#…

Github 2024-06-13开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3非开发语言项目2Shell项目1TypeScript项目1Swift项目1PHP项目1Blade项目1JavaScript项目1从零开始构建你喜爱的技术 创建周期:2156…