开始使用Gemini API
📅 2025-01-14 | 🖱️
🔖 aigc
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的代码:
1export default {
2 async fetch(request, env) {
3 const url = new URL(request.url);
4 url.host = 'generativelanguage.googleapis.com';
5 return fetch(new Request(url, request))
6 }
7}
在cf中部署这个worker后(例如名称为gemini-api-proxy
,添加个人域名到这个worker到路由,例如gemini-api.frognew.com/* -> gemini-api-proxy
。
到这一步后可以根据官方API文档中的例子进行测试:
1curl "https://gemini-api.frognew.com/v1beta/models/gemini-1.5-flash:generateContent?key=YOUR_API_KEY" \
2-H 'Content-Type: application/json' \
3-X POST \
4-d '{
5 "contents": [{
6 "parts":[{"text": "Write a story about a magic backpack."}]
7 }]
8 }'
查看Gemini API支持的模型 #
1curl https://gemini-api.frognew.com/v1beta/models?key=YOUR_API_KEY
使用OpenAI API的形式访问 #
1export OPENAI_API_KEY=YOUR_API_KEY
2
3curl -s https://gemini-api.frognew.com/v1beta/chat/completions -H "Content-Type: application/json" \
4-H "Authorization: Bearer $OPENAI_API_KEY" \
5-d '{
6 "model": "gemini-1.5-pro",
7 "messages": [
8 { "role": "user", "content": "25乘以25等于? 128+128呢?" }
9 ],
10 "tools": [
11 {
12 "type": "function",
13 "function": {
14 "name": "add",
15 "description": "Add two integers.",
16 "parameters": {
17 "type": "object",
18 "properties": {
19 "a": {"type": "integer"},
20 "b": {"type": "integer"}
21 },
22 "required": ["a", "b"]
23 }
24 }
25 },
26 {
27 "type": "function",
28 "function": {
29 "name": "multiply",
30 "description": "Multiply two integers.",
31 "parameters": {
32 "type": "object",
33 "properties": {
34 "a": {"type": "integer"},
35 "b": {"type": "integer"}
36 },
37 "required": ["a", "b"]
38 }
39 }
40 }
41 ]
42}'
使用场景 #
- 个人学习
- 配合vscode+cline进行AI辅助编程
- 沉浸式翻译