Fix KeyError when logprobs=false in completions endpoint (#16095) #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release SGLang Model Gateway to PyPI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - sgl-model-gateway/bindings/python/pyproject.toml | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| name: build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }}) | |
| runs-on: ${{ matrix.os }}-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu, macos, windows] | |
| target: [x86_64, aarch64] | |
| manylinux: [auto] | |
| include: | |
| - os: ubuntu | |
| platform: linux | |
| - os: windows | |
| ls: dir | |
| target: x86_64 | |
| python-architecture: x64 | |
| interpreter: 3.9 3.10 3.11 3.12 3.13 | |
| - os: macos | |
| target: aarch64 | |
| interpreter: 3.9 3.10 3.11 3.12 3.13 | |
| - os: ubuntu | |
| platform: linux | |
| target: aarch64 | |
| # musllinux | |
| - os: ubuntu | |
| platform: linux | |
| target: x86_64 | |
| manylinux: musllinux_1_1 | |
| - os: ubuntu | |
| platform: linux | |
| target: aarch64 | |
| manylinux: musllinux_1_1 | |
| exclude: | |
| - os: windows | |
| target: aarch64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: sglang-repo | |
| - name: Move sgl-model-gateway folder to root and delete sglang-repo | |
| run: | | |
| mv sglang-repo/sgl-model-gateway/* . | |
| rm -rf sglang-repo | |
| ls -alt | |
| shell: bash | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| architecture: ${{ matrix.python-architecture || 'x64' }} | |
| - name: Install twine | |
| run: pip install -U twine | |
| - name: Install protoc (macOS) | |
| if: matrix.os == 'macos' | |
| run: brew install protobuf | |
| - name: Install protoc (Windows) | |
| if: matrix.os == 'windows' | |
| run: choco install protoc -y | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: bindings/python | |
| target: ${{ matrix.target }} | |
| manylinux: ${{ matrix.manylinux || 'auto' }} | |
| args: --release --out dist --features vendored-openssl --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 3.14' }} | |
| rust-toolchain: stable | |
| docker-options: -e CI -e CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc -e CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++ | |
| before-script-linux: | | |
| # Install build dependencies (perl/make for vendored OpenSSL, protoc for gRPC) | |
| if command -v yum &> /dev/null; then | |
| yum update -y && yum install -y wget unzip gcc gcc-c++ perl-core make | |
| # Install cross-compilation toolchain for aarch64 if needed | |
| if [ "${{ matrix.target }}" = "aarch64" ]; then | |
| yum install -y gcc-aarch64-linux-gnu gcc-c++-aarch64-linux-gnu || true | |
| fi | |
| elif command -v apt-get &> /dev/null; then | |
| apt-get update && apt-get install -y wget unzip gcc g++ perl make | |
| # Install cross-compilation toolchain for aarch64 if needed | |
| if [ "${{ matrix.target }}" = "aarch64" ]; then | |
| apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu || true | |
| fi | |
| fi | |
| (cd /tmp && \ | |
| wget https://github.com/protocolbuffers/protobuf/releases/download/v32.0/protoc-32.0-linux-x86_64.zip && \ | |
| unzip protoc-32.0-linux-x86_64.zip -d /usr/local && \ | |
| rm protoc-32.0-linux-x86_64.zip) | |
| protoc --version | |
| - name: List built packages | |
| run: ${{ matrix.ls || 'ls -lh' }} bindings/python/dist/ | |
| - name: Check packages | |
| run: twine check --strict bindings/python/dist/* | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: packages-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.manylinux || 'auto' }} | |
| path: bindings/python/dist/ | |
| build-sdist: | |
| name: Build SDist | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: sglang-repo | |
| - name: Move sgl-model-gateway folder to root and delete sglang-repo | |
| run: | | |
| mv sglang-repo/sgl-model-gateway/* . | |
| rm -rf sglang-repo | |
| ls -alt | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| - name: Build SDist | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: bindings/python | |
| command: sdist | |
| args: --out dist | |
| rust-toolchain: stable | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: sdist | |
| path: bindings/python/dist/*.tar.gz | |
| upload: | |
| name: Upload to PyPI | |
| if: github.repository == 'sgl-project/sglang' # Ensure this job only runs for the sgl-project/sglang repository | |
| needs: [build, build-sdist] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| path: dist | |
| merge-multiple: true | |
| - name: Upload to PyPI | |
| env: | |
| TWINE_USERNAME: __token__ | |
| TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN_ROUTER }} | |
| run: | | |
| pip install twine | |
| twine upload dist/* --verbose |