前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)

使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)

作者头像
用户1418987
发布2024-09-06 10:45:20
1300
发布2024-09-06 10:45:20
举报
文章被收录于专栏:coder

使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)

使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_模态
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_模态

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

LangchainGemini 集成

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

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

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

  • 在下面的代码中,我们构建了一个最简单的查询。
代码语言:javascript
复制
from langchain_google_genai import ChatGoogleGenerativeAI
 
 llm = ChatGoogleGenerativeAI(model="gemini-pro")
 response = llm.invoke("Explain Quantum Computing in 50 words?")
 print(response.content)
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_模态_02
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_模态_02

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

代码语言:javascript
复制
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)
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_模态_03
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_模态_03

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

代码语言:javascript
复制
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)
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_API_04
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_API_04
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_API_05
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_API_05

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

  • 在下面的代码中,我们要求模型找出给定图像之间的差异。
代码语言:javascript
复制
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 与 langchain 结合构建自己的 ChatBot(二)_应用程序_06
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_应用程序_06
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_API_07
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_API_07
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_应用程序_08
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_应用程序_08

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

使用 Gemini API 创建一个 ChatGPT

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

  • 创建一个名为gemini-bot.py的文件,并将以下代码添加到其中。
代码语言:javascript
复制
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)
  • 通过执行以下命令来运行该应用程序。
代码语言:javascript
复制
streamlit run gemini-bot.py
  • 点击终端显示的链接以访问该应用程序。
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_应用程序_09
使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)_应用程序_09

总结:

  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的聊天应用程序,并通过示例代码展示了具体的实现步骤。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用谷歌 Gemini API 与 langchain 结合构建自己的 ChatBot(二)
    • 将 Langchain 与 Gemini 集成
      • 使用 Gemini API 创建一个 ChatGPT
      • 总结:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档