Skip to content

Releases: TaewoooPark/DRIFT

OpenAI endpoint stage 10.6 - localized README updates

Choose a tag to compare

Documents the OpenAI-compatible endpoint update across the root README files.\n\nChanges:\n- Adds the OpenAI-compatible local backend section to README.ko.md, README.zh.md, and README.ja.md.\n- Keeps README.md aligned with the compatibility audit by mentioning Python/JS SDK smoke coverage and remaining full-stack gates.\n- Links every language README to docs/openai-compatibility.md and docs/openai-compatibility-audit.md.\n\nVerification:\n- git diff --check\n- Verified linked docs files exist.

OpenAI endpoint stage 10.5 - compatibility audit coverage

Choose a tag to compare

Re-audits the PR against the vLLM/llama.cpp-style compatibility checklist and broadens test evidence.\n\nChanges:\n- Adds docs/openai-compatibility-audit.md with verified, scoped-unsupported, and still-external validation items.\n- Adds opt-in official OpenAI JS SDK smoke coverage.\n- Expands API tests for all text roles/tool follow-ups, malformed JSON, unknown fields, auto tool-call parsing, legacy functions/function_call, length finish reasons, embedding input variants/errors, context overflow, and concurrent session isolation.\n- Expands scripts/openai_compat_smoke.py to exercise models, chat, chat streaming, completions, completion streaming, responses, responses streaming, JSON mode, tool_choice, input token counting, tokenize/detokenize, and embeddings/capability errors.\n- Rejects empty embedding inputs with OpenAI-shaped errors.\n\nVerification:\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py\n- python3 -m pytest -q -> 50 passed, 3 skipped\n- SDK venv: PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_openai_js_sdk_smoke.py tests/test_sampling_controls.py -q -> 51 passed, 2 skipped\n- DRIFT_RUN_JS_SDK_SMOKE=1 PYTHONPATH=/Users/taewoopark/personal/DRIFT python3 -m pytest tests/test_openai_js_sdk_smoke.py -q -> 1 passed\n- Expanded scripts/openai_compat_smoke.py against a local uvicorn test server -> all checks ok\n- git diff --check and git diff --cached --check\n- CLI/parity/itest help gates passed\n\nFull parity/itest execution was attempted, but this local Python environment still lacks torch, so model-backed parity stops with ModuleNotFoundError: No module named 'torch'.

OpenAI endpoint stage 10.4 - Responses API streaming

Choose a tag to compare

Adds semantic SSE streaming for /v1/responses with response.created, response.output_text.delta, and response.completed events; accepts Responses-style text.format structured output and function tool payloads; expands OpenAI Python SDK smoke coverage.\n\nVerification:\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py\n- python3 -m pytest -q\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q\n- git diff --check\n- CLI help gates for drift.cli, run, node, serve, bench; parity/itest help gates\n\nHardware/model parity execution was not rerun here because this local Python environment does not have torch installed.

OpenAI endpoint stage 10.3 — exact logits-backed logprobs

Choose a tag to compare

Minor patch release on top of stage 10.2.\n\nHighlights:\n- Extends GenerationResult and the DRIFT backend bridge to carry per-token logprob payloads.\n- Adds opt-in logits-backed logprob collection inside orchestrator.generate(), without changing the default greedy path unless the HTTP adapter requests logprobs.\n- Chat Completions and legacy Completions now prefer exact selected-token/top-k logprobs when the backend exposes logits.\n- Backends that cannot expose logits still return OpenAI-shaped placeholder logprobs for parser compatibility.\n- Stop-token truncation now truncates attached logprobs alongside token_ids.\n- SDK smoke and API tests now assert exact logprob values are parsed.\n\nVerification:\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 39 passed, 2 skipped, 1 warning.\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 40 passed, 1 skipped, 1 warning.\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py -> passed.\n- git diff --check -> passed.\n- python3 -m drift.cli serve --help -> passed.\n\nKnown scope notes:\n- Thin-head mode cannot expose logits at the HTTP adapter and will keep the compatibility fallback.\n- Tool execution, full constrained decoding, audio, and multimodal content remain outside this text-generation PR scope.

