api 测活工具更新

给之前的 api 测活工具新增了模型可用性检测功能(原先只是拉取 /v1/models 的响应数据,但模型可能实际不可用),并修复了原先的错误捕获异常。

原帖已经过了编辑时间,不得已开个新帖水一下啊,使用过原项目的佬友们可以去更新一下子


项目地址
部署地址

新增功能效果展示(目前只对 chat 格式进行校验,暂排除图像、语音、嵌入等模型):


2024/08/22

  • 已加上模型测活开关

2024/08/23

  • 已加上测活超时(远离长长久久的模型)
  • 已加上并发测活(time is life,能多省一秒是一秒)

2024/08/31

  • 更新 UI 和部分逻辑
  • Serverless 部署网关有时间限制,在线查询 \boxed{√} ,但在线测活 \boxed{寄寄寄},要成为过去式了,哭死 o(╥﹏╥)o (BTW,本地部署依旧正常使用)

推荐一下老哥的纯前端项目:

36 Likes

感谢分享这个工具

2 Likes

感谢分享大佬厉害啊 :+1:

2 Likes

有人测我了:sob: 直接测掉0.05美元。(有些模型的倍率超高。)

3 Likes

能不能把模型测活设置成用户可以手动开关, 避免不必要的额度消耗~~!

1 Like

有道理,等吃完饭更新一下

1 Like

我觉得先获取模型倍数

1 Like

gooooooood,回去部署下试试谢谢分享

1 Like

太强了佬!正好需要

1 Like

很遗憾,openai 原本没有倍率的概念,所以 oneapi 在实现该接口的时候也没有填充倍率信息,所以没办法从 api 获取到具体的模型倍率或者模型价格

一个 models 响应表单示例
{'data': [
        {'id': 'gpt-3.5-turbo', 'object': 'model', 'created': 1626777600, 'owned_by': 'openai', 'permission': [
                {'id': 'modelperm-LwHkVFn8AcMItP432fKKDIKJ', 'object': 'model_permission', 'created': 1626777600, 'allow_create_engine': True, 'allow_sampling': True, 'allow_logprobs': True, 'allow_search_indices': False, 'allow_view': True, 'allow_fine_tuning': False, 'organization': '*', 'group': None, 'is_blocking': False
                }
            ], 'root': 'gpt-3.5-turbo', 'parent': None
        },
        {'id': 'dall-e-3', 'object': 'model', 'created': 1626777600, 'owned_by': 'openai', 'permission': [
                {'id': 'modelperm-LwHkVFn8AcMItP432fKKDIKJ', 'object': 'model_permission', 'created': 1626777600, 'allow_create_engine': True, 'allow_sampling': True, 'allow_logprobs': True, 'allow_search_indices': False, 'allow_view': True, 'allow_fine_tuning': False, 'organization': '*', 'group': None, 'is_blocking': False
                }
            ], 'root': 'dall-e-3', 'parent': None
        },
        {'id': 'tts-1', 'object': 'model', 'created': 1626777600, 'owned_by': 'openai', 'permission': [
                {'id': 'modelperm-LwHkVFn8AcMItP432fKKDIKJ', 'object': 'model_permission', 'created': 1626777600, 'allow_create_engine': True, 'allow_sampling': True, 'allow_logprobs': True, 'allow_search_indices': False, 'allow_view': True, 'allow_fine_tuning': False, 'organization': '*', 'group': None, 'is_blocking': False
                }
            ], 'root': 'tts-1', 'parent': None
        },
        {'id': 'command-r-plus', 'object': 'model', 'created': 1626777600, 'owned_by': 'Cohere', 'permission': [
                {'id': 'modelperm-LwHkVFn8AcMItP432fKKDIKJ', 'object': 'model_permission', 'created': 1626777600, 'allow_create_engine': True, 'allow_sampling': True, 'allow_logprobs': True, 'allow_search_indices': False, 'allow_view': True, 'allow_fine_tuning': False, 'organization': '*', 'group': None, 'is_blocking': False
                }
            ], 'root': 'command-r-plus', 'parent': None
        },
        {'id': 'deepseek-ai/DeepSeek-V2-Chat', 'object': 'model', 'created': 1626777600, 'owned_by': 'sioot': 'command-r-plus', 'parent': None
        },
        {'id': 'deepseek-ai/DeepSeek-V2-Chat', 'object': 'model', 'created': 1626777600, 'owned_by': 'siliconflow', 'permission': [
                {'id': 'modelperm-LwHkVFn8AcMItP432fKKDIKJ', 'object': 'model_permission', 'created': 1626777600, 'allow_create_engine': True, 'allow_sampling': True, 'allow_logprobs': True, 'allow_search_indices': False, 'allow_view': True, 'allow_fine_tuning': False, 'organization': '*', 'group': None, 'is_blocking': False
                }
            ], 'root': 'deepseek-ai/DeepSeek-V2-Chat', 'parent': None
        },
        {'id': 'Qwen/Qwen2-72B-Instruct', 'object': 'model', 'created': 1626777600, 'owned_by': 'siliconflow', 'permission': [
                {'id': 'modelperm-LwHkVFn8AcMItP432fKKDIKJ', 'object': 'model_permission', 'created': 1626777600, 'allow_create_engine': True, 'allow_sampling': True, 'allow_logprobs': True, 'allow_search_indices': False, 'allow_view': True, 'allow_fine_tuning': False, 'organization': '*', 'group': None, 'is_blocking': False
                }
            ], 'root': 'Qwen/Qwen2-72B-Instruct', 'parent': None
        },
        {'id': 'gemini-1.5-pro-latest', 'object': 'model', 'created': 1626777600, 'owned_by': 'custom', 'permission': None, 'root': 'gemini-1.5-pro-latest', 'parent': None
        },
        {'id': 'tttt', 'object': 'model', 'created': 1626777600, 'owned_by': 'custom', 'permission': None, 'root': 'tttt', 'parent': None
        },
        {'id': 'gemini-1.5-flash-latest', 'object': 'model', 'created': 1626777600, 'owned_by': 'custom', 'permission': None, 'root': 'gemini-1.5-flash-latest', 'parent': None
        },
        {'id': 'claude-3-haiku', 'object': 'model', 'created': 1626777600, 'owned_by': 'custom', 'permission': None, 'root': 'claude-3-haiku', 'parent': None
        }
    ], 'object': 'list'
}

感谢分享!!

秀啊,大佬niubility

可以docker compose 部署就好了

docker 不太熟,学着构建了一个 linux/amd64 版,可以试试看,端口按需更改

docker-compose.yml
version: '3'

services:
  query-key-app:
    image: zhong008/query-key-app:latest
    container_name: query-key-app
    restart: unless-stopped
    ports:
      - '5000:5000'
    volumes:
      - ./data:/app/data # 挂载一些需要保存的数据
    environment:
      - TZ=Asia/Shanghai # 设置时区

强强强~!马上试试

可以用哈。在可以试着配一个 action 自动构建 releases、docker


卡着动不了了。。不知道是不是没设置超时?

没设置超时,可能模型多,一个一个测,测的慢?

1 Like

这个还是需要加上的,有些会超时300秒, chat 接口超过10秒不返回首字状态就是不正常啦

已更

1 Like