python调用Gemini大模型方法详解(程序及示例效果)

这篇具有很好参考价值的文章主要介绍了python调用Gemini大模型方法详解(程序及示例效果)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        谷歌Google于12月初正式发布了Gemini大模型,与GPT3.5、GPT4达到了相近效果。除了文本生成之外,Gemini还支持输入图片并进行理解,下文将详细介绍调用方式。当前阶段,Gemini应该有300刀的免费额度,有效期为3个月。每分钟调用次数为60次,而OpenAI免费GPT3.5的限制为每分钟3次。文末将给出Gemini key及其模型技术交流群。

1 GeminiPro

        GeminiPro模型的输入文本,输出也为文本。详细如下所示。

import google.generativeai as genai,大模型,AIGC,chatgpt,gemini,geminipro,vision,python,大模型

        我们可以看到输入支持将近32K个token,并且一个token大约相当于4个字符。

1.1 非stream输出

        示例程序如下所示。

import json
import requests
# 非stream方式
def test_gemini_no_stream(apikey, text):
    url = f'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={apikey}'
    headers = {'Content-Type': 'application/json'}
    data = {
        'contents': [
            {
                'parts': [
                    {
                        'text': text
                        }
                    ]
                }
            ]
        }

    response = requests.post(url, headers=headers, data=json.dumps(data))
    # print(response.json())
    print(response.json()['candidates'][0]['content']['parts'][0]['text'])
if __name__ == '__main__':
    apikey = 'xxx'
    text   = 'say hello'
    print('test_gemini_no_stream(apikey, text):')
    test_gemini_no_stream(apikey, text)

        输出结果为:

test_gemini_no_stream(apikey, text):
Hello there! How are you doing today?

1.2 google-generativeai非stream输出

        上面直接通过requests访问api,这里将使用Google的Python库进行调用。首先需要通过下面命令安装google-generativeai。

pip install -U google-generativeai

        注意事项:Python版本需至少为3.9,google-generativeai版本为0.3.1。

        示例程序如下所示。

import google.generativeai as genai

def genai_no_stream(apikey, text):
    genai.configure(api_key=apikey)
    # 支持的模型列表
    # for m in genai.list_models():
    #     if 'generateContent' in m.supported_generation_methods:
    #         print(m.name)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content("how are you")
    print(response.text)

        输出结果为:

genai_no_stream(apikey, text):
I am a large language model, trained by Google.

1.3 google-generativeai stream输出

        流式输出只需将generate_content的stream设置为True即可,示例程序如下所示。