OpenAI endpoint stage 10.2 — n-choice and logprobs compatibility

Choose a tag to compare

Minor patch release on top of stage 10.1.\n\nHighlights:\n- Adds Chat Completions support for n choices up to 16.\n- Adds Chat Completions logprobs/top_logprobs response shapes, including streaming chunk shape when requested.\n- Adds legacy Completions n choices and logprobs response shapes.\n- Offsets seed per choice for reproducible multi-choice sampled requests.\n- Expands OpenAI Python SDK smoke coverage for n/logprobs parsing.\n- Documents that HTTP logprob values are compatibility placeholders until the adapter exposes exact per-token logits.\n\nVerification:\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 39 passed, 2 skipped, 1 warning.\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 40 passed, 1 skipped, 1 warning.\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py -> passed.\n- git diff --check -> passed.\n- CLI help spot checks: run/node/serve/bench/parity passed.\n\nKnown scope notes:\n- DRIFT now emits OpenAI-compatible logprobs objects for client compatibility, but values are placeholders rather than exact model log probabilities.\n- Tool execution, full constrained decoding, audio, and multimodal content remain outside this text-generation PR scope.

OpenAI endpoint stage 10.1 — tool/JSON compatibility and CLI preservation

Choose a tag to compare

Minor patch release on top of stage 10.\n\nHighlights:\n- Adds OpenAI-compatible tool/function calling shapes for chat completions and responses, including tools/tool_choice plus legacy functions/function_call.\n- Adds JSON response_format compatibility for json_object and json_schema via extraction/wrapping/simple required-field filling.\n- Updates streaming structured responses to emit OpenAI-shaped tool_call deltas when needed.\n- Expands OpenAI SDK smoke coverage for JSON mode and tool calls.\n- Keeps existing DRIFT CLI help paths dependency-light by lazy-loading torch/msgpack/protocol/orchestrator work until execution paths need them.\n\nVerification:\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 35 passed, 2 skipped, 1 warning.\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 36 passed, 1 skipped, 1 warning.\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py -> passed.\n- CLI help checked for doctor/up/run/node/serve/reference/parity/itest/bench/ping/keygen/ledger.\n\nKnown scope notes:\n- DRIFT does not execute tools itself; it returns OpenAI-shaped tool calls for the client/tool runner.\n- JSON schema support is compatibility-oriented, not full constrained decoding.\n- Heavy parity/itest execution still requires a torch-enabled DRIFT runtime; this local Python 3.14 environment does not have torch installed.

OpenAI endpoint stage 10 — preservation audit and PR prep

Choose a tag to compare

Stage 10 of the OpenAI-compatible endpoint branch.

Implemented:

  • Documented the drift serve OpenAI-compatible HTTP/SSE adapter in README and the operations manual.
  • Linked the explicit compatibility matrix (docs/openai-compatibility.md) from README.
  • Preserved lightweight CLI help in dependency-thin environments by lazy-importing heavy runtime modules in drift run and drift node paths.
  • Confirmed the OpenAI adapter remains an edge HTTP layer and does not replace the existing DRIFT TCP+msgpack data plane.

Verification passed:

  • System Python: python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q (32 passed, 2 skipped because system Python lacks openai and torch)
  • SDK venv with actual OpenAI Python SDK: PYTHONPATH=$PWD /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q (33 passed, 1 skipped because venv lacks torch)
  • python3 -m compileall drift tests scripts/openai_compat_smoke.py
  • python3 -m drift.cli help
  • python3 -m drift.cli run --help
  • python3 -m drift.cli node --help
  • python3 -m drift.cli serve --help

Verification blocked by local environment:

  • python3 -m drift.parity_test --mode inprocess
  • python3 -m drift.parity_test --mode socket
  • python3 -m drift.itest --nodes 2
  • python3 -m drift.itest --nodes 2 --chain
  • python3 -m drift.itest --nodes 2 --thin
  • python3 -m drift.itest --nodes 2 --int8

