password
AI summary
type
status
date
slug
summary
tags
category
icon
Suno2openai
基于 Suno-API 项目集成,提供符合 OpenAI 格式的标准化服务接口。
✨ 项目亮点
- 支持OpenAI 格式调用: 支持流输出。
- 兼容性: 兼容
chat-next-web
lobe_chat
open-webui
等前端项目, 同时适配chatgpt-on-wechat
项目
- Docker 部署: 简化部署流程,支持
docker-compose
、docker
。
- 多 Cookie 管理: 实现多个 Cookie 的轮换。
- 后台管理系统: 便于非程序员管理数据库和查看项目运行情况。
🎉 效果展示
🐳 Docker 部署
本教程提供了使用特定环境变量和端口映射运行 Docker 容器的分步指南。为了本指南的目的,SQL 名称、密码和 IP 地址等敏感信息将被替换为占位符。
前提条件
- 您的机器上已安装 Docker。
- 基本的 Docker CLI 知识。
- MySQL 版本 >= 5.7
部署步骤
- 拉取 Docker 镜像
确保您的机器上已有 Docker 镜像
wlhtea/suno2openai:latest
。如果没有,可以从 Docker 仓库拉取:- 运行 Docker 容器
参数说明:
d
: 在后台模式下运行容器并记录容器 ID。
-name wsunoapi
: 将容器命名为wsunoapi
以便于引用。
p 8000:8000
: 将容器的 8000 端口映射到主机的 8000 端口(后端)。
p 8501:8000
: 将容器的 8501 端口映射到主机的 8000 端口(管理员前端)。
e
: 为容器设置环境变量。
-restart=always
: 确保容器始终重启,除非手动停止。
- 访问应用程序
- 接口地址: 容器运行后,内部的应用程序应可通过
http://localhost:8000
或 Docker 主机的 IP 地址的 8000 端口请求接口. - 管理员控制台地址: 访问
http://localhost:8501
访问管理员后端 或者http://ip:8501
。
注意
在运行 Docker 容器之前,请确保将
<SQL_NAME>
、<SQL_PASSWORD>
、<SQL_IP>
和 <your-session-id>
等占位符替换为实际值。📦 Docker-Compose 部署
_更新时间:2024/6/30 13:18
克隆项目到您的服务器
创建数据库
创建数据库(名称自定义),记住保存密码,并确保数据库权限设置正确(允许来自所有 IP 或仅来自 Docker 容器 IP 的连接)。
配置环境变量
将
env.example
文件重命名为 .env
并填写相应的详细信息:进入项目目录
启动 Docker
注意:
- 安全组配置:确保端口 8000和8501 是开放的。
- HTTPS 支持:如果前端项目使用 HTTPS,则本项目的代理 URL 也应使用 HTTPS。
📋 API 请求
接口总结
- 添加 Cookie: 使用
/your_cookies_prefix/cookies
端点添加 Cookie。
- 获取所有 Cookie: 使用
/your_cookies_prefix/cookies
端点检索所有 Cookie。
- 删除 Cookie: 使用
/your_cookies_prefix/cookies
端点删除特定 Cookie。
- 刷新 Cookie: 使用
/your_cookies_prefix/refresh/cookies
端点刷新 Cookie。
- 生成 Chat Completion: 使用
/v1/chat/completions
端点生成聊天回复。
- 管理员后端: 访问ip:8501即可
添加 Cookie 示例
您可以使用
/your_cookies_prefix/cookies
端点添加 Cookie。以下是使用 Python 的 requests
库的示例请求:获取所有 Cookie 示例
您可以使用
/your_cookies_prefix/cookies
端点检索所有 Cookie。以下是示例请求:删除 Cookie 示例
您可以使用
/your_cookies_prefix/cookies
端点删除特定 Cookie。以下是示例请求:刷新 Cookie 示例
您可以使用
/your_cookies_prefix/refresh/cookies
端点刷新 Cookie。以下是示例请求:生成 Chat Completion 示例
您可以使用
/v1/chat/completions
端点生成聊天回复。以下是示例请求:参数说明
BASE_URL
: 默认 API 基础 URL,默认为https://studio-api.suno.ai
。
SESSION_ID
: 会话 ID。USER_NAME
: 数据库用户名。
SQL_NAME
: 数据库名称。
SQL_PASSWORD
: 数据库密码。
SQL_IP
: 数据库 IP 地址。
SQL_DK
: 数据库端口,默认是 3306。
COOKIES_PREFIX
: Cookie 前缀(记得要以/开头,例如/test)
AUTH_KEY
: 授权密钥,默认为当前时间戳。
RETRIES
: 重试次数,默认为 5。
BATCH_SIZE
: 批处理大小,默认为 10。
MAX_TIME
: 最大请求时间(min),默认为 5。
项目技术栈
1. 基本框架及第三方库
项目使用
FastAPI
作为基本框架,并且引入了多个第三方库来丰富和增强项目功能。以下是这些库及其用途的详细说明:uvicorn
: 一个ASGI服务器,用于运行FastAPI应用。
apscheduler
: 一个高级的Python定时任务调度框架,可以用于定时任务和作业管理。
tenacity
: 一个用于实现重试逻辑的库,适用于需要多次尝试的操作。
requests
: 一个简单易用的HTTP库,用于同步的HTTP请求。
pydantic
: 数据验证和数据设置的库,FastAPI的模型依赖于此。
curl_cffi
: 基于cURL的异步HTTP客户端,提供高效的HTTP请求能力。
python-dotenv
: 用于加载环境变量文件(.env),管理项目的环境配置。
aiohttp
: 一个异步的HTTP客户端和服务器框架。
aiomysql
: 一个用于MySQL的异步数据库驱动。
fastapi
: 基于Python的现代、快速(高性能)Web框架,用于构建API。
tiktoken
: 用于处理和操作字节流的库。
starlette
: FastAPI底层的ASGI工具包,提供路由、请求、响应等功能。
fake_useragent
: 用于生成随机的User-Agent头。
cryptography
: 提供加密和解密功能的库。
2. 异步编程
异步编程在Python中是一种处理I/O操作(如文件读写、网络请求等)时非常高效的方法。项目中主要使用
asyncio
框架以及aiohttp
库来实现异步HTTP请求,从而提高程序的并发性能和响应速度。- FastAPI本身是支持异步的,所有的路由处理函数都可以是异步的,通过使用
async def
关键字来定义。
- aiohttp用于异步HTTP请求,是
requests
库的异步版本,能在大量HTTP请求时显著提高效率。
- aiomysql提供对MySQL数据库的异步访问支持,可以在查询和操作数据库时不阻塞程序的其他部分。
3. MySQL 和 Streamlit
- MySQL: 项目使用
aiomysql
库与MySQL数据库进行交互。MySQL是一个流行的关系型数据库管理系统(RDBMS),适用于存储和管理结构化数据。使用MySQL可以通过SQL语句对数据进行查询和操作。
- Streamlit: Streamlit是一个开源的Python库,主要用于构建数据应用和可视化。它允许开发者以非常少的代码创建出色的交互式Web应用。与FastAPI的结合,可以实现快速的数据展示和交互功能。通过Streamlit可以将数据处理结果以图表、表格等形式直观地展示出来。
项目结构总结
- .github/workflows: 配置CI/CD管道,自动化构建、测试和部署流程。
- .idea: 包含IDE的项目配置文件,不影响代码逻辑,但对开发环境有帮助。
- background: 与后台管理功能相关的模块,可能包含管理面板、管理员接口等。
- data: 用于存储传输各种数据类
- images: 存放项目使用的图片,可能用于前端展示、报告生成等。
- process: 处理逻辑模块,可能涉及数据清洗、转换、任务调度等功能。
- suno: 项目的核心模块,主要功能和业务逻辑实现的地方。
- util: 公共的工具函数,提供通用的辅助功能。
支持我们:如果您觉得这个项目对您有帮助,请不要犹豫,给它加星 ⭐!我们欢迎任何形式的支持和建议,让我们共同进步!
- 作者:Clivia
- 链接:Clivia的博客/technology/suno2openai
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章