/v1/responses i kieruje je
do wybranego providera modelu. Niektórzy providerzy udostępniają natywne API
kompatybilne z Responses. Inni udostępniają chat completions albo własne
natywne API czatu, więc GoModel tłumaczy request.
Zasada kompatybilności wynika z prawa Postela: GoModel tłumaczy przenośne
funkcje modeli i przyjmuje nieznane deklaracje narzędzi, nie przekazując ich
providerowi, który nie potrafi ich wykonać. Pola, które zmieniłyby znaczenie
wyniku modelu, są nadal odrzucane, gdy nie da się ich bezpiecznie przetłumaczyć.
Tryby routingu
Providerzy z tłumaczeniem na czat to m.in. natywny routing Anthropic i Gemini.
Dobrze sprawdzają się przy tekście, streamingu, wejściach multimodalnych
obsługiwanych przez docelowy adapter i pętlach function tools. Nie mogą
bezpiecznie wykonywać narzędzi hostowanych przez OpenAI.
Zachowanie funkcji
W Anthropic
text.format jest obsługiwane przez natywny structured output
providera (json_schema) albo przez instrukcję w system prompcie
(json_object) – zobacz Anthropic.
text.verbosity nie ma odpowiednika w Anthropic i jest pomijane z
ostrzeżeniem.Pole include
include prosi o dodatkowe adnotacje w elementach odpowiedzi, takie jak
reasoning.encrypted_content czy file_search_call.results. Nigdy nie zmienia
tego, co robi model, więc providerzy z tłumaczeniem na czat je akceptują i
zwracają odpowiedź bez tych adnotacji – dokładnie tak jak natywny provider,
który ich nie obsługuje. Klienty, które zawsze dołączają include, takie jak
Codex z wire_api = "responses", działają bez dodatkowej konfiguracji.
Jedynym wyjątkiem jest message.output_text.logprobs, które żąda
rzeczywistego wyniku modelu, a nie adnotacji. GoModel odrzuca je z tego samego
powodu, z którego odrzuca top_logprobs.
Narzędzia hostowane
Narzędzia hostowane są wykonywane przez providera upstream, a nie przez samo generowanie tekstu przez model. Ich payloady często odwołują się do zasobów należących do providera i stanu w czasie wykonania:web_searchi jego starszy aliasweb_search_previewzależą od implementacji wyszukiwania i schematu zdarzeń providera.file_searchodwołuje się do vector store’ów providera, np. przezvector_store_ids.computer_use_previewzależy od sesji komputera zarządzanej przez providera, środowiska wyświetlania i modelu bezpieczeństwa.
namespace są pomijane w całości, a nie spłaszczane. Spłaszczenie
zmieniłoby nazwy narzędzi i złamało kontrakt routingu klienta. tool_choice,
które wybiera pominięte narzędzie, również jest pomijane. Jeśli pominięte
zostaną wszystkie narzędzia, z przetłumaczonego requestu usuwane jest także
parallel_tool_calls.
To łagodna degradacja możliwości, a nie emulacja narzędzi hostowanych. W
szczególności odpowiedź od providera z tłumaczeniem na czat nie oznacza, że
doszło do wyszukiwania w sieci, wyszukiwania w plikach czy akcji na komputerze.
Używaj providera z natywnym Responses, gdy wynik zależy od uruchomienia
któregoś z tych narzędzi.
SDK agentów
Klienty OpenAI Agents SDK mogą komunikować się z modelami Anthropic i Gemini przez GoModel w przenośnych przepływach:- zwykłe
Runner.run(...) Runner.run_streamed(...)przez HTTP/SSE- lokalne function tools
- odtwarzanie lokalnej historii zarządzanej przez SDK
store: false, Codex, historia
zarządzana przez SDK), zawsze dołączają id elementu zwrócone przez Responses
API. GoModel usuwa to id, razem z innymi metadanymi elementów specyficznymi
dla Responses, przed wywołaniem providera czatowego, więc to samo body
odtwarzania działa u każdego providera.
W klientach Python Agents SDK ID modeli GoModel z przestrzenią nazw, takie jak
anthropic/claude-sonnet-4-20250514 i gemini/gemini-2.0-flash, wymagają
trybu przekazywania ID modelu bez zmian:
run_config przy wywoływaniu Runner.run(...) lub
Runner.run_streamed(...).