yym68686 commited on
Commit
36613ef
·
1 Parent(s): 8e650e8

update README

Browse files
Files changed (2) hide show
  1. README.md +81 -7
  2. main.py +1 -1
README.md CHANGED
@@ -1,10 +1,70 @@
1
  # uni-api
2
 
3
- ```bash
4
- curl -X POST http://127.0.0.1:8000/v1/chat/completions \
5
- -H "Content-Type: application/json" \
6
- -H "Authorization: Bearer sk-KjjI60Yf0JFcsvgRmXqFwgGmWUd9GZnmi3KlvowmRWpWpQRo" \
7
- -d '{"model": "gpt-4o","messages": [{"role": "user", "content": "Hello"}],"stream": true}'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  ```
9
 
10
  ## Docker Local Deployment
@@ -21,7 +81,6 @@ yym68686/uni-api:latest
21
  Or if you want to use Docker Compose, here is a docker-compose.yml example:
22
 
23
  ```yaml
24
- version: "3.8"
25
  services:
26
  uni-api:
27
  container_name: uni-api
@@ -60,4 +119,19 @@ docker run --user root -p 8001:8000 -dit --name uni-api \
60
  -e USE_ROUND_ROBIN=True \
61
  yym68686/uni-api:latest
62
  docker logs -f uni-api
63
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # uni-api
2
 
3
+ <p align="center">
4
+ <a href="https://t.me/uni_api">
5
+ <img src="https://img.shields.io/badge/Join Telegram Group-blue?&logo=telegram">
6
+ </a>
7
+ <a href="https://hub.docker.com/repository/docker/yym68686/uni-api">
8
+ <img src="https://img.shields.io/docker/pulls/yym68686/uni-api?color=blue" alt="docker pull">
9
+ </a>
10
+ </p>
11
+
12
+
13
+ ## Introduction
14
+
15
+ 这是一个统一管理大模型API的项目,可以通过一个统一的API接口调用多个后端服务,统一转换为 OpenAI 格式,支持负载均衡。目前支持的后端服务有:OpenAI、Anthropic、DeepBricks、OpenRouter、Gemini等。
16
+
17
+ ## Features
18
+
19
+ - 统一管理多个后端服务
20
+ - 支持负载均衡
21
+ - 支持多个模型
22
+ - 支持多个API Key
23
+
24
+ ## Configuration
25
+
26
+ 使用api.yaml配置文件,可以配置多个模型,每个模型可以配置多个后端服务,支持负载均衡。下面是 api.yaml 配置文件的示例:
27
+
28
+ ```yaml
29
+ providers:
30
+ - provider: provider_name # 服务提供商名称, 如 openai、anthropic、gemini、openrouter、deepbricks,随便取名字,必填
31
+ base_url: https://api.your.com/v1/chat/completions # 后端服务的API地址,必填
32
+ api: sk-YgS6GTi0b4bEabc4C # 提供商的API Key,必填
33
+ model:
34
+ - gpt-4o # 可以使用的模型名称,必填
35
+ - claude-3-5-sonnet-20240620: claude-3-5-sonnet # 重命名模型,claude-3-5-sonnet-20240620 是服务商的模型名称,claude-3-5-sonnet 是重命名后的名字,可以使用简洁的名字代替原来复杂的名称,选填
36
+ tools: true # 是否支持工具,如生成代码、生成文档等,选填
37
+ url: https://openai.com/ # 服务商的网址,选填
38
+
39
+ - provider: anthropic
40
+ base_url: https://api.anthropic.com/v1/messages
41
+ api: sk-ant-api03-bNnAOJyA-xQw_twAA
42
+ model:
43
+ - claude-3-5-sonnet-20240620: claude-3-5-sonnet # 重命名模型,claude-3-5-sonnet-20240620 是服务商的模型名称,claude-3-5-sonnet 是重命名后的名字,可以使用简洁的名字代替原来复杂的名称,选填
44
+ tools: true
45
+
46
+ - provider: gemini
47
+ base_url: https://generativelanguage.googleapis.com/v1/models/{model}:{stream}?key={api_key} # base_url 支持变量替换,{model} 会被替换为模型名称,{stream} 会被替换为 stream 参数,{api_key} 会被替换为 api_key 参数, 仅供 Gemini 模型使用,必填
48
+ api: AIzaSyAN2k6IRdgw
49
+ model:
50
+ - gemini-1.5-pro
51
+ - gemini-1.5-flash
52
+ tools: false
53
+
54
+ api_keys:
55
+ - api: sk-KjjI60Yf0JFWtfgRmXqFWyGtWUd9GZnmi3KlvowmRWpWpQRo # API Key,用户使用本服务需要 API key,必填
56
+ model: # 该 API Key 可以使用的模型,必填
57
+ - gpt-4o # 可以使用的模型名称,可以使用所有提供商提供的 gpt-4o 模型
58
+ - claude-3-5-sonnet # 可以使用的模型名称,可以使用所有提供商提供的 claude-3-5-sonnet 模型
59
+ - gemini/* # 可以使用的模型名称,仅可以使用名为 gemini 提供商提供的所有模型,其中 gemini 是 provider 名称,* 代表所有模型
60
+ role: admin
61
+
62
+ - api: sk-pkhf60Yf0JGyJygRmXqFQyTgWUd9GZnmi3KlvowmRWpWqrhy
63
+ model:
64
+ - anthropic/claude-3-5-sonnet # 可以使用的模型名称,仅可以使用名为 anthropic 提供商提供的 claude-3-5-sonnet 模型。其他提供商的 claude-3-5-sonnet 模型不可以使用。
65
+
66
+ preferences:
67
+ USE_ROUND_ROBIN: true # 是否使用轮询负载均衡,true 为使用,false 为不使用,默认为 true
68
  ```
69
 
70
  ## Docker Local Deployment
 
81
  Or if you want to use Docker Compose, here is a docker-compose.yml example:
82
 
83
  ```yaml
 
84
  services:
85
  uni-api:
86
  container_name: uni-api
 
119
  -e USE_ROUND_ROBIN=True \
120
  yym68686/uni-api:latest
121
  docker logs -f uni-api
122
+ ```
123
+
124
+ RESTful curl test
125
+
126
+ ```bash
127
+ curl -X POST http://127.0.0.1:8000/v1/chat/completions \
128
+ -H "Content-Type: application/json" \
129
+ -H "Authorization: Bearer ${API}" \
130
+ -d '{"model": "gpt-4o","messages": [{"role": "user", "content": "Hello"}],"stream": true}'
131
+ ```
132
+
133
+ ## Star History
134
+
135
+ <a href="https://github.com/yym68686/uni-api/stargazers">
136
+ <img width="500" alt="Star History Chart" src="https://api.star-history.com/svg?repos=yym68686/uni-api&type=Date">
137
+ </a>
main.py CHANGED
@@ -124,7 +124,7 @@ class ModelRequestHandler:
124
  raise HTTPException(status_code=404, detail="No matching model found")
125
 
126
  # 检查是否启用轮询
127
- use_round_robin = os.environ.get('USE_ROUND_ROBIN', 'false').lower() == 'true'
128
 
129
  return await self.try_all_providers(request, matching_providers, use_round_robin)
130
 
 
124
  raise HTTPException(status_code=404, detail="No matching model found")
125
 
126
  # 检查是否启用轮询
127
+ use_round_robin = config["preferences"].get("USE_ROUND_ROBIN")
128
 
129
  return await self.try_all_providers(request, matching_providers, use_round_robin)
130