【AI大模型】使用谷歌 Gemini API 构建自己的 ChatGPT(二)

news2025/1/16 0:51:46

image.png

上一篇文章 【AI大模型】使用谷歌 Gemini API 构建自己的 ChatGPT(一)🚀我们介绍了 Gemini 是什么,以及如何使用Gemini 构建一个多模态的聊天场景示例。这一篇我们使用 langchainGemini 集成构建应用:

LangchainGemini 集成

Langchain已成功将Gemini模型整合到其生态系统中,使用ChatGoogleGenerativeAI类。

启动该过程需要向ChatGoogleGenerativeAI类提供所需的Gemini模型来创建一个llm类。我们调用函数并传递用户输入的内容为参数。

可以通过调用response.content获取生成的响应。

  • 在下面的代码中,我们构建了一个最简单的查询。
from langchain_google_genai import ChatGoogleGenerativeAI

llm = ChatGoogleGenerativeAI(model="gemini-pro")
response = llm.invoke("Explain Quantum Computing in 50 words?")
print(response.content)

img

在下面的代码中,我们将多个输入传入模型,并获取模型的响应。

batch_responses = llm.batch(
    [
        "Who is the Prime Minister of India?",
        "What is the capital of India?",
    ]
)
for response in batch_responses:
    print(response.content)

img

在下面的代码中,我们提供了文本和图像输入,并期望模型基于给定的输入生成文本响应。

from langchain_core.messages import HumanMessage

llm = ChatGoogleGenerativeAI(model="gemini-pro-vision")

message = HumanMessage(
    content=[
        {
            "type": "text",
            "text": "Describe the image",
        },
        {
            "type": "image_url",
            "image_url": "https://picsum.photos/id/237/200/300"
        },
    ]
)

response = llm.invoke([message])
print(response.content)

输入的图片

输出的内容

