Przejdź do treści
← Wróć do bloga
codexArtykuł

Codex z lokalnym Qwen3.8-27B przez Responses API

Codex pozwala wskazać własny serwer przez protokół Responses. Pokazujemy działającą konfigurację, granicę wsparcia i wynik lokalnego Qwena.

Autor

Syntalith

Opublikowano Zaktualizowano 4 min czytania

Klient Codex może łączyć się z własnym dostawcą modeli przez Responses API. W domowym eksperymencie podłączyliśmy go do Qwen3.8-27B na zmodyfikowanym vLLM. Zadziałały przesyłanie odpowiedzi, narzędzia i kompresja historii.

Poprawka kodu otrzymała 87/100; Qwen Code na tym samym serwerze uzyskał 100/100. Obie zmiany oceniał Codex według sześciu kryteriów Syntalith: poprawność (40), testy regresji (20), zgodność (15), zakres i utrzymywalność (10), weryfikacja (10), dokumentacja (5). Podłączenie klienta działało, ale jakość zmiany wymagała osobnej kontroli.

OpenAI dokumentuje konfigurację własnego dostawcy. Nie certyfikuje w ten sposób lokalnego Qwena ani naszego stosu vLLM. Poniżej pokazujemy profil i pięć kontroli do powtórzenia po aktualizacji klienta lub serwera.

Profil, którego rzeczywiście użyliśmy

Oficjalna dokumentacja Codex opisuje base_url, źródło klucza i protokół przesyłania. Poniżej znajduje się użyty profil z usuniętymi lokalnymi ścieżkami i nazwą hosta:

# ~/.codex/qwen-vllm.config.toml
model = "qwen3.8-27b"
model_provider = "qwen_vllm"
model_context_window = 150000
model_auto_compact_token_limit = 120000
model_auto_compact_token_limit_scope = "total"
model_reasoning_effort = "medium"
tool_output_token_limit = 6000

[model_providers.qwen_vllm]
name = "Qwen3.8-27B through local vLLM"
base_url = "http://127.0.0.1:18020/v1"
env_key = "QWEN_VLLM_API_KEY"
wire_api = "responses"
request_max_retries = 1
stream_max_retries = 1

Na innym urządzeniu 127.0.0.1 powinno wskazywać lokalny tunel do hosta z GPU. Portu nie należy wystawiać publicznie. Klucz przechowuj wyłącznie w QWEN_VLLM_API_KEY, poza plikiem TOML i repozytorium. Profil uruchamialiśmy osobno:

export QWEN_VLLM_API_KEY="$(< ~/.config/qwen-vllm/api-key)"
codex --profile qwen-vllm

Dokumentacja Codex zaznacza, że projektowy .codex/config.toml nie może nadpisać model_provider ani model_providers. Dostawcę umieść w konfiguracji użytkownika albo w osobnym pliku profilu. Poprawna tabela w niewłaściwej warstwie konfiguracji wygląda wtedy jak niesprawny dostawca.

Pięciominutowa bramka przed dostępem do repozytorium

Po uruchomieniu modelu sprawdź najpierw warstwę HTTP:

curl -fsS http://127.0.0.1:18020/health
curl -fsS \
  -H "Authorization: Bearer $QWEN_VLLM_API_KEY" \
  http://127.0.0.1:18020/v1/models

Następnie uruchom profil w pustym, jednorazowym repozytorium i podaj dokładnie to polecenie:

Utwórz result.json z polami source: "codex-qwen-smoke" i ok: true. Sprawdź plik poleceniem jq -e '.source == "codex-qwen-smoke" and .ok == true' result.json. Nie zmieniaj innych plików.

To małe zadanie sprawdza pięć elementów: odpowiedź przez Responses, wywołanie narzędzia, zapis pliku, odczyt wyniku polecenia i poprawne zakończenie sesji. W tej klasie prób nasze przebiegi trwały około 33-113 sekund. Jeśli test przekroczy pięć minut, przerwij go i sprawdź transport lub pętlę agenta. Taki czas nie powinien zostać uznany za zwykły koszt krótkiej kontroli.

W tej samej sesji poproś o zmianę source na codex-qwen-resume i ponowną walidację. Nowa tura może działać, gdy wznowienie historii jest zepsute.

Dwie awarie, które naprawdę wystąpiły

Zły klucz. Użycie klucza starego serwera llama.cpp przy vLLM zwracało HTTP 401. Kod obsługujący przebieg początkowo mógł potraktować tekstowy komunikat API jak wynik zadania. Zmieniliśmy go tak, aby błąd dostawcy oznaczał przebieg jako awarię integracji i pomijał go przy ocenie jakości modelu.

