93 lines
2.7 KiB
Python
93 lines
2.7 KiB
Python
import requests
|
|
|
|
|
|
class OneAPIManager:
|
|
def __init__(self, url, access_token):
|
|
self.base_url = url
|
|
self.access_token = access_token
|
|
self.headers = {
|
|
"Content-Type": "application/json",
|
|
"Authorization": self.access_token,
|
|
}
|
|
|
|
def get_channel(self, id):
|
|
url = self.base_url + f"/api/channel/{id}"
|
|
|
|
response = requests.get(url, headers=self.headers)
|
|
return response
|
|
|
|
def get_channels(self, page, pagesize):
|
|
url = self.base_url + f"/api/channel/?p={page}&page_size={pagesize}"
|
|
|
|
response = requests.get(url, headers=self.headers)
|
|
return response
|
|
|
|
# Support multiple keys separated by '\n'
|
|
def add_channel(self, name, base_url, key, models, rate_limit_count=0):
|
|
url = self.base_url + "/api/channel"
|
|
|
|
data = {
|
|
"name": name,
|
|
"type": 1,
|
|
"key": key,
|
|
"openai_organization": "",
|
|
"base_url": base_url,
|
|
"other": "",
|
|
"model_mapping": "",
|
|
"status_code_mapping": "",
|
|
"headers": "",
|
|
"models": ",".join(models),
|
|
"auto_ban": 0,
|
|
"is_image_url_enabled": 0,
|
|
"model_test": models[0],
|
|
"tested_time": 0,
|
|
"priority": 0,
|
|
"weight": 0,
|
|
"groups": ["default"],
|
|
"proxy_url": "",
|
|
"region": "",
|
|
"sk": "",
|
|
"ak": "",
|
|
"project_id": "",
|
|
"client_id": "",
|
|
"client_secret": "",
|
|
"refresh_token": "",
|
|
"gcp_account": "",
|
|
"rate_limit_count": rate_limit_count,
|
|
"gemini_model": "",
|
|
"tags": "",
|
|
"rate_limited": rate_limit_count > 0,
|
|
"is_tools": False,
|
|
"claude_original_request": False,
|
|
"group": "default",
|
|
}
|
|
|
|
response = requests.post(url, json=data, headers=self.headers)
|
|
return response
|
|
|
|
def delete_channel(self, id):
|
|
url = self.base_url + f"/api/channel/{id}"
|
|
|
|
response = requests.delete(url, headers=self.headers)
|
|
return response
|
|
|
|
def enable_channel(self, id):
|
|
url = self.base_url + "/api/channel"
|
|
data = {"id": id, "status": 1}
|
|
|
|
response = requests.put(url, json=data, headers=self.headers)
|
|
return response
|
|
|
|
def disable_channel(self, id):
|
|
url = self.base_url + "/api/channel"
|
|
data = {"id": id, "status": 2}
|
|
|
|
response = requests.put(url, json=data, headers=self.headers)
|
|
return response
|
|
|
|
def test_channel(self, id, model=""):
|
|
url = self.base_url + f"/api/channel/test/{id}?model={model}"
|
|
|
|
response = requests.get(url, headers=self.headers)
|
|
return response
|