使用谷歌 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 小时前
远程在线诊疗|在线诊疗|基于java和小程序的在线诊疗系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
文心快码 Baidu Comate3 小时前
双十一将至,用Rules玩转电商场景提效
人工智能·ai编程·文心快码·智能编程助手·comate ai ide
瞻邈3 小时前
LION运行笔记
人工智能·深度学习
落叶的悲哀4 小时前
mysql tidb like查询有换行符内容问题解决
数据库·mysql·tidb
Serverless 社区4 小时前
助力企业构建 AI 原生应用,函数计算FunctionAI 重塑模型服务与 Agent 全栈生态
大数据·人工智能
大千AI助手4 小时前
参考先验(Reference Priors)详解:理论与Python实践
人工智能·机器学习·贝叶斯·大千ai助手·参考先验·贝叶斯推断·先验
Baihai_IDP4 小时前
面向 LLM 的 GPU 系统工程方法论
人工智能·面试·gpu
wangchen_04 小时前
MySQL索引
数据库·mysql
哈__4 小时前
数据库迁移实操与金仓数据库技术优势:从语法兼容到自动化落地
数据库
北京耐用通信4 小时前
冶金车间“迷雾”重重?耐达讯自动化Profibus转光纤为HMI点亮“透视眼”!
人工智能·物联网·网络协议·网络安全·自动化