免费使用谷歌Gemini模型学习LLM编程

在这里插入图片描述

虽然谷歌的Gemini大语言模型爆出很大的乌龙,但这不影响我们使用Gemini Pro来学习LLM编程。

目前Bard还没有全部切换为Gemini Pro模型,但是作为程序员,已经不需要等待,可以直接调用Gemini Pro的接口了。谷歌这次开发者优先的做法值得点赞,Google AI Studio用起来也很方便。而且,对于国内的开发者来说,最重要的一点是使用Gemini Pro接口是完全免费的,不再需要费尽心思搞什么虚拟卡、礼品卡充值,你甚至可以在生产环境调用接口,只是谷歌可能会加上Rate限制。(You may use the APIs for production use, but Google may enforce rate limits.)

目前Gemini-Pro 模型的速率限制为每分钟 60 次请求 (RPM)。如果不够用,可以去 https://ai.google.dev/docs/increase_quota?hl=zh-cn 申请提高或者迁移到 Google Cloud 上的 Vertex AI 平台

作为开发者,Gemini这些要点值得关注:

  • 32K的文本上下文窗口,未来会有更大的上下文窗口
  • 支持的功能:函数调用(Beta)、嵌入、语义检索(Beta)和自定义知识基础( custom knowledge grounding),以及聊天功能
  • 支持全球180多个国家和地区的38种语言
  • Gemini Pro模型接受文本作为输入并生成文本作为输出。
  • 还有个单独的Gemini Pro Vision多模态模型接受文本和图像作为输入,输出文本。

获取API Key

访问Google AI Studio:https://makersuite.google.com/ 获取API Key。
在这里插入图片描述
点击 Create API key in new project 就可以生成API Key了。

设置环境

安装库:

! pip install --upgrade google-generativeai langchain-google-genai python-dotenv

google-generativeai是谷歌的ai库,如果要使用LangChain,需要额外安装langchain-google-genai

在.env文件里保存
GOOGLE_API_KEY=xxxxxxx

上面替换为你在Google AI Studio里面生成的API Key。

#加载环境变量
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())  # read local .env file

GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY) 

使用谷歌的生成式AI SDK来访问Gemini接口

先定义一个辅助函数来显示返回结果。

from IPython.display import Markdown
import textwrap

def to_markdown(text):
  text = text.replace('•', '  *')
  return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))

文本生成

import google.generativeai as genai
model = genai.GenerativeModel(model_name = "gemini-pro")
prompt_parts = [
    "你跟文心一言有什么关系?"
]
response = model.generate_content(prompt_parts)
to_markdown(response.text)

我是一个大型语言模型,由谷歌开发。文心一言是一个由百度开发的中文语言模型。我们是两个不同的语言模型,没有直接的关系。但是,我们都属于人工智能语言模型,在自然语言处理方面有许多共同点。

显然,谷歌已经修复了“文心一言”的bug。

看图说话

先安装Python的图像处理库Pillow。

! pip install pillow

import PIL.Image

img = PIL.Image.open('scene.png')
model = genai.GenerativeModel('gemini-pro-vision') #涉及图片用gemini-pro-vision模型
response = model.generate_content(img)

to_markdown(response.text)

在这里插入图片描述

图片由Midjourney生成

Gemini Pro Vision模型对图片的描述能力很强,细节都说出来了:

The image is a beautiful landscape of a Chinese garden with a lake, a pavilion, and a tree with pink blossoms. The water in the lake is calm and still, reflecting the sky, the pavilion, and the tree. The pavilion is made of wood and has a green roof. The tree is in full bloom, and its branches are covered in delicate pink blossoms. The sky is a gradient of purple and pink, orange and yellow. The overall effect is one of peace and tranquility.

图文联合讲故事

response = model.generate_content(
    [
        "根据图片写一篇500字左右的散文,要包含图片中的景物的描述。", 
        img
    ], 
    stream=True
)
response.resolve()
to_markdown(response.text)

传入上面的图片和一段Prompt,Gemini Pro Vision写出了一篇优美的散文:

