在国内低成本无障碍使用 Gemini Pro
Google 的 Gemini Pro 有着超越 GPT-3.5 的性能表现, 最重要的是还免费, 尽管有每分钟60次的请求频率限制, 但对于大部人来说日常使用是完全足够了。
由于 Google 并未向中国开放该服务, 加上 Google 也是被我国认证的企业, 所以 Gemini Pro 是无法直连使用的。 如果要使用就需要使用请问中转服务, 一个稳定的中转服务器都不便宜, 普通的一年也需要几百块钱。
除了购买梯子或服务器自建,其实还有另外一种更经济的方法,那就是用各大云服务商提供的云函数。云函数是一种无需管理服务器即可运行代码的计算服务, 你只需要上传你的代码, 云函数就会帮你运行, 你只需要按照运行的时间和内存使用量付费。 价格很便宜, 那腾讯云来说一年100万次调用才 40 块钱, 现在还免费送 3 个月。
利用腾讯云云函数访问 Gemini Pro
-
首先你需要一个腾讯云账号,没有的话先注册一个;
-
依次点击【新建】->【从头开始】,然后按照以下配置创建一个云函数
- 函数类型: Web函数
- 函数名称: gemini-proxy (请随意)
- 地域: 硅谷 (或美国其他区域)
- 运行环境: Nodejs 16.13 (或者更高的版本)
- 高级配置:
- 内存: 64M
- 执行超时时间: 900 秒
- 请求多并发: 2 并发
- 日志配置 -> 日志投递:不启用
- 函数代码:
- 本地上传zip包 (点我下载 ZIP 包)(感兴趣的可以看本文末尾的代码清单)
- 触发器配置(这里可能要创建一个新的触发器):
- 默认触发器
- 触发别名/版本:默认流量
- 请求方法: ANY
- 发布环境: 发布
- 鉴权方法: 免鉴权
然后点击“完成”按钮,进入【函数管理】,在【函数代码】中找到【访问路径】, 类似
https://service-43fsa347fs-423324234932.usw.tencentapigw.com/release/
这就是你的访问地址, 注意使用的时候要把最后的 /release
部分删除。
如何使用
本文假设你应该已经有了一个 Gemini Pro 的 API key, 如果没有的话可以点我获取(请科学上网)。
你现在需要的只剩一个可以适配 Gemini Pro 的客户端应用了。 这里我们推荐自家的 5ire, Mac 和 Windows 用户都可以使用,不过目前还在内测阶段,需要的话请联系我们。
效果如下
需要注意的是,由于云函数不支持流式输出,因此需要在客户端中关闭流式输出。代码清单
代码部分如下, 不感兴趣的可以忽略, 直接在这里下载
package.json
{
"name": "gemini",
"version": "1.0.0",
"description": "",
"main": "sls.js",
"scripts": {
"start": "node app.js"
},
"author": "Ironben",
"license": "MIT",
"dependencies": {
"express": "~4.16.1",
"http-proxy-middleware": "^2.0.6"
}
}
app.js
const express = require('express')
const {
createProxyMiddleware
} = require('http-proxy-middleware');
const app = express()
const port = 9000
app.use('/', createProxyMiddleware({
target: 'https://generativelanguage.googleapis.com',
changeOrigin: true,
onProxyReq: (proxyReq, req, res) => {
proxyReq.removeHeader('x-forwarded-for');
proxyReq.removeHeader('x-real-ip');
},
onProxyRes: function (proxyRes, req, res) {
proxyRes.headers['Access-Control-Allow-Origin'] = '*';
}
}));
app.listen(port, () => {
console.log(`Proxy is listening at http://localhost:${port}`)
})
serverless.yml
component: scf
name: Gemini
inputs:
src:
src: ./
exclude:
- .env
# 指定 SCF 类型为 Web 类型
type: web
name: ${name}
region: na-siliconvalley-2 # 美国东部区域
runtime: Nodejs12.16
memorySize: 512 # 内存大小,为保证性能,web 函数请配置 512 MB 及以上
events:
- apigw:
parameters:
protocols:
- http
- https
environment: release
endpoints:
- path: /
method: ANY
scf_bootstrap
#!/bin/sh
/var/lang/node12/bin/node app.js