Wznowienie sesji. W profilu llama.cpp nowa tura działała, lecz wznowiona sesja Codex kończyła się błędem System message must be at the beginning. Codex umieszczał późniejszą wiadomość developer w historii, a szablon Qwena dopuszczał treść systemową wyłącznie na początku. Poprawiony szablon zbiera wiadomości system i developer w początkowym bloku. Osobno sprawdziliśmy nową turę, historię system,user,assistant,developer,user oraz wznowienie zwracające resumed-ok.

Sam /health sprawdza dostępność serwera. Nie sprawdza całej integracji klienta, narzędzi i historii sesji.

Wynik Codex w domowym eksperymencie

Na zmodyfikowanym vLLM z kontekstem 150 000 tokenów i poziomem medium, na domowym RTX 3090, zapisaliśmy:

MiaraCodexQwen Code
Ocena według kryteriów Syntalith87/100100/100
Czas przebiegu1150,42 s502,14 s
Kompresje kontekstu10
Wywołania narzędzi56 poleceń terminala52 użycia narzędzi

Ocena 87/100 wynikała z istotnej wady wykrytej podczas kontroli. Codex zbudował projekt, przeszedł testy i przygotował dokumentację, lecz zachowanie awaryjne opisane jako deterministyczne mogło wypisać adres pamięci wskaźnika albo kanału. Testy obejmowały prostsze przypadki i tej własności nie wykryły. Ocena 100/100 oznacza, że Codex nie odjął punktów poprawce Qwen Code w żadnym z sześciu kryteriów podczas tej jednej próby. Żaden wynik nie mówi o powtarzalności ani ogólnej niezawodności modelu.

W małym zadaniu importu Codex uzyskał 5/5 ukrytych kontroli, a Qwen Code pominął jedną walidację. Ten dodatkowy wynik dotyczył innego zadania i nie zmienia oceny długiej poprawki. O wyborze klienta decyduje zestaw zadań oraz jego kryteria.

Odchudzony profil Codex

Pełne środowisko klienta zawierało wiele instrukcji i opisów umiejętności. Izolowany profil codex-qwen-vllm-slim zmniejszył zmierzoną liczbę bajtów wejściowych z 19 748 do 10 573, czyli o 46,5%.

Ta liczba opisuje wyłącznie rozmiar instrukcji wejściowych. Nie jest miarą jakości ani czasu całego przebiegu. Krótsze instrukcje mogą obniżyć koszt i zostawić więcej miejsca na kod, lecz mogą też usunąć potrzebną procedurę. Aby nazwać profil lepszym, trzeba sprawdzić go na nowym zadaniu z ukrytymi kontrolami.

Bezpieczny sposób użycia

  1. Użyj osobnego profilu Codex i pozostaw normalnego dostawcę bez zmian.
  2. Przechowuj lokalny klucz w pliku z prawami 0600.
  3. Pierwszą próbę wykonaj w odłączonej kopii repozytorium.
  4. Usuń polecenia wdrożeniowe i sekrety.
  5. Ustaw limit kontekstu zgodny z serwerem.
  6. Niezależnie sprawdź format narzędzi i wznowienie sesji.
  7. Zachowaj sprawdzony profil lub zatwierdzone API jako rozwiązanie zapasowe.
  8. Po każdej aktualizacji Codex, vLLM albo szablonu czatu powtórz krótki test podstawowy.

Syntalith wdraża lokalne modele do pracy z kodem, w tym zgodne klienty, testy integracji i ograniczenia narzędzi. Możemy skonfigurować Twój komputer lub środowisko zespołu. Na Kursie AI-Native przećwiczysz też ocenę wygenerowanej zmiany i reakcję na błędy agenta.

OpenAI Select Partner

Syntalith ma status OpenAI Select Partner w OpenAI Partner Network.

Pomagamy szybciej odpowiadać klientom i znajdować informacje w firmowych dokumentach. Dobieramy i wdrażamy narzędzia AI, a Twój zespół uczymy z nich korzystać.

Jak wdrożyć ChatGPT i OpenAI w firmie

Oceńmy prywatne AI w warunkach Twojej firmy

Pomagamy firmom i osobom prywatnym dobrać sprzęt, uruchomić model i sprawdzić go na własnych zadaniach. Możesz zacząć od komputera, który już masz, albo od rozmowy przed zakupem. Pierwsza rozmowa jest bezpłatna, a wycenę przygotowujemy po ocenie zadania i sprzętu.

Prywatne modele LLM i fine-tuning
Porozmawiaj o prywatnym AI