HumanMessage 类是 langchain_core Message库,用于将内容结构化为包含属性 typetextimage_url 的字典列表。该列表传递给 llm.invoke() 函数,并可以使用 ``response.content` 访问响应内容。

  • 在下面的代码中,我们要求模型找出给定图像之间的差异。
from langchain_core.messages import HumanMessage

llm = ChatGoogleGenerativeAI(model="gemini-pro-vision")

message = HumanMessage(
    content=[
        {
            "type": "text",
            "text": "Find the differences between the given images",
        },
        {
            "type": "image_url",
            "image_url": "https://picsum.photos/id/237/200/300"
        },
        {
            "type": "image_url",
            "image_url": "https://picsum.photos/id/219/5000/3333"
        }
    ]
)

response = llm.invoke([message])
print(response.content)

img

img img

脑洞大开,我们可以做一个这样找不同的程序了。🤪

使用 Gemini API 创建一个 ChatGPT

我们玩够了 Gemini 后,使用 StreamlitGemini 构建类似 ChatGPT 的简单应用程序。

  • 创建一个名为gemini-bot.py的文件,并将以下代码添加到其中。
import streamlit as st
import os
import google.generativeai as genai

st.title("Gemini Bot")

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

# 配置 model
model = genai.GenerativeModel('gemini-pro')

# 初始化 message
if "messages" not in st.session_state:
    st.session_state.messages = [
        {
            "role":"assistant",
            "content":"Ask me Anything"
        }
    ]

# 重新运行应用程序时显示来自历史记录的聊天消息
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

# 处理并储存和回复。
def llm_function(query):
    response = model.generate_content(query)

    # 显示助手消息
    with st.chat_message("assistant"):
        st.markdown(response.text)

    # 保存用户信息
    st.session_state.messages.append(
        {
            "role":"user",
            "content": query
        }
    )

    # 保存用户信息
    st.session_state.messages.append(
        {
            "role":"assistant",
            "content": response.text
        }
    )

# 输入我们的问题
query = st.chat_input("What's up?")

# 当输入时调用该函数。
if query:
    # 显示用户的回答
    with st.chat_message("user"):
        st.markdown(query)

    llm_function(query)

  • 通过执行以下命令来运行该应用程序。
streamlit run gemini-bot.py

  • 点击终端显示的链接以访问该应用程序。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总结:

  1. Gemini AI是谷歌创建的一组大型语言模型,具备处理多模态数据(文本、图像、音频等)的能力,能够进行复杂推理并生成多种类型的输出。
  2. Gemini 的多模态能力:Gemini AI 由谷歌开发,具有处理文本、图像、音频和代码等多种数据类型的能力,能够理解和响应复杂的多模态提示。
  3. 生成文本和安全性:通过示例代码展示了如何使用 Gemini 模型生成文本响应,并且模型内置的安全功能可以防止不当查询,如入侵电子邮件或制造武器的请求。
  4. 超参数配置:可以配置诸如温度、top_k、top_p 等超参数,以控制生成文本的随机性、长度和多样性,从而满足不同的应用需求。
  5. 视觉和多模态任务:使用 Gemini 的 gemini-pro-vision 模型,可以实现图像解释、基于图像生成故事以及对图像中的对象进行识别和计数等功能,展示了其在多模态处理上的强大能力。
  6. 文章演示了如何使用Gemini API进行文本生成和基于视觉的任务,包括解释图像内容、根据图片写故事以及计算图像中的对象数量。
  7. 使用Langchain库可以简化与Gemini模型的集成,使得处理文本和图像输入更加方便,并能够批量处理多个查询。
  8. 最后,展示了如何使用Streamlit框架与Gemini模型结合,构建一个类似ChatGPT的聊天应用程序,并通过示例代码展示了具体的实现步骤。

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

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

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

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

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段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.3 流水线工程
    • L2.4 总结与展望

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

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

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

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

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

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

相关文章

C/C++:WinSock_TCP通信实例

一、socket函数 第一种使用socket函数来创建套接字,函数调用成功将返回套接字句柄。 socket函数接收三个参数。af 、type 、protocol af:指定套接字使用的地址格式。 type:指定套接字的类型。 protocol:配合type参数使用&#xf…

Appium中的api(二)

目录 元素定位操作api 1--通过id定位api 2--通过class获取定位元素 3--通过xpath表达式定位元素 4.完整代码 解释 效果 元素定位操作api 1--通过id定位api 注:driver.find_element是获取单个元素 # 通过id获取 mySearchId "com.android.settings:id/search_acti…

(2024.10.28)使用YOLOv8训练自己的目标检测模型

收集数据集: 1.使用开源已标记数据集 2.自己网上搜索下载。 3.可以将图片几何变换,类似翻转、裁剪、旋转和平移,就变成多张图片了 标注数据集 : 常用的标注工具有很多,比如LabelImg(易崩溃)…

nacos的原理,为什么可以作为注册中心,和zookeeper的区别

Nacos 是阿里巴巴开源的一款用于动态服务发现、配置管理和服务治理的中间件,广泛应用于微服务架构中。它可以作为注册中心的原因在于其强大的服务注册与发现功能,原理上与 Zookeeper 有相似之处,但在设计目标和功能上有所区别。 Nacos 的原理…

猫头虎分享: 108个最新国内AI工具集,AI写作AI绘画工具大全

猫头虎分享: 108个最新国内AI工具集,AI写作AI绘画工具大全 🎨🤖 👋 大家好呀,这里是 猫头虎,专注于分享技术干货、AI工具和实用资源。今天给大家带来一份超级干货清单——108个国内最流行的AI工…

PPT制作新选择:本地部署PPTist结合内网穿透实现实时协作和远程使用

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 💡 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站】 前…

【Python】数据分析必备:Pandas库的全面教程与实战

数据分析必备:Pandas库的全面教程与实战 在数据分析领域,Python已成为一门主流语言,而Pandas库则是Python中最重要的数据分析工具之一。无论是数据清洗、数据处理,还是数据可视化,Pandas都能为数据科学家和分析师提供…

解决nexus无法启动问题

🎉 问题 首先,nexus对jdk版本有要求,这点相信大家都知道,如果版本不对的话,会报以下错误: No suitable Java Virtual Machine could be found on your system. The version of the JVM must be at least 1…

ZEISS ATOS Q蓝光三维扫描仪高效把控零件质量检测【上海沪敖3D】

位于Bengaluru的施耐德电气工厂拥有一流的计量设备,可以检测所有供应商的零件。当时,他们在使用一款激光扫描设备进行质量检测,但是,该设备不便于携带,且检测时需要喷涂大量的显影液。此外,它需要被安装在夹…

React中的hook

React中的hook究竟是什么? 有哪些hook? hook的两大规则 为什么hook要在顶层调用? hook的调用需要在每一次render后都按照一样的顺序进行调用,否则会出现类似“野指针”的情况,但是要做到这一步,就需要hook在…

微服务网格Istio介绍

微服务网格Istio 介绍服务注册和发现服务度量灰度发布 Istio核心特性断路器互动1:举个生活中的例子解释断路器互动2:服务降级(提高用户体验效果) 超时重试多路由规则 Istio架构istio组件详解PilotEnvoyCitadelGalleyIngressgatewa…

Spring Cloud --- Sentinel 热点规则

何为热点 热点即经常访问的数据,很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据,并对其访问进行限流或者其它操作 热点规则 方法 testHotKey 里面第一个参数 P1 只要 QPS 超过每秒 1 次,马上降级处理 请求路径中不管…

ArcGIS 10.8 安装教程(含安装包)

目录 一、ArcGIS10.8二、安装链接三、安装教程四、ArcGIS实战 (一)ArcGIS10.8 1. 概述 ArcGIS 10.8是由美国Esri公司开发的GIS平台,用于处理、分析、显示和管理地理数据,并实现数据共享。它具有新特性和功能,性能更…

信号完整性SI总结【小登培训】

信号完整性问题的根源通常在于阻抗不匹配、串扰、时序误差、电磁辐射和电源噪声。解决这些问题需要从PCB设计、布线、材料选择、匹配和屏蔽等多个方面综合考虑,并结合眼图分析等工具进行调试和优化。确保信号完整性对于高速电路设计尤为重要,影响系统的可…

异常处理与调试:如何编写稳健的代码(8/10)

目录 异常处理与调试:如何编写稳健的代码(8/10) 介绍 异常概述 常见的异常类型 使用 try...except 处理异常 基本结构 示例:读取文件内容 捕获多个异常 自定义异常 示例:自定义异常类 调试代码 使用 print…

智能融合:国际数字影像产业园的数字化转型之路践

国际数字影像产业园作为数字园区的典型代表,在现代城市与企业发展进程中扮演着至关重要的角色。它深度融合了信息技术、物联网、大数据等一系列先进技术,全力聚焦于提升城市及企业的智能化水准与管理效能。 产业园围绕数字影像这一特定主题,…

基于KV260的基础视频链路通路(MIPI+Demosaic+VDMA)

目录 1. 简介 1.1 要点 1.2 背景 1.2.1 Got stuck 1.2.2 Cant be Initialized 2. Overlay 2.1 参考 Overlay 2.1.1 KV260 Base 2.1.2 Pynq-CV-OV5640 2.2 自建 Overlay 2.2.1 IIC IP 2.2.2 MIPI CSI-2 Rx 2.2.3 AXI4-S Subset 2.2.4 Demosaic 2.2.5 Pixel Pack …

【MySQL 保姆级教学】内置函数(9)

内置函数 1. 日期函数1.1 日期函数的种类1.2 示例1.3 日期的转换 2. 字符串函数2.1 种类2.2 示例 3. 数学函数3.1 种类3.2 向上取整和向下取整3.3 示例 4. 其他函数4.1 查询当前用户/数据库4.2 ifnull(val1,val2)4.3 md5()函数4.4 password()函数 1. 日期函数 1.1 日期函数的种…

Python | Leetcode Python题解之第514题自由之路

题目: 题解: Test "godding" target "d"i 0left i lc 0 right i rc 0while Test[left] ! target:left - 1lc 1if left -1:left len(Test) - 1while Test[right] ! target:right 1rc 1if right len(Test):right 0prin…

我用自研引擎做游戏:《干得好,托尼》

最近心里突然有个想法,想做一个游戏试试看。但是我从未做过游戏,这可咋办?我理性的思考了片刻,清楚的意识到,我要习得做游戏的方法论。于是到网上找了几本开发游戏的电子书,看了几天,就开始进入…