网易首页 > 网易号 > 正文 申请入驻

叫板GPT-4的Gemini,我做了一个聊天网页,可图片输入,附教程

0
分享至

大家好,我是老章

先看效果:


简介

Gemini 是谷歌研发的最新一代大语言模型,目前有三个版本,被称为中杯、大杯、超大杯,Gemini Ultra 号称可与GPT-4一较高低:

  • Gemini Nano(预览访问) 为设备端体验而构建的最高效模型,支持离线使用场景。

  • Gemini Pro(已推出) 性能最佳的模型,具有各种文本和图像推理任务的功能。

  • Gemini Ultra(预览访问) 将于2024年初推出,用于大规模高度复杂文本和图像推理任务的最强大模型。

Gemini Pro在八项基准测试中的六项上超越了GPT-3.5,被誉为“市场上最强大的免费聊天AI工具”。

本文,我们使用的是Gemini Pro,Pro有两个模型:

  • gemini-pro:针对仅文本提示进行了优化。

  • gemini-pro-vision:针对文本和图像提示进行了优化。

API 免费!

Google这次确实给力,API直接免费开放,只要申请就给!

如何本地执行脚本 或 开发一个前端页面,顺利白嫖Google的Gemini呢?

先去 https://ai.google.dev/ 创建Gemini API key


在这个页面https://makersuite.google.com/app/apikey

点击Create API,然后把api复制出来,保存好,后面要用!


其实,可以去深入学习一下文档:https://ai.google.dev/docs

Gemini 构建应用程序所需的所有信息都可以在这个网站查到,包括Python、Android(Kotlin)、Node.js 和 Swift的支持文档。


我们直接看Python 快速入门指南:

https://ai.google.dev/tutorials/python_quickstart

更省事儿的是直接从这个官方示例中copy代码:

https://github.com/google/generative-ai-docs/blob/main/site/en/tutorials/python_quickstart.ipynb

核心代码

本地运行脚本,代码其实简单到离谱,6行足矣。

注:网络要畅通

# 先安装google-generativeai
pip install -q -U google-generativeai

文本对话

import google.generativeai as genai
GOOGLE_API_KEY='这里填写上一步获取的api'
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("你好")
print(response.text)

运行一下:

图片也可以作为输入,比如让Gemini评价一下我的头像


import PIL.Image
import google.generativeai as genai
img = PIL.Image.open('img.png')
GOOGLE_API_KEY='这里填写上一步获取的api'
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(["请评价一下这张照片", img])
response.resolve()
print(response.text)

运行一下:

做个网页版

网页版可以使用streamlit或者Gradio实现,Gradio 本公众号写过,包括如何将项目免费部署到huggingface。需要了解更多:可以参考我这篇文章

也可以部署到自己的服务器,加个域名就OK了

这里参考了这位大佬的代码:https://github.com/meryemsakin/GeminiGradioApp

我修改了源代码中GOOGLE_API_KEY获取方式并加了登陆认证,还做了一点中文翻译

代码如下:

import time
from typing import List, Tuple, Optional

import google.generativeai as genai
import gradio as gr
from PIL import Image

print("google-generativeai:", genai.__version__)

TITLE = """

Gemini App"""
SUBTITLE = """仅做试玩,不定期下线"""
GOOGLE_API_KEY='这里填写上一步获取的api'

AVATAR_IMAGES = (
None,
"image.png"
)

def preprocess_stop_sequences(stop_sequences: str) -> Optional[List[str]]:
if not stop_sequences:
return None
return [sequence.strip() for sequence in stop_sequences.split(",")]

def user(text_prompt: str, chatbot: List[Tuple[str, str]]):
return "", chatbot + [[text_prompt, None]]

def bot(
#google_key: str,
image_prompt: Optional[Image.Image],
temperature: float,
max_output_tokens: int,
stop_sequences: str,
top_k: int,
top_p: float,
chatbot: List[Tuple[str, str]]
):

text_prompt = chatbot[-1][0]
genai.configure(api_key=GOOGLE_API_KEY)
generation_config = genai.types.GenerationConfig(
temperature=temperature,
max_output_tokens=max_output_tokens,
stop_sequences=preprocess_stop_sequences(stop_sequences=stop_sequences),
top_k=top_k,
top_p=top_p)

if image_prompt is None:
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content(
text_prompt,
stream=True,
generation_config=generation_config)
response.resolve()
else:
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(
[text_prompt, image_prompt],
stream=True,
generation_config=generation_config)
response.resolve()

# streaming effect
chatbot[-1][1] = ""
for chunk in response:
for i in range(0, len(chunk.text), 10):
section = chunk.text[i:i + 10]
chatbot[-1][1] += section
time.sleep(0.01)
yield chatbot

