Google AI产品Gemini的API有很多免费额度,而且兼容OpenAI API,我也开始使用了它的API了。
免费额度
从免费额度上看Google还算慷慨, gemini-1.5-flash每天1500次请求也足够个人学习使用。
| 模型名称 | 简介 | 免费层级限制 |
|---|---|---|
| gemini-1.5-flash | 速度最快的多模态模型,在各种重复性任务中表现出色,有100万的上下文窗口 | 15RPM, 1 million TPM, 1500RPD |
| gemini-1.5-flash-8b | 最小的模型,适用于对智能要求不高的场景,100万上下文窗口 | 15RPM, 1 million TPM, 1500RPD |
| gemini-1.5-pro | 下一代模型,200万上下文窗口,已经生产可用 | 2RPM, 32000TPM, 50RPD |
| gemini-1.0-pro | 第一代模型仅提供文本和图像推理,生产可用 | 15RPM, 32000TPM, 1500RPD |
| text-embedding-004 | 文本嵌入模型 | 1500RPM |
- RPM - requests per minute
- TPM - tokens per minute
- RPD requests per day
开通Gemini API
Gemini API的开通方式,是在Googlle AI Studio中申请API Key。
PS: Googlle AI Studio已经支持PWA,可以作为PWA 安装在桌面、iOS和Android设备上。
国内访问方式
Gemini API的地址是https://generativelanguage.googleapis.com,由于某些原因,国内访问直连访问。
可以通过在cloudflare的创建worker转发。
需要一个个人域名(可以使用二级域名例如gemini-api.frognew.com),将其解析到cloudflare的CDN IP。这个IP地址可以使用cf的IP优选工具选择。注意,在cf域名解析配置不要开启小黄云。
cf worker的代码:
export default {
async fetch(request, env) {
const url = new URL(request.url);
url.host = 'generativelanguage.googleapis.com';
return fetch(new Request(url, request))
}
}在cf中部署这个worker后(例如名称为gemini-api-proxy,添加个人域名到这个worker到路由,例如gemini-api.frognew.com/* -> gemini-api-proxy。
到这一步后可以根据官方API文档中的例子进行测试:
curl "https://gemini-api.frognew.com/v1beta/models/gemini-1.5-flash:generateContent?key=YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Write a story about a magic backpack."}]
}]
}'查看Gemini API支持的模型
curl https://gemini-api.frognew.com/v1beta/models?key=YOUR_API_KEY使用OpenAI API的形式访问
export OPENAI_API_KEY=YOUR_API_KEY
curl -s https://gemini-api.frognew.com/v1beta/chat/completions -H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gemini-1.5-pro",
"messages": [
{ "role": "user", "content": "25乘以25等于? 128+128呢?" }
],
"tools": [
{
"type": "function",
"function": {
"name": "add",
"description": "Add two integers.",
"parameters": {
"type": "object",
"properties": {
"a": {"type": "integer"},
"b": {"type": "integer"}
},
"required": ["a", "b"]
}
}
},
{
"type": "function",
"function": {
"name": "multiply",
"description": "Multiply two integers.",
"parameters": {
"type": "object",
"properties": {
"a": {"type": "integer"},
"b": {"type": "integer"}
},
"required": ["a", "b"]
}
}
}
]
}'使用场景
- 个人学习
- 配合vscode+cline进行AI辅助编程
- 沉浸式翻译