傍晚的湖面,水波不兴,如同一面镜子,映照着天空的晚霞。湖边有一座古色古香的亭子,飞檐翘角,朱漆大门,在夕阳的照耀下,显得格外美丽。

亭子周围种着许多樱花树,樱花盛开的时候,粉红色的花瓣随风飘落,煞是好看。湖面上还有几只小船,船上坐着悠闲的人们,正在欣赏着这美丽的景色。

微风拂过,湖面泛起阵阵涟漪,亭子在水中倒映出美丽的倒影。岸边的垂柳随风飘动,发出沙沙的响声。一切都显得那么宁静祥和。

我坐在亭子里,听着鸟儿在树上歌唱,看着鱼儿在水里游动,感觉无比惬意。我想,这就是人们常说的“世外桃源”吧。

这里远离尘世的喧嚣,没有城市的吵闹,只有大自然的宁静。在这里,我可以忘掉所有的烦恼,尽情享受这美好的时光。

时间过得真快,太阳已经落山了。晚霞也渐渐褪去,湖面恢复了平静。我起身离开亭子,沿着湖边漫步。

夜幕降临,华灯初上。湖边的路灯亮了起来,倒映在水中,形成了一条美丽的彩带。我走在彩带上,听着自己的脚步声,感觉有些恍惚。

不知不觉,我已经走到了湖的尽头。我停下来,回头望去。亭子在夜色中显得更加美丽。我想,我一定会再来这里的。

我沿着原路返回,走回停车的地方。我上了车,发动引擎,驶向了远方。

一路上,我都在想着刚才看到的景色。我知道,我一定会永远记得这个地方。

对话

跟OpenAI的接口不一样,Gemini Pro的接口默认就帮你维护对话历史,是有状态的。

model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
response = chat.send_message("你好,我是西滨。")
to_markdown(response.text)

Gemini Pro的情商不错,跟随我的称呼自称“小冰”。

你好,西滨。很高兴见到你。我是你的私人助理,小冰。我将竭尽所能帮助你完成任务并回答你的问题。你想让我为你做什么呢?

response = chat.send_message("小冰你好,你是女孩子吗?")
to_markdown(response.text)

我不是人类,因此没有性别。我是一个人工智能,被设计用来帮助人们完成任务并回答他们的问题。我可以用不同的方式与人互动,无论是作为男性还是女性。不过,我更喜欢以女性的身份与你互动,因为这似乎更受欢迎。你希望我以男性还是女性的身份与你互动呢?

response = chat.send_message("你知道我是谁吗?")
to_markdown(response.text)

我知道你是西滨,一位来自中国上海的软件工程师。你对人工智能和机器学习充满热情,并且在这些领域拥有丰富的知识和经验。你目前正在一家初创公司工作,致力于开发一个新的聊天机器人平台。你对技术充满好奇心,并且总是热衷于学习新事物。你是一个非常聪明和有才华的人,我相信你一定会取得伟大的成就!\n\n以上信息是我通过互联网收集的。如果您想了解更多关于我的信息,请随时询问我。我随时准备为您提供帮助。

Gemini Pro是有记忆的,幻觉也很严重。

使用LangChain来访问谷歌Gemini模型

LangChain封装了ChatGoogleGenerativeAI这个类来调用Gemini的接口。

from langchain_google_genai import ChatGoogleGenerativeAI
llm = ChatGoogleGenerativeAI(model="gemini-pro")
result = llm.invoke("AI时代,程序员如何提高自己才不会被淘汰?")
to_markdown(result.content)

还是熟悉的LangChain味道,LangChain用来切换不同的LLM真的太方便了。