image_prompt_component = gr.Image(type="pil", label="Image", scale=1)
chatbot_component = gr.Chatbot(
label='Gemini',
bubble_full_width=False,
avatar_images=AVATAR_IMAGES,
scale=2
)
text_prompt_component = gr.Textbox(
placeholder="你好!",
label="请在这里提问···"
)
run_button_component = gr.Button()
temperature_component = gr.Slider(
minimum=0,
maximum=1.0,
value=0.4,
step=0.05,
label="Temperature",
info=(
"Temperature 控制令牌选择的随机程度 "
"较低的Temperature适用于期望获得真实或正确回答的提示, "
"而较高的Temperature可以导致更多样化或意外的结果 "
))
max_output_tokens_component = gr.Slider(
minimum=1,
maximum=2048,
value=1024,
step=1,
label="Token limit",
info=(
"Token 限制确定每个提示可以获得的最大文本输出量 "
"每个 Token 大约为四个字符,默认值为 2048 "
))

stop_sequences_component = gr.Textbox(
label="Add stop sequence",
value="",
type="text",
placeholder="STOP, END",
info=(
"停止序列是一系列字符(包括空格),如果模型遇到它,会停止生成响应"
"该序列不作为响应的一部分,"
"可以添加多达5个停止序列"
))
top_k_component = gr.Slider(
minimum=1,
maximum=40,
value=32,
step=1,
label="Top-K",
info=(
"Top-k 改变了模型为输出选择 token 的方式 "
"Top-k 为 1 意味着所选 token 在模型词汇表中所有 token 中是最可能的(也称为贪心解码)"
"而 top-k 为 3 意味着下一个 token 从最可能的 3 个 token 中选取(使用temperature)"
))
top_p_component = gr.Slider(
minimum=0,
maximum=1,
value=1,
step=0.01,
label="Top-P",
info=(
"Top-p 改变了模型为输出选择 token 的方式 "
"token 从最可能到最不可能选择,直到它们的概率之和等于 top-p 值 "
"如果 token A、B 和 C 的概率分别为 0.3、0.2 和 0.1,top-p 值为 0.5 "
"那么模型将选择 A 或 B 作为下一个 token(使用temperature) "
))

user_inputs = [
text_prompt_component,
chatbot_component
]

bot_inputs = [
image_prompt_component,
temperature_component,
max_output_tokens_component,
stop_sequences_component,
top_k_component,
top_p_component,
chatbot_component
]

with gr.Blocks() as demo:
gr.HTML(TITLE)
gr.HTML(SUBTITLE)
with gr.Column():
with gr.Row():
image_prompt_component.render()
chatbot_component.render()
text_prompt_component.render()
run_button_component.render()
with gr.Accordion("Parameters", open=False):
temperature_component.render()
max_output_tokens_component.render()
stop_sequences_component.render()
with gr.Accordion("Advanced", open=False):
top_k_component.render()
top_p_component.render()

run_button_component.click(
fn=user,
inputs=user_inputs,
outputs=[text_prompt_component, chatbot_component],
queue=False
).then(
fn=bot, inputs=bot_inputs, outputs=[chatbot_component],
)

text_prompt_component.submit(
fn=user,
inputs=user_inputs,
outputs=[text_prompt_component, chatbot_component],
queue=False
).then(
fn=bot, inputs=bot_inputs, outputs=[chatbot_component],
)

demo.queue(max_size=99).launch(auth=("用户名", "密码"),debug=True)

部署到服务器涉及Nginx配置,域名注册、域名解析等等,蛮麻烦的,这里就不展开了。

如有收获,宝子们可否给个三连:点赞、在看、转发!爱你呦❤️






特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
哥伦比亚大学学生示威者拒离场,校方宣布停学处分。

哥伦比亚大学学生示威者拒离场,校方宣布停学处分。

侦姐有料
2024-04-30 09:53:36
服兵役不是就两年吗?韩国欧巴这么怕服兵役?网友回答太真实

服兵役不是就两年吗?韩国欧巴这么怕服兵役?网友回答太真实

文雅笔墨
2024-05-02 17:16:22
“苦命”的浙江人!住1400万的别墅有退休金却干工资2800的保洁!

“苦命”的浙江人!住1400万的别墅有退休金却干工资2800的保洁!

灵感封印
2024-05-03 12:06:12
香港第一风水师陈朗,因助人改命受天谴,李嘉诚花费千万为他续命

香港第一风水师陈朗,因助人改命受天谴,李嘉诚花费千万为他续命

郁郁乎文
2024-04-28 16:03:28
提灯定损房东的房子又亮灯了!他的狠话起作用了:重要人物也违建

