Calcium-Ion / new-api

AI模型接口管理与分发系统,支持将多种大模型转为OpenAI格式调用、支持Midjourney Proxy、Suno、Rerank,兼容易支付协议,可供个人或者企业内部管理与分发渠道使用,本项目基于One API二次开发。
https://nekoapi.com
Apache License 2.0
3.57k stars 825 forks source link

限制模型令牌的功能無法正確實現 #466

Closed 123hi123 closed 2 months ago

123hi123 commented 2 months ago

例行检查

问题描述 限制模型令牌的功能無法正確實現 复现步骤 image 對這個令牌做上限制 再open webui中使用 會得到下面的沒有限制住的結果 image 预期结果 會讓open webui得到限制過後的模型列表

Calcium-Ion commented 2 months ago

image image

测试无法复现

123hi123 commented 2 months ago

image image

测试无法复现

嗯,它會產生這樣的bug前提是你的渠道,當中要有人去提供這樣的一個模型 打個比方說你有一個渠道,有提供 claude 的模型,然後另外一個提供 gpt 的模型 然後你有一個令牌限制,只能用 gpt 的模型 這個時候,如果你用 models 去抓的話,會抓到兩個模型 可能再麻煩你試試看了

Calcium-Ion commented 2 months ago

我的渠道肯定是有claude-3-5-sonnet-20240620这个模型的

123hi123 commented 2 months ago

我的渠道肯定是有claude-3-5-sonnet-20240620这个模型的

那我下午的時候用你的方法測試一下 目前猜測是open webui 連false的模型也會抓 🤔

123hi123 commented 2 months ago

嗯,這個 bug 要產生是請求頭 models 才會發生 使用到的測試代碼如下 記得填入你自己的呃認證的 key

可能需要的認證token

headers["Authorization"] = ""


from tabulate import tabulate

# 設置API的基礎URL
base_url = "http://localhost:9090/v1"

# 設置headers
headers = {
    "Content-Type": "application/json"
}

# 可能需要的認證token
headers["Authorization"] = ""

def get_models():
    try:
        response = requests.get(f"{base_url}/models", headers=headers)
        response.raise_for_status()  # 如果請求不成功則拋出異常
        return response.json()
    except requests.RequestException as e:
        print(f"發生錯誤: {e}")
        return None

# 執行請求並處理結果
models = get_models()
if models and 'data' in models:
    # 提取所有模型的id
    model_ids = [model['id'] for model in models['data']]

    # 使用tabulate創建一個漂亮的表格
    table = tabulate([[id] for id in model_ids], headers=['Model ID'], tablefmt='fancy_grid')

    print("可用的模型:")
    print(table)
else:
    print("無法獲取模型列表或列表為空。")```
  以下截取一部分的返回結果
  裏面可以清楚的看到有一些我沒有允許通過的模型

![image](https://github.com/user-attachments/assets/a2f50e93-acfb-470a-a165-d99b4ee69065)
![image](https://github.com/user-attachments/assets/20b32b0b-fea2-4098-a83d-db3d07ff4c55)
我有且僅有這一個 api key
123hi123 commented 2 months ago

@Calcium-Ion

Yan-Zero commented 2 months ago

模型列表获取和能否请求是两码事,而且OpenWebUI本身支持白名单模型

123hi123 commented 2 months ago

模型列表获取和能否请求是两码事,而且OpenWebUI本身支持白名单模型

多謝回覆 看來是我描述錯誤issues 那想問一下 new api之後可能會支持把models接口所展示出來的模型列表也一併限制嗎

Calcium-Ion commented 2 months ago

模型列表获取和能否请求是两码事,而且OpenWebUI本身支持白名单模型

多謝回覆 看來是我描述錯誤issues 那想問一下 new api之後可能會支持把models接口所展示出來的模型列表也一併限制嗎

你应该重新开一个issue描述这个问题

123hi123 commented 2 months ago