Skip to content

Commit 4f47162

Browse files
committed
feat: first push
1 parent 1dd5790 commit 4f47162

16 files changed

+2531
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,6 @@ dist
128128
.yarn/build-state.yml
129129
.yarn/install-state.gz
130130
.pnp.*
131+
132+
# local config file
133+
genai.config.json

README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,67 @@
11
# generative-ai-openai-api-server
22
converts Gemini API to OpenAI API format.
3+
4+
# release
5+
WIP
6+
7+
# Why dont using `/v1beta/openai/`?
8+
首先,其实 google 提供了兼容 open api 的接口,其实简单使用的话,完全可以用 `/v1beta/openai/` 即可。
9+
但是, `/v1beta/openai/` 有几个问题:
10+
1. 很多接口不支持,包括 `/v1/models`
11+
2. 很多参数不支持,包括 `"frequency_penalty", "presence_penalty", "stop"`,并且,不支持的时候是报错,而不是忽略它...
12+
3. 缺少 gemini api 的高级功能设定,比如 `上下文缓存` `安全设置`
13+
14+
所以,我开发这个简单的服务用来处理这些问题。
15+
16+
# usage
17+
18+
0. 下载 release bin 文件
19+
1. 修改创建配置文件 (genai.config.json)
20+
2. 运行,即可 默认端口为 4949
21+
22+
## configure
23+
本系统使用json配置文件,配置一个简单的json即可,下面是一个示例
24+
```json
25+
{
26+
"api_key": "sk-xxx",
27+
"server": {
28+
"port": 4949
29+
}
30+
}
31+
```
32+
33+
完整可配置参数如下:
34+
```ts
35+
type Params = {
36+
api_key: string;
37+
server?: {
38+
port?: number;
39+
};
40+
no_docs?: boolean;
41+
retry?: {
42+
enabled?: boolean;
43+
retries?: number;
44+
factor?: number;
45+
minTimeout?: number;
46+
maxTimeout?: number;
47+
};
48+
debug?: {
49+
stream?: {
50+
log?: boolean;
51+
};
52+
};
53+
}
54+
```
55+
56+
# support endpoints
57+
58+
- `/v1/models`: 获取模型列表
59+
- `/v1/embeddings`: 文本向量化
60+
- `/v1/chat/completions`: chat文本补全
61+
- ~~`/v1/completions`~~ (难以支持,因为 gemini 系列模型都不支持 completion)
62+
63+
# How to build?
64+
WIP
65+
66+
# LICENSE
67+
MIT

example.genai.config.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"api_key": "sk-xxx",
3+
"server": {
4+
"port": 4949
5+
}
6+
}

package.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"scripts": {
3+
"dev": "tsx src/main.ts"
4+
},
5+
"dependencies": {
6+
"@fastify/cors": "^10.0.1",
7+
"@fastify/swagger": "^9.4.0",
8+
"@fastify/swagger-ui": "^5.1.0",
9+
"@google/generative-ai": "^0.21.0",
10+
"@types/node": "^22.10.1",
11+
"async-retry": "^1.3.3",
12+
"commander": "^12.1.0",
13+
"dotenv": "^16.4.5",
14+
"fastify": "^5.1.0",
15+
"fastify-type-provider-zod": "^4.0.2",
16+
"file-type": "^19.6.0",
17+
"file-type-cjs": "^1.0.7",
18+
"node-fetch": "^3.3.2",
19+
"proxy-agent": "^6.4.0",
20+
"tslib": "^2.8.1",
21+
"tsx": "^4.19.2",
22+
"typescript": "^5.7.2",
23+
"undici": "^7.0.0",
24+
"zod": "^3.23.8"
25+
}
26+
}

0 commit comments

Comments
 (0)