【Google Gemini极简教程】使用Flask和Gemini API构建一个AI BaaS
ccwgpt 2025-06-13 11:48 5 浏览 0 评论
BaaS(Backend as a Service,后端即服务)
BaaS 是一种云服务模型,它为开发者提供了一种便捷的方式来构建和管理应用程序的后端服务。BaaS 提供了一系列的后端功能,如数据库管理、用户认证、文件存储、推送通知等,而开发者无需从头开始编写这些功能的代码。通过使用 BaaS,开发者可以专注于前端开发和业务逻辑,从而加快应用程序的开发速度。
Flask
Flask是一个基于Python的开源web框架,它使用WSGI协议,并支持多种模板引擎,并且支持RESTful API开发,使用起来非常方便,Java程序员可以把Flask当成Python版本的SpringBoot。
Google Gemini
Google Gemini支持免费试用,如果请求频率不高,没有问题(我本地测试过)。并且Gemini支持多模态模型,可以实现文生图和图像识别,以及音频,视频处理。
使用的时候可以在Colab中运行(Colab中运行可以免费使用Gemini,但是经过我自己本地运行测试,也可以免费使用,只要访问频率不高应该都没问题),下面讲下怎么在本地运行实现。
实现步骤
1.先安装依赖包:包括Flask和Gemini的
pip install -U -q 'google-genai'
pip install Flask
pip install flask-cors
2.申请gemini key:
https://aistudio.google.com/app/apikey
右上角创建API密钥即可。
3.最简单的代码:先写一个最简单的例子,只涉及到gemini的调用,直接对话,使用的时候把api key填写上自己申请的。
from google import genai
from google.genai import types
client = genai.Client(api_key="换成自己的key")
#可以更换别的gemini系列模型
model = 'gemini-2.0-flash'
# model = 'gemini-2.0-flash-lite'
# model = 'gemini-2.5-pro-exp-03-25'
response = client.models.generate_content(
model=model,
contents='你是谁'
)
print(response.text) #一次性回答
4.流式回答:一个字一个字回答,回答较多时用这种方式比较好,同样记得换key
from google import genai
client = genai.Client(api_key="xxxxxxxxxxxx")
for chunk in client.models.generate_content_stream(
model='gemini-2.0-flash-lite',
contents="你是谁"
):
print(chunk.text)
有了基础的demo,就可以套用Flask做一个基于AI的BaaS了。
5.用Flask做一个post的接口,然后在接口里把我们调用gemini的代码拷贝进去,基本就行了。先看直接对话的,在接口测试工具比如postman里测试一下。日志输出和返回都正常。
完整代码:
from flask import Flask, jsonify, request
from google import genai
from google.genai import types
app = Flask(__name__)
client = genai.Client(api_key="xxxxxxxxxxxxxx")
# model = 'gemini-2.0-flash'
model = 'gemini-2.0-flash-lite'
# model = 'gemini-2.5-pro-exp-03-25'
@app.route('/query', methods=['POST'])
def query():
data = request.get_json()
prompt = data.get('prompt')
print(prompt)
response = client.models.generate_content(
model=model,
contents=prompt
)
result = response.text
print(result)
return jsonify({'result': result}), 200
if __name__ == '__main__':
app.run(debug=True)
请求的url就是 localhost:5000/query 方法是 post
注意这只是一个极简示例,实际使用key不要写在代码里。我这里query接口参数是用json格式传的,可以根据自己的情况换成其他方式,比如form表单提交参数或者get传参等。使用的时候gemini有很多模型,可以指定用哪个模型。
6.再看一个页面请求流式对话的,实际使用过中这种场景比较多见。在AI回答内容比较多的时候如果不使用流式响应,客户端可能因为等待超时而不能显示完整答案,因此需要使用流式响应,即每次只返回一部分答案,然后客户端可以实时显示,这样用户体验会更好。
看效果,分别在接口测试工具和html页面上发起请求。后台Flask接口改为支持stream响应。因为是本地的html页面,所以要开启flask的跨域支持。这次把接口改为get传参。
完整python和html代码:
from flask import Flask, jsonify, request,Response
from flask_cors import CORS # 导入 CORS 模块
from google import genai
from google.genai import types
app = Flask(__name__)
# 更严格的 CORS 配置(允许 POST 和 SSE)
CORS(app, resources={
r"/streamquery": {
"origins": "*", # 允许所有域名(生产环境应替换为你的前端域名)
"methods": ["GET", "POST"], # 允许的 HTTP 方法
"expose_headers": ["Content-Type"] # 允许前端访问的响应头
}
})
client = genai.Client(api_key="xxxxxxx")
# model = 'gemini-2.0-flash'
model = 'gemini-2.0-flash-lite'
# model = 'gemini-2.5-pro-exp-03-25'
@app.route('/streamquery', methods=['GET'])
def query():
prompt = request.args.get('prompt', default='', type=str)
print(prompt)
# 流式生成响应
def generate():
response = client.models.generate_content_stream(
model='gemini-2.0-flash-lite',
contents=prompt)
for chunk in response:
yield f"data: {chunk.text}\n" # SSE 格式
# 返回 Server-Sent Events (SSE) 流
return Response(generate(), mimetype='text/event-stream')
if __name__ == '__main__':
app.run(debug=True)
<script>
const eventSource = new EventSource(
'http://127.0.0.1:5000/streamquery?prompt=讲个笑话');
eventSource.onmessage = (event) => {
console.log(event.data); // 实时打印流式结果
document.getElementById('output').innerHTML += event.data;
};
// 错误处理
eventSource.onerror = (err) => {
eventSource.close();
};
</script>
<div id="output"></div>
通过这2个例子,我们其实已经能够利用flask和gemini实现一个AI后台服务了。当然可以把接口换成其他语言实现,比如java或者php,原理都是一样的。
关注AI实用工具和技巧,关注后台私信免费进知识星球:
相关推荐
- 火电厂智能管控新基建:全场景人员定位系统架构解析
-
在能源生产领域,火电厂以庞大的厂区规模、复杂的作业环境和密集的人机交互著称。从高温高压的锅炉房到精密复杂的电气设备间,从露天煤场到灰渣处理区,传统管理模式下的人员定位盲区,正成为制约安全生产与高效运营...
- 安全仪表系统(SIS)全生命周期管理:从设计到运维的深度解析
-
以下是一篇关于安全仪表系统(SIS)的技术解析与实践方法,涵盖系统架构、设计标准、实施流程及行业应用。安全仪表系统(SIS)是工业过程安全的最后一道防线,通过独立于基础控制系统的硬件和逻辑,在工艺失控...
- 数字化转型架构下的数据安全治理方案
-
这份PPT文件内容围绕数字化转型架构下的数据安全治理方案展开,主要探讨了数据质量治理、安全治理、全生命周期治理以及治理考核等方面的内容。更多参考及文档获取详见公众号:优享智库数据治理概述定义与目标:数...
- 安全完整性等级(SIL)分析报告编制与认证实践方法
-
以下是一篇关于安全完整性等级(SIL)分析报告的文章,涵盖SIL定级方法、验证流程、计算模型及工程实践。安全完整性等级(SIL)是量化安全仪表系统(SIS)性能的核心指标,由IEC61508/615...
- Pokemon go下载教程 口袋妖怪Go下载解锁方法
-
#p#安卓下载#e#Pokemongo怎么下载?口袋妖怪go下载教程讲解。虽然锁区了但是大家还是有办法的,首先是口袋妖怪Go下载问题,很多口袋妖怪go的安卓玩家不知道怎么下载游戏,小编给大家详细解答...
- 抛弃Windows吧!谷歌推免费Chrome系统,一个U盘就搞定
-
在目前的个人电脑上,最主流的系统当然是Windows,不过除了Windows之外,我们也可以选择购买苹果的电脑,使用苹果的MacOS系统。不过除了苹果和微软的系统之外,实际上谷歌也有自己用于个人电脑...
- 谷歌误发ARM版Chrome安装包,致英特尔 /AMD用户无法安装
-
IT之家3月26日消息,科技媒体WindowsLatest昨日(3月25日)发布博文,报道称由于谷歌误发适用于ARM架构的安装包,导致用户从谷歌官网下载的ChromeSetu...
- 【Google Gemini极简教程】使用Flask和Gemini API构建一个AI BaaS
-
BaaS(BackendasaService,后端即服务)BaaS是一种云服务模型,它为开发者提供了一种便捷的方式来构建和管理应用程序的后端服务。BaaS提供了一系列的后端功能,如数据库管理...
- 第一资讯Windows 10 Mobile已成功安装谷歌Play Store
-
虽然微软并未正式推出WP可安装APK的功能,但近期有不少玩机爱好者已经在Windows10Mobile平台上用上了Android应用,而且随后还在需要谷歌服务框架(GoogleServices)...
- 宝可梦TCG Pocket谷歌账号登录,给你提供指南
-
《宝可梦TCGPocket》作为一款备受欢迎的卡牌对战游戏,为了给玩家提供更加便捷和安全的登录方式,支持使用谷歌账号进行登录。通过谷歌账号登录,您不仅可以快速进入游戏,还能享受账号数据同步、跨设备游...
- 秒变万能家庭服务器!斐讯N1 armbian安装指南
-
一直以来,我都想配置一台小型服务器放在家里玩一玩,但是x86架构的主机体积大功耗高,价格也不低。而树莓派的话,价格便宜一点,性能对于轻度使用也基本够用。可是树莓派仍然要两三百块钱,感觉还是有点贵。于是...
- 如何自己开发一个Google浏览器插件?
-
相信很多人都好奇,谷歌浏览器那么多的插件是如何开发的,我们如何开发一个自定义的Google浏览器插件,下面我们就来详细的给出一个开发Google浏览器插件的流程。准备环境首先需要有一个文本编辑器工具如...
- 我的世界手机版谷歌商店安装教程(我的世界谷歌下载)
-
在我的世界手机版升级到0.11.0版本后,很多玩家发现正式版需要有谷歌商店的验证也就是必须安装Googleplay才能玩。这次搞趣网小编就为大家带来我的世界手机版谷歌商店安装教程。有些手机自带Goo...
- 部落冲突安卓版谷歌怎么绑定 有无root都可以
-
部落冲突安卓版谷歌怎么绑定?下面小编为大家带来部落冲突安卓版谷歌绑定攻略详解,希望这篇攻略详解能够对大家有所帮助。首先准备这些东西(必须在网上自己下载,不要相信google应用)还需要下载"谷歌服务框...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 火电厂智能管控新基建:全场景人员定位系统架构解析
- 安全仪表系统(SIS)全生命周期管理:从设计到运维的深度解析
- 数字化转型架构下的数据安全治理方案
- 安全完整性等级(SIL)分析报告编制与认证实践方法
- 项目管理体系框架(项目的管理体系)
- Pokemon go下载教程 口袋妖怪Go下载解锁方法
- 抛弃Windows吧!谷歌推免费Chrome系统,一个U盘就搞定
- 谷歌误发ARM版Chrome安装包,致英特尔 /AMD用户无法安装
- 【Google Gemini极简教程】使用Flask和Gemini API构建一个AI BaaS
- 第一资讯Windows 10 Mobile已成功安装谷歌Play Store
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)