All blocked DRIFT runtime gates failed at import with ModuleNotFoundError: No module named 'torch' in the current Python 3.14 environment, before executing model logic.

OpenAI endpoint stage 09 — compatibility harness

Choose a tag to compare

Stage 9 of the OpenAI-compatible endpoint branch.

Implemented:

  • Added compatibility coverage for OpenAI SDK-style payloads, LangChain-style stop payloads, LiteLLM/vLLM-style sampling fields, llama.cpp-style tokenize/detokenize helpers, embeddings, and negative OpenAI-shaped errors.
  • Added POST /v1/responses as a minimal text Responses API surface.
  • Added POST /v1/chat/completions/input_tokens for chat token counting.
  • Added GET /metrics with Prometheus-style text output.
  • Added an optional real OpenAI Python SDK smoke test that starts a local uvicorn server and exercises models, chat, streaming chat, completions, and embeddings.
  • Added scripts/openai_compat_smoke.py for smoke-testing a running drift serve server with only Python stdlib HTTP calls.
  • Added docs/openai-compatibility.md documenting supported endpoints, supported parameters, explicit unsupported areas, SDK smoke commands, and DRIFT preservation gates.
  • Explicitly scoped unsupported tool calling, JSON schema/JSON mode, multimodal/audio, and thin-mode sampling/embeddings with clear OpenAI-shaped errors.

Verification:

  • System Python: python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q (32 passed, 2 skipped because system Python lacks openai and torch)
  • SDK venv: PYTHONPATH=$PWD /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q (33 passed, 1 skipped because venv lacks torch)
  • python3 -m compileall drift tests scripts/openai_compat_smoke.py

OpenAI endpoint stage 08 — production controls

Choose a tag to compare

Stage 8 of the OpenAI-compatible endpoint branch.

Implemented:

  • Added optional HTTP API-key authentication, separate from DRIFT's node-to-node DRIFT_NETWORK_KEY wire security.
  • Accepted API keys through --api-key, DRIFT_API_KEY, Bearer auth, and X-API-Key.
  • Added optional CORS configuration through --cors-origin and DRIFT_CORS_ORIGINS.
  • Added /ready readiness metadata with context length and capability flags.
  • Added DRIFT_SERVE_HOST, DRIFT_SERVE_PORT, --max-concurrent-requests, and --no-access-log server controls.
  • Added a shallow HTTP concurrency middleware while preserving the backend generation lock.
  • Added tests for auth failures/successes, unauthenticated readiness, and CORS preflight behavior.

Verification:

  • python3 -m pytest tests/test_openai_api.py tests/test_sampling_controls.py -q (23 passed, 1 skipped because local Python lacks torch)
  • python3 -m compileall drift tests
  • python3 -m drift.cli serve --help

OpenAI endpoint stage 07 — embeddings and capabilities

Choose a tag to compare

Stage 7 of the OpenAI-compatible endpoint branch.

Implemented:

  • Added model capability metadata to /v1/models for chat, completion, and embedding support.
  • Added POST /v1/embeddings with OpenAI-shaped embedding responses and usage accounting.
  • Added embedding input normalization for strings, string arrays, token-id arrays, and arrays of token-id arrays.
  • Added encoding_format: float and encoding_format: base64 support.
  • Added a non-thin DRIFT embedding implementation that routes the prompt through the existing split pipeline and pools the final hidden state.
  • Added explicit unsupported_embeddings errors for modes such as thin-head where hidden-state embeddings cannot be produced at the head.
  • Added tests for model capabilities, float embeddings, base64 embeddings, token-id embedding inputs, and unsupported embedding mode errors.

Verification:

  • python3 -m pytest tests/test_openai_api.py tests/test_sampling_controls.py -q (20 passed, 1 skipped because local Python lacks torch)
  • python3 -m compileall drift tests