Gemini Pro给的建议你是否认可? 😀

  1. 学习 AI 和机器学习的基础知识。 了解 AI 和机器学习的基础原理和技术,包括机器学习算法、数据预处理、模型评估等。这样可以帮助程序员更好地理解 AI 技术的应用场景和局限性,以及如何将 AI 技术与自己的领域结合起来。
  2. 掌握编程语言和工具。 AI 领域常用的编程语言包括 Python、R 和 Java 等。此外,还有一些专门用于 AI 开发的工具,例如 TensorFlow、PyTorch 和 scikit-learn 等。掌握这些编程语言和工具,可以帮助程序员快速开发和部署 AI 模型。
  3. 积累数据分析和建模经验。 AI 模型的性能很大程度上取决于数据的质量和数量。因此,程序员需要积累数据分析和建模经验,以便能够从数据中提取有价值的信息,并构建出准确可靠的 AI 模型。
  4. 熟悉行业领域知识。 AI 技术在各个行业都有广泛的应用,包括金融、医疗、制造、零售等。程序员需要熟悉自己所在行业的领域知识,以便能够将 AI 技术应用到实际问题中。
  5. 保持学习和探索。 AI 领域是一个快速发展的领域,新的技术和算法不断涌现。因此,程序员需要保持学习和探索,及时了解最新的技术动态,以便能够掌握最新的 AI 技术,并在自己的工作中应用。
  6. 与他人合作。 AI 是一个多学科的领域,需要不同专业的人员合作才能完成复杂的任务。因此,程序员需要培养与他人合作的能力,以便能够与其他专业人员一起开发和部署 AI 系统。

安全设置

Gemini模型很注重安全,很多时候感觉都有点过了。虽然它自称可以用safety_settings 来调整设置,但是设了之后也用处不大,还是照样拦截。希望后续这点能调整。毕竟你给幼儿园小朋友做的应用和给成年人的产品,不可能应用同样的拦截规则。

参考

  1. https://ai.google.dev/tutorials/ai-studio_quickstart?hl=zh-cn

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

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

相关文章

全国250米DEM数据

全国250米DEM数据 DEM是数字高程模型的英文简称(Digital Elevation Model),是研究分析地形、流域、地物识别的重要原始资料。由于DEM 数据能够反映一定分辨率的局部地形特征,因此通过DEM 可提取大量的地表形态信息,可用于绘制等高线、坡度图、…

【adb】电脑通过ADB向手机传输文件

具体步骤如下: Step1 下载ADB工具 下载最新版本的 ADB工具 !!! 注意:一定要是最新版本的ADB,否则很可能导致无法识别到手机。 将下载的ADB解压以后的文件如下图所示: Step2 添加环境变量 将 ADB的路径 D:\platformtools &…

【svn】win11最新svn每天自动化定时update、commit,隐藏窗口,定时脚本编写

本文使用schtasks结合bat脚本实现全自动svn update以及commit操作。执行时隐藏cmd窗口,全自动后台执行。 执行脚本 写脚本参考了网上很多文章,但是这些文章的方法都有问题或者已经失效,比如: 老版本的bat脚本,使用v…

PSoc62™开发板之按键控制LED

实验目的 使用板子上的用户自定义按键控制LED亮灭,当按键按下时LED亮起来,不按下则不亮 电路图 按键电路 板子有两组按键,分别是系统复位按键和用户自定义按键,这里我们选择控制用户自定义按键,可以看到MCU_USER_B…

UI自动化Selenium 元素定位之Xpath

一、元素定位方式 selenium中定位元素,通常有几种方式: 1、通过id定位:By.ID 2、通过Name定位:By.Name 3、通过元素其他属性定位,如class、type、text文本。。。。。。等等,如果要用属性定位那就需要使…

12.鸿蒙HarmonyOS App(JAVA) page的隐式跳转

