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

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

LangchainGemini 集成

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

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

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

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

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

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

python 复制代码
python复制代码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)

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

python 复制代码
python复制代码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` 访问响应内容。

  • 在下面的代码中,我们要求模型找出给定图像之间的差异。
python 复制代码
python复制代码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)

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

使用 Gemini API 创建一个 ChatGPT

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

  • 创建一个名为gemini-bot.py的文件,并将以下代码添加到其中。
python 复制代码
python复制代码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)
  • 通过执行以下命令来运行该应用程序。
python 复制代码
python

复制代码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的聊天应用程序,并通过示例代码展示了具体的实现步骤。
相关推荐
效率客栈老秦3 分钟前
Python Trae提示词开发实战(8):数据采集与清洗一体化方案让效率提升10倍
人工智能·python·ai·提示词·trae
倔强的石头_4 分钟前
【金仓数据库】ksql 指南(六)—— 创建与管理用户和权限(KingbaseES 安全控制核心)
数据库
小和尚同志9 分钟前
虽然 V0 很强大,但是ScreenshotToCode 依旧有市场
人工智能·aigc
HyperAI超神经13 分钟前
【vLLM 学习】Rlhf
人工智能·深度学习·学习·机器学习·vllm
芯盾时代17 分钟前
石油化工行业网络风险解决方案
网络·人工智能·信息安全
线束线缆组件品替网17 分钟前
Weidmüller 工业以太网线缆技术与兼容策略解析
网络·人工智能·电脑·硬件工程·材料工程
lambo mercy23 分钟前
深度学习3:新冠病毒感染人数预测
人工智能·深度学习
Echo_NGC223727 分钟前
【神经视频编解码NVC】传统神经视频编解码完全指南:从零读懂 AI 视频压缩的基石
人工智能·深度学习·算法·机器学习·视频编解码
摆烂咸鱼~40 分钟前
机器学习(10)
人工智能·机器学习·支持向量机
数据皮皮侠AI43 分钟前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节