有没有做外贸的网站啊,濮阳网络电视台,北京赛车网站建设,开发者选项在哪里关闭先看效果#xff1a; 简介
Gemini 是谷歌研发的最新一代大语言模型#xff0c;目前有三个版本#xff0c;被称为中杯、大杯、超大杯#xff0c;Gemini Ultra 号称可与GPT-4一较高低#xff1a;
Gemini Nano(预览访问) 为设备端体验而构建的最高效模型,支持离线使用场景。…先看效果 简介
Gemini 是谷歌研发的最新一代大语言模型目前有三个版本被称为中杯、大杯、超大杯Gemini Ultra 号称可与GPT-4一较高低
Gemini Nano(预览访问) 为设备端体验而构建的最高效模型,支持离线使用场景。Gemini Pro已推出 性能最佳的模型,具有各种文本和图像推理任务的功能。Gemini Ultra预览访问 将于2024年初推出用于大规模高度复杂文本和图像推理任务的最强大模型。
Gemini Pro在八项基准测试中的六项上超越了GPT-3.5被誉为“市场上最强大的免费聊天AI工具”。
本文我们使用的是 Gemini ProPro有两个模型
gemini-pro:针对仅文本提示进行了优化。gemini-pro-vision:针对文本和图像提示进行了优化。
API 免费
Google这次确实给力API直接免费开放只要申请就给
如何本地执行脚本 或 开发一个前端页面顺利白嫖Google的Gemini呢
先去 https://ai.google.dev/ 创建Gemini API key 顺便说一句感兴趣可以去深入学习一下文档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_keyGOOGLE_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_keyGOOGLE_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, Optionalimport google.generativeai as genai
import gradio as gr
from PIL import Imageprint(google-generativeai:, genai.__version__)TITLE h1 aligncenterGemini App/h1
SUBTITLE h2 aligncenter仅做试玩不定期下线/h2
GOOGLE_API_KEY这里填写上一步获取的apiAVATAR_IMAGES (None,image.png
)def preprocess_stop_sequences(stop_sequences: str) - Optional[List[str]]:if not stop_sequences:return Nonereturn [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_keyGOOGLE_API_KEY)generation_config genai.types.GenerationConfig(temperaturetemperature,max_output_tokensmax_output_tokens,stop_sequencespreprocess_stop_sequences(stop_sequencesstop_sequences),top_ktop_k,top_ptop_p)if image_prompt is None:model genai.GenerativeModel(gemini-pro)response model.generate_content(text_prompt,streamTrue,generation_configgeneration_config)response.resolve()else:model genai.GenerativeModel(gemini-pro-vision)response model.generate_content([text_prompt, image_prompt],streamTrue,generation_configgeneration_config)response.resolve()# streaming effectchatbot[-1][1] for chunk in response:for i in range(0, len(chunk.text), 10):section chunk.text[i:i 10]chatbot[-1][1] sectiontime.sleep(0.01)yield chatbotimage_prompt_component gr.Image(typepil, labelImage, scale1)
chatbot_component gr.Chatbot(labelGemini,bubble_full_widthFalse,avatar_imagesAVATAR_IMAGES,scale2
)
text_prompt_component gr.Textbox(placeholder你好,label请在这里提问···
)
run_button_component gr.Button()
temperature_component gr.Slider(minimum0,maximum1.0,value0.4,step0.05,labelTemperature,info(Temperature 控制令牌选择的随机程度 较低的Temperature适用于期望获得真实或正确回答的提示, 而较高的Temperature可以导致更多样化或意外的结果 ))
max_output_tokens_component gr.Slider(minimum1,maximum2048,value1024,step1,labelToken limit,info(Token 限制确定每个提示可以获得的最大文本输出量 每个 Token 大约为四个字符默认值为 2048 ))stop_sequences_component gr.Textbox(labelAdd stop sequence,value,typetext,placeholderSTOP, END,info(停止序列是一系列字符(包括空格),如果模型遇到它,会停止生成响应该序列不作为响应的一部分可以添加多达5个停止序列))
top_k_component gr.Slider(minimum1,maximum40,value32,step1,labelTop-K,info(Top-k 改变了模型为输出选择 token 的方式 Top-k 为 1 意味着所选 token 在模型词汇表中所有 token 中是最可能的(也称为贪心解码)而 top-k 为 3 意味着下一个 token 从最可能的 3 个 token 中选取(使用temperature)))
top_p_component gr.Slider(minimum0,maximum1,value1,step0.01,labelTop-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, openFalse):temperature_component.render()max_output_tokens_component.render()stop_sequences_component.render()with gr.Accordion(Advanced, openFalse):top_k_component.render()top_p_component.render()run_button_component.click(fnuser,inputsuser_inputs,outputs[text_prompt_component, chatbot_component],queueFalse).then(fnbot, inputsbot_inputs, outputs[chatbot_component],)text_prompt_component.submit(fnuser,inputsuser_inputs,outputs[text_prompt_component, chatbot_component],queueFalse).then(fnbot, inputsbot_inputs, outputs[chatbot_component],)demo.queue(max_size99).launch(auth(用户名, 密码),debugTrue)部署到服务器涉及Nginx配置域名注册、域名解析等等蛮麻烦的这里就不展开了。