update README
Browse files
README.md
CHANGED
|
@@ -1 +1,8 @@
|
|
| 1 |
# uni-api
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
```
|
main.py
CHANGED
|
@@ -142,21 +142,18 @@ class ModelRequestHandler:
|
|
| 142 |
# 检查是否启用轮询
|
| 143 |
use_round_robin = os.environ.get('USE_ROUND_ROBIN', 'false').lower() == 'true'
|
| 144 |
|
| 145 |
-
|
| 146 |
-
return await self.round_robin_request(request, matching_providers)
|
| 147 |
-
else:
|
| 148 |
-
# 使用第一个匹配的提供者
|
| 149 |
-
provider = matching_providers[0]
|
| 150 |
-
try:
|
| 151 |
-
return await process_request(request, provider)
|
| 152 |
-
except Exception as e:
|
| 153 |
-
raise HTTPException(status_code=500, detail=f"Error calling API: {str(e)}")
|
| 154 |
|
| 155 |
-
async def
|
| 156 |
num_providers = len(providers)
|
|
|
|
|
|
|
| 157 |
for i in range(num_providers):
|
| 158 |
-
|
| 159 |
-
|
|
|
|
|
|
|
|
|
|
| 160 |
provider = providers[self.last_provider_index]
|
| 161 |
try:
|
| 162 |
response = await process_request(request, provider)
|
|
@@ -164,6 +161,7 @@ class ModelRequestHandler:
|
|
| 164 |
except Exception as e:
|
| 165 |
print(f"Error with provider {provider['provider']}: {str(e)}")
|
| 166 |
continue
|
|
|
|
| 167 |
raise HTTPException(status_code=500, detail="All providers failed")
|
| 168 |
|
| 169 |
model_handler = ModelRequestHandler()
|
|
|
|
| 142 |
# 检查是否启用轮询
|
| 143 |
use_round_robin = os.environ.get('USE_ROUND_ROBIN', 'false').lower() == 'true'
|
| 144 |
|
| 145 |
+
return await self.try_all_providers(request, matching_providers, use_round_robin)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
|
| 147 |
+
async def try_all_providers(self, request: RequestModel, providers: List[Dict], use_round_robin: bool):
|
| 148 |
num_providers = len(providers)
|
| 149 |
+
start_index = self.last_provider_index if use_round_robin else 0
|
| 150 |
+
|
| 151 |
for i in range(num_providers):
|
| 152 |
+
if use_round_robin:
|
| 153 |
+
self.last_provider_index = (start_index + i) % num_providers
|
| 154 |
+
else:
|
| 155 |
+
self.last_provider_index = i
|
| 156 |
+
|
| 157 |
provider = providers[self.last_provider_index]
|
| 158 |
try:
|
| 159 |
response = await process_request(request, provider)
|
|
|
|
| 161 |
except Exception as e:
|
| 162 |
print(f"Error with provider {provider['provider']}: {str(e)}")
|
| 163 |
continue
|
| 164 |
+
|
| 165 |
raise HTTPException(status_code=500, detail="All providers failed")
|
| 166 |
|
| 167 |
model_handler = ModelRequestHandler()
|