# text = '请介绍人工智能发展历史'
def genai_stream(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content(text, stream=True)
    for chunk in response:
        print(chunk.text, end='', flush=True)

        输出结果如下

**人工智能发展史**

* **1940年代:**诞生
    * 1943年,沃伦·麦卡洛克和沃尔特·皮茨提出神经网络模型。
    * 1949年,艾伦·图灵提出图灵检测,用以判断机器是否具有智能。
* **1950年代:**发展
    * 1950年,艾伦·纽厄尔和克利福德·肖提出逻辑理论家程序,该程序能够证明定理。
    * 1952年,阿瑟·塞缪尔发明会下棋的程序。
    * 1956年,约翰·麦卡锡在达特茅斯学院举办了世界上第一次人工智能研讨会,人工智能一词正式诞生。
* **1960年代:**突破
    * 1965年,拉斐尔·内尔逊提出通用问题求解器,该程序能够解决各种各样的问题。
    * 1966年,弗兰克·罗森布拉特发明感知机,该机器能够识别手写数字。
    * 1969年,马文·明斯基和西摩尔·帕帕特出版《感知机》,该书对感知机进行了详细的阐述。
* **1970年代:**停滞
    * 1973年,马文·明斯基和西摩尔·帕帕特出版《人工智能框架》,该书对人工智能进行了全面的概述。
    * 1974年,罗杰·香克斯和罗伯特·阿贝尔森提出脚本理论,该理论认为人们的行为是基于存储在记忆中的脚本。
    * 1979年,爱德华·菲根鲍姆和朱丽叶·费根鲍姆出版《人工智能专家系统》,该书对专家系统进行了详细的阐述。
* **1980年代:**复兴
    * 1980年,约翰·霍普菲尔德提出霍普菲尔德网络,该网络能够存储和检索信息。
    * 1982年,特伦斯·塞诺夫斯基和杰弗里· Hinton提出多层感知器,该网络能够学习和识别模式。
    * 1986年,戴维·鲁梅尔哈特和杰弗里· Hinton出版《并行分布式处理:探索大脑的计算》,该书对并行分布式处理进行了详细的阐述。
* **1990年代:**爆发
    * 1997年,IBM的深蓝战胜了世界象棋冠军加里·卡斯帕罗夫。
    * 1997年,杨立昆等人提出卷积神经网络,该网络能够识别图像。
    * 1998年,吴恩达等人提出长短期记忆网络,该网络能够学习和记忆长时间序列的数据。
* **2000年代:**深化
    * 2006年,杰弗里· Hinton等人提出深度信念网络,该网络能够学习和识别复杂的数据。
    * 2012年,安德鲁·恩等人提出卷积神经网络,该网络能够识别图像。
    * 2015年,谷歌的阿尔法狗战胜了世界围棋冠军李世石。
* **2010年代:**应用
    * 2016年,谷歌的阿尔法狗战胜了世界象棋冠军李世石。
    * 2017年,百度的人工智能围棋程序AlphaGo Zero战胜了阿尔法狗。
    * 2018年,谷歌的 Duplex 人工智能助手能够与人类进行自然的对话。
    * 2019年,OpenAI 的 GPT-3 人工智能语言模型能够生成类似人类的文本。

人工智能的发展日新月异,未来人工智能将对人类社会产生深远的影响。

        可以看到,其输出默认为MarkDown格式。

1.4 chat模式

        使用chat模式可以自动获取上下文。示例程序如下所示。

def genai_chat(apikey, text):
    genai.configure(api_key=apikey)
    # 历史消息,必须为偶数
    messages = [
    {'role':'user',
     'parts': ["请将我接下来的任何输入都直接翻译成中文即可。"]},
    {'role':'model',
     'parts': ["好的。我接下来将任何输入都直接翻译成中文"]}
    ]
    model = genai.GenerativeModel('gemini-pro')
    chat = model.start_chat(history=messages)
    response = chat.send_message(text)
    print(response.text)

        输出结果如下:

电脑就像一个聪明的机器人,可以帮助我们做很多事情。它里面有很多小零件,比如处理器、内存、硬盘、显卡等等。处理器就像电脑的大脑,负责处理信息和计算。内存就像电脑的短期记忆,可以临时存储信息。硬盘就像电脑的长期记忆,可以永久存储信息。显卡负责处理图形和图像。

当我们使用电脑时,我们通过键盘、鼠标或触摸屏等输入设备将信息输入到电脑中。电脑会将这些信息发送给处理器,由处理器进行处理和计算。处理后的结果会存储在内存中,或者永久存储在硬盘中。如果我们想看到处理结果,电脑会将它们发送给显示器或打印机等输出设备,这样我们就可以看到或打印出结果了。

电脑还可以连接到互联网,这样我们就可以与世界各地的其他人交流信息和数据。

        虽然上述程序可以加入历史消息,但是并不能模拟出OpenAI GPT api的system参数或GPTs功能。Gemini没有system这个角色。在获取上下文时,messages里的model信息正常情况下是由Gemini生成的。这里想人为进行设计的,似乎达不到想要的功能,但并不是说chat模式有问题,而是历史消息中的model信息没有正确设置为Gemini生成的内容。正常示例程序如下所示。

model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
response = chat.send_message("In one sentence, explain how a computer works to a young child.")
print(chat.history)
response = chat.send_message("Okay, how about a more detailed explanation to a high schooler?", stream=True)

for chunk in response:
  print(chunk.text)
  print("_"*80)

1.5 多轮对话

        示例程序如下:

def genai_multi_turn(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    messages = [
        {'role':'user',
        'parts': ["请将我接下来的任何输入都直接翻译成中文即可。"]},
        {'role':'model',
        'parts': ["好的。我接下来将任何输入都直接翻译成中文"]},
        {'role':'user',
        'parts': [text]}
    ]
    response = model.generate_content(messages)
    print(response.text)

        输出结果如下:

电脑就像一个聪明的机器人,它能帮助我们做很多事情。电脑里面有很多零件,就像人有大脑、心脏、手脚一样。电脑的大脑叫中央处理器,它负责处理信息。电脑的心脏叫内存,它负责存储信息。电脑的手脚叫输入输出设备,它们负责与我们交流。

当我们使用电脑时,我们会通过键盘或鼠标把信息输入到电脑里。电脑的大脑会处理这些信息,然后把结果通过显示器或打印机等输出设备显示出来。

电脑还可以存储信息,就像我们的大脑可以记住事情一样。我们可以把照片、音乐、文件等信息存储在电脑里,以后需要的时候随时可以调出来。

电脑还可以帮助我们做很多有趣的事情,比如玩游戏、看电影、听音乐等。它就像一个神奇的工具,可以帮助我们学习、工作和娱乐。

        效果同上文的chat模式,正确用法为:

model = genai.GenerativeModel('gemini-pro')
messages = [
    {'role':'user',
     'parts': ["Briefly explain how a computer works to a young child."]}
]
response = model.generate_content(messages)
messages.append({'role':'model',
                 'parts':[response.text]})
messages.append({'role':'user',
                 'parts':["Okay, how about a more detailed explanation to a high school student?"]})
response = model.generate_content(messages)
print(response.text)

1.6 system或GPTs

        以上通过多轮对话来实现system或GPTs并没有获得成功,最好直接指定任务,如下所示。

def genai_system(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content("请将下面内容翻译成中文。\nBriefly explain how a computer works to a young child.")
    print(response.text)

        输出结果如下:

genai_system(apikey, text):
简单地向一个孩子解释电脑的工作原理。

2 Gemini Pro Vision

        Gemini Pro Vision支持对图片的理解,详细参数如下所示。

import google.generativeai as genai,大模型,AIGC,chatgpt,gemini,geminipro,vision,python,大模型

        下载示例图片:

curl -o image.jpg https://t0.gstatic.com/licensed-image?q=tbn:ANd9GcQ_Kevbk21QBRy-PgB4kQpS79brbmmEG7m3VOTShAn4PecDU5H5UxrJxE3Dw1JiaG17V88QIol19-3TM2wCHw

import google.generativeai as genai,大模型,AIGC,chatgpt,gemini,geminipro,vision,python,大模型

        示例程序如下所示:

def gemini_pro_vision(apikey, text, image_path):
    import PIL.Image
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro-vision')
    img = PIL.Image.open(image_path)
    response = model.generate_content([text, img], stream=True)
    response.resolve()
    print(response.text)

        输出如下所示。

 今天分享一道超级简单的快手便当,上班族和学生党都非常适合哦!
所需食材:鸡胸肉、西兰花、胡萝卜、米饭。
制作步骤:
1. 鸡胸肉切小块,用料酒、生抽、黑胡椒粉腌制15分钟。
2. 西兰花和胡萝卜焯水备用。
3. 米饭蒸熟。
4. 锅中热油,放入腌制好的鸡胸肉翻炒至变色。
5. 加入西兰花和胡萝卜,翻炒均匀。
6. 加入米饭,翻炒均匀即可。
这道快手便当就做好啦,是不是超级简单?赶紧动手试试吧!

        图片的理解(或者图片内容提取)可以与GeminiPro或者GPT进行结合实现更多应用。

3 模型配置

        Gemini也有与常规LLM或GPT相类似的配置方式,示例程序如下所示。

def genai_config(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content(
    text,
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=['x'],
        max_output_tokens=20,
        temperature=1.0)
    )
    print(response.text)

4 全部完整示例程序 

import json
import requests
# 非stream方式
def test_gemini_no_stream(apikey, text):
    url = f'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={apikey}'
    headers = {'Content-Type': 'application/json'}
    data = {
        'contents': [
            {
                'parts': [
                    {
                        'text': text
                        }
                    ]
                }
            ]
        }

    response = requests.post(url, headers=headers, data=json.dumps(data))
    # print(response.json())
    print(response.json()['candidates'][0]['content']['parts'][0]['text'])


import google.generativeai as genai

def genai_no_stream(apikey, text):
    genai.configure(api_key=apikey)
    # 支持的模型列表
    # for m in genai.list_models():
    #     if 'generateContent' in m.supported_generation_methods:
    #         print(m.name)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content("how are you")
    print(response.text)

def genai_stream(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content(text, stream=True)
    for chunk in response:
        print(chunk.text, end='', flush=True)

def genai_chat(apikey, text):
    genai.configure(api_key=apikey)
    # 历史消息,必须为偶数
    messages = [
    {'role':'user',
     'parts': ["请将我接下来的任何输入都直接翻译成中文即可。"]},
    {'role':'model',
     'parts': ["好的。我接下来将任何输入都直接翻译成中文"]}
    ]
    model = genai.GenerativeModel('gemini-pro')
    chat = model.start_chat(history=messages)
    response = chat.send_message(text)
    print(response.text)

def genai_multi_turn(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    messages = [
        {'role':'user',
        'parts': ["请将我接下来的任何输入都直接翻译成中文即可。"]},
        {'role':'model',
        'parts': ["好的。我接下来将任何输入都直接翻译成中文"]},
        {'role':'user',
        'parts': [text]}
    ]
    response = model.generate_content(messages)
    print(response.text)

def genai_system(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content("请将下面内容翻译成中文。\nBriefly explain how a computer works to a young child.")
    print(response.text)

def gemini_pro_vision(apikey, text, image_path):
    import PIL.Image
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro-vision')
    img = PIL.Image.open(image_path)
    response = model.generate_content([text, img], stream=True)
    response.resolve()
    print(response.text)

def genai_config(apikey, text):
    genai.configure(api_key=apikey)
    model = genai.GenerativeModel('gemini-pro')
    response = model.generate_content(
    text,
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=['x'],
        max_output_tokens=20,
        temperature=1.0)
    )
    print(response.text)


if __name__ == '__main__':
    apikey = 'xxx'
    text   = 'say hello'
    # print('test_gemini_no_stream(apikey, text):')
    # test_gemini_no_stream(apikey, text)

    # print('genai_no_stream(apikey, text):')
    # genai_no_stream(apikey, text)

    # print('genai_stream(apikey, text):')
    # genai_stream(apikey, text='请介绍人工智能发展历史')
    
    # print('genai_chat(apikey, text):')
    # genai_chat(apikey, text='Briefly explain how a computer works to a young child.')

    # print('genai_chat(apikey, text):')
    # genai_multi_turn(apikey, text='Briefly explain how a computer works to a young child.')

    # print('genai_system(apikey, text):')
    # genai_system(apikey, text='请将下面内容翻译成中文。\nBriefly explain how a computer works to a young child.')

    # print('gemini-pro-vision(apikey, text, image_path):')
    # gemini_pro_vision(apikey, text='请基于图片中内容写一篇小红书文案。', image_path='image.jpg')

    print('genai_config(apikey, text)')
    genai_config(apikey, text='say hello.')

5 技术知识交流

import google.generativeai as genai,大模型,AIGC,chatgpt,gemini,geminipro,vision,python,大模型文章来源地址https://www.toymoban.com/news/detail-796488.html

到了这里,关于python调用Gemini大模型方法详解(程序及示例效果)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/suiyingy/article/details/135162051

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python代码示例,可以生成烟花表演效果

    个简单的Python代码示例,可以生成烟花表演效果。您可以根据自己的喜好和需要来修改参数,以获得所需的效果。 请注意,这只是一个简单的示例程序,并不包含过多的交互性或复杂的动画效果。如果您需要更高级、更定制化的烟花表演效果,请考虑使用专业的图形库(如

    2024年02月14日
    浏览(13)
  • 微信小程序首页、界面布局、3D轮播图效果(示例二)

    使用swiper实现3D轮播图效果,自定义顶部状态栏,具体代码: 1、js代码 2、wxml代码 3、wxss代码 4、json代码 如需要下载完整版,包含监听事件、图片文件等,请前往下方链接,下载完整版,下载后直接使用微信开发者工具打开即可,下载链接为: 小程序完整版界面(示例二)

    2024年02月10日
    浏览(14)
  • Python学习之Image模块图片滤镜效果操作示例

    滤镜效果是图像处理中常用的一种技术,可以用来增强图像的视觉效果,实现不同的效果,比如增强对比度、饱和度、色彩等。滤镜效果可以帮助用户快速地调整图像的特性,从而使图像更加适合用户的需求。 Python 中的 PIL (Python Imaging Library) 模块是一个广泛使用的图像处理

    2024年02月04日
    浏览(7)
  • 【Lua in Unity】详解与和C#互相调用示例

    目录 Lua在Unity中的主要作用 如何创建 Lua与C#互相调用 C#和Lua的使用场景区分 完整示例 游戏逻辑编写:Lua可以作为一种脚本语言,用于游戏中的逻辑编写,例如定义游戏角色的行为、AI逻辑,处理游戏的战斗逻辑和流程控制,等等。可以将Lua代码通过Unity的API来实现与引擎的交

    2024年02月11日
    浏览(9)
  • dedecms如何在列表页调用body内容字段的方法示例

    我们都知道description的优化和seo也是息息相关的,对于seo新手来说往往没有这一方面的经验,不写description可能效果更好,但是不写description会出现一个问题,那就是无法在文章列表页调出文章的简介。 比如下列代码: 因为没写description这个时候文章简介就会显示空白,严重影

    2024年02月02日
    浏览(10)
  • Vue 3 + Element UI Plus 实现 Select 下拉框的虚拟滚动效果详解与代码示例

    在 Vue 3 项目中,当下拉框中的选项过多时,使用虚拟滚动可以提升性能和用户体验。本文将介绍如何使用 Vue 3 和 Element UI Plus(el-select-plus)组件实现 Select 下拉框的虚拟滚动效果,并提供详细的代码示例。 首先,确保你已经安装了 Element UI Plus,它是 Element UI 的扩展版本,支

    2024年02月08日
    浏览(14)
  • python3文件路径操作常用方法带示例详解(os.path模块,os.listdir,os.walk,os.scandir方法等)(不定期更新整理中)

    首先说明路径一般都是字符串的形式,与普通字符串的主要区别在于,普通字符串中的反斜杠(“”)是表示转义字符的,如换行符(“n”),跳格符(“t”),而在路径中,正斜杠(“/”)和反斜杠(“”)都是用来表示目录分隔符的。 在python中一般用os.path模块来处理路径字符串,

    2024年01月23日
    浏览(10)
  • 使用python调用ChatGPT API 简单示例

    如果你已经获得了 OpenAI的API密钥 ,并且想要使用Python发起ChatGPT对话,你可以使用OpenAI的Python SDK来实现。下面是一个简单的示例代码: 首先,你需要确保已安装OpenAI的Python SDK。你可以使用pip来安装: 然后,你可以使用以下代码来发起对话: 确保将 \\\'YOUR_API_KEY\\\' 替换为你的实

    2024年02月12日
    浏览(10)
  • 微信小程序 - 实现容器卡片翻转动画效果,类似考勤打卡签到时翻转效果(像翻牌抽奖类似的效果动画)详细示例源码教程,一键复制开箱即用!

    微信小程序项目中,实现了任意容器像卡片一样的翻转效果动画,类似钉钉打卡签到点击时的翻转动画! 示例源码的注释非常详细,保证一键复制后改改样式就能应用到你的项目中去了。

    2024年02月10日
    浏览(12)
  • Kali Linux 安装搭建 hadoop 平台 调用 wordcount 示例程序 详细教程

    目标: *安装虚拟机,在自己虚拟机上完成hadoop的伪分布式安装。(安装完成后要检查)* 安装SSH Server服务器:apt-get install openssh-server 更改默认的SSH密钥 cd /etc/ssh mkdir ssh_key_backup mv ssh_host_* ssh_key_backup 创建新密钥:dpkg-reconfigure openssh-server 允许 SSH Root 访问,修改SSH 配置文件

    2024年02月04日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包