提灯定损房东的房子又亮灯了!他的狠话起作用了:重要人物也违建

大风文字
2024-05-02 10:41:10
援助到位,乌克兰解放克里米亚战争已经打响

援助到位,乌克兰解放克里米亚战争已经打响

清哲木观察
2024-05-02 15:23:10
1997年,中国银行内部审计查账,发现周总理30年前存入1.2万英镑

1997年,中国银行内部审计查账,发现周总理30年前存入1.2万英镑

回京历史梦
2024-04-23 11:21:27
局势失控!格鲁吉亚议员撤离议会大厦,亲俄部队绑架反对派领导人

局势失控!格鲁吉亚议员撤离议会大厦,亲俄部队绑架反对派领导人

娱宙观
2024-05-02 11:29:33
房价即将暴涨!41个城市停止供地,新一轮去库存开始?

房价即将暴涨!41个城市停止供地,新一轮去库存开始?

云姐闲聊
2024-05-03 08:01:51
1982年,13位副总理被邓小平拿掉了11位,留下的那两人分别是谁?

1982年,13位副总理被邓小平拿掉了11位,留下的那两人分别是谁?

李姐历史
2024-05-03 08:58:45
夏洛特公主生日照又被质疑ai合成,全身都是旧衣服,面相彻底变了

夏洛特公主生日照又被质疑ai合成,全身都是旧衣服,面相彻底变了

萌神木木
2024-05-02 21:20:22
日媒:日本成为中国游客五一长假最受欢迎旅游目的地,北京飞往东京的航班已经连续数天爆满……

日媒:日本成为中国游客五一长假最受欢迎旅游目的地,北京飞往东京的航班已经连续数天爆满……

日本物语
2024-05-01 20:34:05
男单TOP10不同命!安赛龙翻车,印尼1哥逆转,中国名将拒绝3连败

男单TOP10不同命!安赛龙翻车,印尼1哥逆转,中国名将拒绝3连败

刘姚尧的文字城堡
2024-05-03 19:11:43
俄罗斯为什么那么擅长打烂仗?

俄罗斯为什么那么擅长打烂仗?

凭阑听史
2024-05-02 18:57:28
31岁大龄剩女在家洗碗,爸爸看着发愁:白瞎这么漂亮,怎么没人追

31岁大龄剩女在家洗碗,爸爸看着发愁:白瞎这么漂亮,怎么没人追

三叶秋文局
2024-03-23 16:51:50
越南政坛震动不断,第四号人物王廷惠被正式解除全部职务

越南政坛震动不断,第四号人物王廷惠被正式解除全部职务

缅甸中文网
2024-05-03 19:01:29
奥运男足16强诞生15席!伊拉克跟阿根廷同组,中国携韩国伊朗缺席

奥运男足16强诞生15席!伊拉克跟阿根廷同组,中国携韩国伊朗缺席

侃球熊弟
2024-05-03 02:58:00
惊喜!威廉王储终于公布夏洛特新照,细节不容忽视,暗含凯特近况

惊喜!威廉王储终于公布夏洛特新照,细节不容忽视,暗含凯特近况

思维火花
2024-05-03 10:11:50
最新预警:太阳爆发强耀斑!上海明天天气转折:降温+降雨,节后还有雨

最新预警:太阳爆发强耀斑!上海明天天气转折:降温+降雨,节后还有雨

上观新闻
2024-05-03 14:39:44
“真是不得了!” 台湾舆论热议福建舰首次海试

“真是不得了!” 台湾舆论热议福建舰首次海试

环球网资讯
2024-05-03 07:45:14
2024-05-03 20:08:49
机器学习与Python社区
机器学习与Python社区
机器学习算法与Python
2402文章数 10245关注度
往期回顾 全部

科技要闻

人类首次!去月背取样,中国人再进一步

头条要闻

车主称问界新M7夜间高速行车时大灯瞬间熄灭 客服回应

头条要闻

车主称问界新M7夜间高速行车时大灯瞬间熄灭 客服回应

体育要闻

没有詹杜库的季后赛次轮

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

远超想象?"股神"巴菲特的AI投资布局

汽车要闻

北京车展上的概念车,AI如何点评?小米SUV发布?

态度原创

房产
艺术
手机
本地
亲子

房产要闻

单价2万内,装标4200+,主城改善大盘无套路硬刚!

艺术要闻

造科幻之物于园林 “天工开悟——夏航雕塑展”于南池子美术馆呈现

手机要闻

消息称骁龙 8 Gen 4 首发机型暂定 10 月中旬发布

本地新闻

食味印象 | 潍坊:碳水脑袋的人间乐园

亲子要闻

一个喇叭能玩半天 小孩子的幽默相当幽默~

无障碍浏览 进入关怀版