8000
Skip to content

sangege0606/llm-free-api-helper

Repository files navigation

llm-free-api-helper

简介

提供LLM-Red-Team开发的一系列free-api项目的一些辅助功能。

目前有的功能:

  • 定时检测各个free-api项目的token是否存活,并发送邮件通知。
  • 支持使用cron表达式配置定时任务,并支持动态修改定时任务。
  • 支持原生部署、docker部署、docker-compose一键部署。
  • 支持通过one-api服务(需要二开songquanpeng/one-api,使得接口{baseUrl}/api/channel/{id}返回的key字段不为空)自动获取各个free-api项目的base_urltoken
  • 提供将songquanpeng/one-api服务的所有渠道数据迁移到martialbe/one-api服务的脚本。

使用

环境变量说明:

  • PYTHON_PATH: Python解释器的路径(建议使用Python 3.12),默认为系统使用的Python3解释器。示例:/usr/bin/python3.12
  • EMAIL_HOST: 发送邮箱的服务器。示例:smtp.qq.com
  • EMAIL_PASS: 邮箱密码
  • EMAIL_SENDER: 发送邮箱
  • EMAIL_SENDER_NAME: 发送邮箱名称
  • EMAIL_RECEIVERS: 接收邮箱
  • GLM_FREE_API_BASE_URL: 部署的glm-free-api服务的base_url。注意:如果ONE_API_BASE_URL不为空,则这些XX_FREE_API_BASE_URL、XX_FREE_API_TOKEN全部失效。
  • GLM_FREE_API_TOKEN: 调用glm-free-api服务的接口时传入的token
  • QWEN_FREE_API_BASE_URL: 部署的qwen-free-api服务的base_url
  • QWEN_FREE_API_TOKEN: 调用qwen-free-api服务的接口时传入的token
  • KIMI_FREE_API_BASE_URL: 部署的kimi-free-api服务的base_url
  • KIMI_FREE_API_TOKEN: 调用kimi-free-api服务的接口时传入的token
  • SPARK_FREE_API_BASE_URL: 部署的spark-free-api服务的base_url
  • SPARK_FREE_API_TOKEN: 调用spark-free-api服务的接口时传入的token
  • METASO_FREE_API_BASE_URL: 部署的metaso-free-api服务的base_url
  • METASO_FREE_API_TOKEN: 调用metaso-free-api服务的接口时传入的token
  • ONE_API_BASE_URL: 部署的one-api服务的base_url。注意:1.如果该值不为空,则前面的XX_FREE_API_BASE_URL、XX_FREE_API_TOKEN全部失效;2.需要二开songquanpeng/one-api,使得接口{baseUrl}/api/channel/{id}返回的key字段不为空。
  • ONE_API_TOKEN: 调用one-api服务的接口时传入的tokenONE_API_BASE_URL不为空时必传。
  • ONE_API_GLM_FREE_API_CHANNEL_ID: one-api服务中配置glm-free-api服务的channel_id
  • ONE_API_QWEN_FREE_API_CHANNEL_ID: one-api服务中配置qwen-free-api服务的channel_id
  • ONE_API_KIMI_FREE_API_CHANNEL_ID: one-api服务中配置kimi-free-api服务的channel_id
  • ONE_API_SPARK_FREE_API_CHANNEL_ID: one-api服务中配置spark-free-api服务的channel_id
  • ONE_API_METASO_FREE_API_CHANNEL_ID: one-api服务中配置metaso-free-api服务的channel_id
  • SCHEDULE_CRON: 定时任务的cron表达式,格式参考cron - 维基百科。示例:0 8 * * *,表示每天早上8点执行。如果不配置,则只执行一次。

