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

image.png

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

LangchainGemini 集成

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

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

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

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

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

img

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

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复制代码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复制代码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的文件,并将以下代码添加到其中。
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

复制代码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的聊天应用程序,并通过示例代码展示了具体的实现步骤。
  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Google GeminiGoogle推出的一种广告平台,旨在帮助广告主在移动设备上展示广告。它提供了一种全新的广告投放方式,可以根据用户的兴趣和行为定位广告,从而提供更加精准的广告投放效果。 Gemini广告平台的特点包括: 1. 移动优先:Gemini广告平台专注于移动设备上的广告投放,可以帮助广告主更好地触达移动用户。 2. 定位广告:Gemini广告平台可以根据用户的兴趣和行为定位广告,从而提供更加精准的广告投放效果。 3. 多种广告格式:Gemini广告平台支持多种广告格式,包括图片广告、视频广告和原生广告等。 4. 数据驱动:Gemini广告平台通过分析用户的数据,可以提供更加精准的广告投放策略,从而提高广告的转化率和效果。 以下是一个使用Gemini广告平台的示例代码: ```python import googleads # 创建一个广告客户端 client = googleads.AdWordsClient.LoadFromStorage() # 创建一个广告组 ad_group = { 'name': 'Gemini Ad Group', 'status': 'ENABLED', 'campaignId': 'INSERT_CAMPAIGN_ID_HERE', 'biddingStrategyConfiguration': { 'biddingStrategyType': 'MANUAL_CPC', }, } # 创建一个广告 ad = { 'headline': 'Gemini Ad', 'description': 'This is a Gemini ad.', 'finalUrls': ['http://www.example.com'], } # 将广告添加到广告组中 ad_group_service = client.GetService('AdGroupService') ad_group_operations = [{ 'operator': 'ADD', 'operand': ad_group, }] ad_group_service.mutate(ad_group_operations) # 将广告添加到广告组中 ad_service = client.GetService('AdService') ad_operations = [{ 'operator': 'ADD', 'operand': ad, }] ad_service.mutate(ad_operations) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值