逆向Pieces-OS GRPC流并转换为标准OpenAI接口的项目
所有模型均由 Pieces-OS 提供
本项目基于GPLV3协议开源
如果帮助到了你,能否给一个Star呢?
本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除
请善待公共服务,尽量自己搭建
请注意下列环境变量!私人使用请添加API_KEY!
cloudflare work反代koyeb
export default {
async fetch(request, env) {
// 创建目标 URL 改成你自己的部署地址,不带协议头和/
const url = new URL(request.url);
url.hostname = 'abcdefg.koyeb.app';
// 创建新的请求对象
const newRequest = new Request(url, {
method: request.method,
headers: request.headers,
body: request.method === 'POST' ? request.body : null,
redirect: 'follow'
});
// 转发请求并返回响应
return fetch(newRequest);
}
}
pieces-os-go/ # 项目根目录
cmd/ # 可执行文件目录
server/
main.go # 主程序入口
internal/ # 内部包目录
config/ # 配置相关
config.go # 配置结构和加载逻辑
handler/ # HTTP处理器
chat.go # 聊天相关接口处理
health.go # 健康检查接口
models.go # 模型相关接口处理
middleware/ # 中间件
auth.go # 认证中间件
cors.go # 跨域处理
logger.go # 日志中间件
model/ # 数据模型
chat.go # 聊天相关数据结构
error.go # 错误定义
models.go # 模型相关数据结构
service/ # 业务逻辑层
chat.go # 聊天业务逻辑
grpc.go # GRPC客户端实现
pkg/ # 公共包目录
proto/ # 协议定义和生成的代码
gpt/ # GPT相关协议
gpt.pb.go # 生成的GPT协议代码
gpt.proto # GPT协议定义
gpt_grpc.pb.go # 生成的GPT GRPC代码
vertex/ # Vertex AI相关协议
vertex.pb.go # 生成的Vertex协议代码
vertex.proto # Vertex协议定义
vertex_grpc.pb.go # 生成的Vertex GRPC代码
tiktoken_loader/ # GPT分词器加载器
assets/
assets.go # 资源文件
cl100k_base.tiktoken # GPT3.5分词器数据
o200k_base.tiktoken # GPT4分词器数据
tokenizer.json # 分词器配置
offline_loader.go # 离线加载实现
tokenizer/ # 通用分词器接口
claude.go # Claude分词实现
errors.go # 错误定义
models.go # 分词器模型
num.go # Token计数实现
protos/ # 原始协议定义
GPTInferenceService.proto # GPT服务协议
VertexInferenceService.proto # Vertex服务协议
cloud_model.json # 云端模型配置
go.mod # Go模块定义
go.sum # 依赖版本锁定
readme.md # 项目说明文档
# 测试可用模型
## Claude 系列(Nextchat可将@换为-)
- **claude-3-5-sonnet@20240620**
- **claude-3-haiku@20240307**
- **claude-3-sonnet@20240229**
- **claude-3-opus@20240229**
## GPT 系列
- **gpt-3.5-turbo**
- **gpt-4**
- **gpt-4-turbo**
- **gpt-4o-mini**
- **gpt-4o**
## Gemini 系列
- **gemini-pro**
- **gemini-1.5-flash**
- **gemini-1.5-pro**
## 其他
- **chat-bison**
- **codechat-bison**
# 手动部署
1. 克隆项目
```bash
git clone https://github.com/wisdgod/pieces-os-go.git
cd pieces-os-go
安装依赖
go mod download
运行项目
go run cmd/server/main.go
# 获取模型列表
curl --request GET 'http://127.0.0.1:8787/v1/models' \
--header 'Content-Type: application/json'
# 发送聊天请求
curl --request POST 'http://127.0.0.1:8787/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "user",
"content": "你好!"
}
],
"model": "gpt-4o",
"stream": true
}'
API_PREFIX
'/v1/'
API_PREFIX
API_KEY
''
API_KEY
MAX_RETRIES
3
MAX_RETRIES
TIMEOUT
30
TIMEOUT
PORT
8787
PORT
DEBUG
false
DEBUG
DEFAULT_MODEL
''
(空字符串,表示拒绝不存在的模型请求)DEFAULT_MODEL
LOG_FILE
''
(空字符串,表示仅输出到控制台)LOG_FILE
/var/log/pieces-os.log
或 pieces-os.log
MIN_POOL_SIZE
5
MIN_POOL_SIZE
MAX_POOL_SIZE
20
MAX_POOL_SIZE
SCALE_INTERVAL
30
SCALE_INTERVAL
ENABLE_MODEL_ROUTE
false
ENABLE_MODEL_ROUTE
/{model_name}/v1/chat/completions
格式直接访问指定模型创建部署目录:
mkdir pieces-os-go && cd pieces-os-go
下载配置文件:
# 下载 docker-compose.yml
curl -O https://raw.githubusercontent.com/wisdgod/pieces-os-go/main/docker-compose.yml
cat > .env << EOF API_KEY=your_api_key_here PORT=8787 API_PREFIX=/v1/ MIN_POOL_SIZE=5 MAX_POOL_SIZE=20 SCALE_INTERVAL=30 DEBUG=false DEFAULT_MODEL= MAX_RETRIES=3 TIMEOUT=30 EOF
3. 启动服务:
```bash
docker-compose up -d
查看日志:
docker-compose logs -f
停止服务:
docker-compose down
拉取镜像:
docker pull wisdgod/pieces-os-go:latest
运行容器:
docker run -d \
--name pieces-os \
-p 8787:8787 \
-e API_KEY=your_api_key_here \
-e TZ=Asia/Shanghai \
-v pieces_logs:/app/logs \
--restart unless-stopped \
--cpus=1 \
--memory=1g \
--security-opt no-new-privileges:true \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
wisdgod/pieces-os-go:latest
管理容器:
# 查看日志
docker logs -f pieces-os
docker stop pieces-os
docker start pieces-os
docker restart pieces-os
docker rm -f pieces-os
### 构建自定义镜像
如果需要自定义构建,可以使用项目提供的 Dockerfile:
```bash
# 克隆项目
git clone https://github.com/wisdgod/pieces-os-go.git
cd pieces-os-go
# 构建镜像
docker build -t pieces-os-go \
--build-arg VERSION=$(git describe --tags --always) \
--build-arg BUILD_TIME=$(date -u +'%Y-%m-%d_%H:%M:%S') \
.
# 运行自构建镜像
docker run -d \
--name pieces-os \
-p 8787:8787 \
-e API_KEY=your_api_key_here \
pieces-os-go
/{model_name}/v1/chat/completions
-
和 @
两种分隔符