原生部署

  • 部署LLM-Red-Team开发的一系列free-api项目之后
  • 执行该Shell脚本。
    #!/bin/bash
    sh ${BASE_DIR}/scripts/start.sh PYTHON_PATH /usr/bin/python3.12 \
        EMAIL_HOST smtp.qq.com \
        EMAIL_PASS XX \
        EMAIL_SENDER XX@qq.com \
        EMAIL_SENDER_NAME XX \
        EMAIL_RECEIVERS XX@163.com \
        GLM_FREE_API_BASE_URL http://XX:8000 \
        GLM_FREE_API_TOKEN XX \
        QWEN_FREE_API_BASE_URL http://XX:8001 \
        QWEN_FREE_API_TOKEN XX \
        KIMI_FREE_API_BASE_URL http://XX:8002 \
        KIMI_FREE_API_TOKEN XX \
        SPARK_FREE_API_BASE_URL http://XX:8003 \
        SPARK_FREE_API_TOKEN XX \
        METASO_FREE_API_BASE_URL http://XX:8004 \
        METASO_FREE_API_TOKEN XX \
        SCHEDULE_CRON "0 8 * * *"

注意:

  1. 替换其中的变量值。
  2. 不要频繁(小于10分钟)执行。

docker部署

  • 部署LLM-Red-Team开发的一系列free-api项目
  • 执行pipreqs命令。
    pipreqs ./ --encoding=utf8 --force
  • 执行docker命令。
    docker build -t sangea0606/llm-free-api-helper .

    如果需要清除缓存,就添加--no-cache

  • 启动docker容器
    docker run -itd --name llm-free-api-helper \
        --restart always \
        -v /opt/sangea0606-docker/llm-free-api-helper/logs:/app/logs \
        -e TZ=Asia/Shanghai \
        -e EMAIL_HOST=smtp.qq.com \
        -e EMAIL_PASS=XX \
        -e EMAIL_SENDER=XX@qq.com \
        -e EMAIL_SENDER_NAME=XX \
        -e EMAIL_RECEIVERS=XX@163.com \
        -e GLM_FREE_API_BASE_URL=http://XX:8000 \
        -e GLM_FREE_API_TOKEN=XX \
        -e QWEN_FREE_API_BASE_URL=http://XX:8001 \
        -e QWEN_FREE_API_TOKEN=XX \
        -e KIMI_FREE_API_BASE_URL=http://XX:8002 \
        -e KIMI_FREE_API_TOKEN=XX \
        -e SPARK_FREE_API_BASE_URL=http://XX:8003 \
        -e SPARK_FREE_API_TOKEN=XX \
        -e METASO_FREE_API_BASE_URL=http://XX:8004 \
        -e METASO_FREE_API_TOKEN=XX \
        -e SCHEDULE_CRON="0 8 * * *" \
        sangea0606/llm-free-api-helper /bin/bash

docker-compose部署

  • 部署LLM-Red-Team开发的一系列free-api项目
  • 进入llm-free-api-helper目录,编辑docker-compose.yml文件
  • 执行该docker-compose命令。
    docker compose up -d

定时任务相关的API接口

接口详情见源码, 后续会使用swagger管理接口文档

  • /task/list 查询任务列表
  • /task/update 修改定时任务
  • /task/pause 暂停定时任务
  • /task/resume 恢复定时任务
  • /task/delete 删除定时任务
  • /task/check_tokens 检测各个token是否存活,并发送邮件通知

songquanpeng/one-api服务的所有渠道数据迁移到martialbe/one-api服务

python one_api_migrator.py {one_api_base_url} {one_api_token} {martialbe_one_api_base_url} {martialbe_one_api_token}

TODO

  • 支持多账号的存活检测
  • 支持kimi-free-apispark-free-apimetaso-free-api
  • 提供dockerdocker-compose部署方式
  • 支持通过one-api服务自动获取各个free-api项目的token
  • Schedule换为支持cron表达式的APScheduler
  • 使用fastapi重构系统,提供定时任务相关的API接口
  • 使用swagger管理接口文档

About

提供LLM-Red-Team开发的一系列free-api项目的一些辅助功能

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

0