Codex에서 DeepInfra 호스팅 모델을 쓰려면 단순히 OpenAI 호환 base URL만 바꾸는 것으로는 부족할 수 있다. Codex는 Responses API 형식을 기대하는 반면, DeepInfra의 일반 OpenAI 호환 엔드포인트는 chat completions 형식이기 때문이다.
해결 방식
Bill Erickson의 DeepInfra-Codex-Shim은 로컬 Node.js 프록시를 중간에 둔다.
Codex
-> local shim /v1/responses
-> DeepInfra /v1/openai/chat/completions
-> local shim
-> Responses-shaped outputCodex는 http://127.0.0.1:8797/v1 같은 로컬 endpoint를 Responses API로 인식하고, shim은 이를 DeepInfra chat completions 요청으로 변환한다. 응답도 다시 Codex가 이해할 수 있는 Responses 형태로 바꾼다.
shim이 처리하는 것
- system, user, assistant 메시지 변환
- 함수 도구(function tools)와 함수 호출(function calls)
- 함수 호출 결과(function call outputs)
- 기본 token usage
- 모델 목록 조회
- DeepInfra streaming chunk를 Responses 스타일 SSE 이벤트로 변환
스트리밍에서 툴 호출은 특히 중요하다. chat completions 제공자는 함수명과 인자를 조각으로 보내기 때문에, shim은 조각을 누적했다가 upstream 스트림이 끝날 때 완성된 function_call 항목으로 내보낸다.
설정 예시
[model_providers.deepinfra]
name = "DeepInfra via local shim"
base_url = "http://127.0.0.1:8797/v1"
env_key = "DEEPINFRA_TOKEN"
wire_api = "responses"
[profiles.deepinfra]
model_provider = "deepinfra"
model = "deepseek-ai/DeepSeek-V4-Flash"토큰은 로컬 환경변수로 둔다.
export DEEPINFRA_TOKEN="your_deepinfra_api_token"언제 유용한가
- Codex의 하네스와 툴 호출 흐름은 유지하되 모델 공급자를 바꾸고 싶을 때
- 특정 코딩 모델을 DeepInfra 가격·성능 기준으로 벤치마크하고 싶을 때
- Responses API를 아직 직접 지원하지 않는 OpenAI 호환 제공자를 Codex에 연결할 때
단, 이 방식은 완전한 Responses API 구현이 아니라 실용적인 bridge다. 장기 운영에서는 오류 매핑, rate limit, tool call edge case, 모델별 스트리밍 차이를 별도로 검증해야 한다.
관련 문서
- codex — 파일·도구·워크플로를 자동화하는 AI 에이전트
- deepclaude — Claude Code 하네스를 DeepSeek·OpenRouter 백엔드로 쓰는 프록시
- codexsaver — 저위험 작업을 저비용 워커에 위임하는 Codex MCP 라우터
- agent-as-a-router — 코딩 작업에 맞는 모델을 경험 기반으로 라우팅하는 프레임워크
참고 자료
- Using DeepInfra models with Codex — Bill Erickson (2026-06-25)
- billerickson/DeepInfra-Codex-Shim — GitHub 저장소