wisdgod / pieces-os-go

Pieces Os As Go
Apache License 2.0
19 stars 10 forks source link

项目简介

img

逆向Pieces-OS GRPC流并转换为标准OpenAI接口的项目

所有模型均由 Pieces-OS 提供

本项目基于GPLV3协议开源

如果帮助到了你,能否给一个Star呢?

免责声明

本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除

DEMO站

请善待公共服务,尽量自己搭建

Vercel

Cloudflare worker反代koyeb

一键部署

Deploy on Vercel

Deploy to Koyeb

请注意下列环境变量!私人使用请添加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);
  }
}

todo

项目结构

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
  1. 安装依赖

    go mod download
  2. 运行项目

    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

API_KEY

MAX_RETRIES

TIMEOUT

PORT

DEBUG

DEFAULT_MODEL

LOG_FILE

MIN_POOL_SIZE

MAX_POOL_SIZE

SCALE_INTERVAL

ENABLE_MODEL_ROUTE

Docker 部署说明

使用 Docker Compose(推荐)

  1. 创建部署目录:

    mkdir pieces-os-go && cd pieces-os-go
  2. 下载配置文件:

    
    # 下载 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
  1. 查看日志:

    docker-compose logs -f
  2. 停止服务:

    docker-compose down

使用 Docker 命令

  1. 拉取镜像:

    docker pull wisdgod/pieces-os-go:latest
  2. 运行容器:

    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
  3. 管理容器:

    
    # 查看日志
    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

容器资源限制

安全特性

支持的架构

V16 更新内容

V17 更新内容

V19 更新内容