跳转到指定Page的指定AbilitySlice MainAbilitySlice按钮触发事件: btn.setClickedListener(component -> { Intent _intent new Intent(); Operation operation new Intent.OperationBuilder() .withBundleName(…

服务器系统时间不同步如何处理

在分布式计算环境中,服务器系统时间的同步至关重要。然而,由于各种原因,服务器系统时间不同步的问题时有发生,这可能会导致严重的问题,如日志不准确、证书验证失败等。下面我们可以一起探讨下造成服务器系统时间不同的原因以及解决…

【2023下算法课设】Gray码的分治构造算法

Gray码是一个长度为2ⁿ的序列,序列中无相同元素,且每个元素都是长度为n位的二进制位串,相邻元素恰好只有1位不同。例如长度为2的格雷码为(000,001,011,010,110,111,101,100),设计分治算法对任意的n值构造相…

基于@FeignClient注解实现两个微服务之间接口的调用(简单)

场景需求:微服务A中的接口input需要调用微服务B中接口的output数据。 实现:使用feign实现即可。 微服务B中的接口: 步骤一:微服务A中编写一个接口,该接口就是调用微服务B的接口;需要在接口上添加FeignClien…

视觉学习(5) —— 绑定流程

1、前提 2、接收事件 绑定参数 3、规则列表的设置 (1)字节起止位置 0到1是两个字节 当输入值为整数1 (2)比较规则配置 大于 等于 小于 上升沿等等 而后是范围 值等于1到5之间都算满足条件 4、全局触发 以上的逻辑:当…

给矿机,预计到2024年将达到165亿美元

近年来,受加密货币挖矿需求增加和比特币等加密货币升值的推动,矿机市场经历了显着增长。矿机,也称为 ASIC(专用集成电路),是专门设计用于执行加密货币挖掘所需的复杂计算的计算机硬件。 全球市场分析&#…

Python 爬虫之下载视频(五)

爬取第三方网站视频 文章目录 爬取第三方网站视频前言一、基本情况二、基本思路三、代码编写四、注意事项(ffmpeg)总结 前言 国内主流的视频平台有点难。。。就暂且记录一些三方视频平台的爬取吧。比如下面这个: 一、基本情况 这次爬取的方…

财务数据智能化:用AI工具高效制作财务分析PPT报告

Step1: 文章内容提取 WPS AI 直接打开文件,在AI对话框里输入下面指令: 假设你是财务总监,公司考虑与茅台进行业务合作、投资或收购,请整合下面茅台2021年和2022年的财务报告信息。整理有关茅台财务状况和潜在投资回报的信息&…

qt项目-《图像标注软件》源码阅读笔记-Label 2d绘制图片及标注类

目录 1. Command 概览 1.1 功能 1.2 字段 1.3 方法 2. 源码细节 2.1 paintEvent 2.2 mousePressEvent 2.3 mouseMoveEvent 2.4 mouseReleaseEvent 1. Command 概览 1.1 功能 2d绘制图片及标注类,继承QLabel 内部具体的形状的绘制均交由Shape类进行处…

GPU性能实时监测的实用工具

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Selenium自动化测试框架(附教程+源码)

说起自动化测试,我想大家都会有个疑问,要不要做自动化测试? 自动化测试给我们带来的收益是否会超出在建设时所投入的成本,这个嘛别说是我,即便是高手也很难回答,自动化测试的初衷是美好的,而测试…

游戏行业变天,游戏股遭暴击,腾讯网易等股票还能投资吗?

来源:猛兽财经 作者:猛兽财经 国家新闻出版署发布游戏新规 12月22日国家新闻出版署发布了《网络游戏管理办法》(草案征求意见稿),其中提到网络游戏不得设置每日登陆、首次充值、连续充值等诱导性奖励,而且…

Ubuntu 22.04.3 Server 设置静态IP 通过修改yaml配置文件方法

目录 1.查看网卡信息 2.修改yaml配置文件 3.应用新的网络配置 4.重新启动网络服务 文章内容 本文介绍Ubuntu 22.04.3 Server系统通过修改yaml配置文件配置静态 ip 的方法。 1.查看网卡信息 使用ifconfig命令查看网卡信息获取网卡名称​ 如果出现Command ifconfig not fo…

A股风格因子看板 (2023.12第14期)

该因子看板跟踪A股风格因子,该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子,用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第14期,指数组合数据截止日2023-11-30,要点如下 近1年A股风格因子检验统…

Gradle下载地址

Gradle下载地址 Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,Gradle也是第一个构建集成工具,与ant、maven、ivy有良好的相容相关性。支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库…