Skip to content

OpenAI preset이 실제로 통과하도록 parameter style을 더했다 (ADR-0086) - #146

Merged
SonAIengine merged 1 commit into
mainfrom
feat/openai-parameter-style
Nov 3, 2026
Merged

SonAIengine merged 1 commit into
mainfrom
feat/openai-parameter-style

Conversation

@SonAIengine

Copy link
Copy Markdown
Contributor

무엇을

  • --parameter-style compatible|openai 옵션을 더했다(XGEN_OPENAI_PARAMETER_STYLE, profile parameterStyle). openai는 출력 한도를 max_completion_tokens로 보내고 temperature를 생략한다.
  • OpenAI preset을 json_object + openai style로 바꿨다.
  • model setup 출력에 parameters:, model list에 parameter_style=을 표시한다.

왜

OpenAI preset으로는 어떤 model도 setup을 통과하지 못했다. 실제 api.openai.com 요청으로 원인을 나눠 확인했다.

원인 대상 처리
max_tokens·temperature: 0 거절 추론 model(gpt-5.5, gpt-6-luna) openai style
strict json_schema가 모든 schema node에 type 요구, Step arguments에서 400 모든 OpenAI model preset을 json_object로
응답 model이 날짜 붙은 snapshot 별칭 model(gpt-5.5 등) identity 검사는 유지, snapshot ID 선택을 문서에 안내

기존 --thinking enabled는 thinking 객체를 보내서 OpenAI가 Unknown parameter로 거절하므로 대안이 되지 않는다. model ID나 hostname으로 추측하지 않고, 거절 뒤 자동 전환하지 않는다(ADR-0042/0043 원칙).

호환성

  • compatible(기본)은 digest descriptor와 profile 파일에 필드를 쓰지 않는다. 기존 profile·Run의 digest와 파일 바이트가 그대로다(기본 digest 상수 테스트 유지).
  • StoredProfile은 deny_unknown_fields라서 openai profile이 든 파일은 이전 binary가 읽지 못한다.
  • OpenAI preset의 비추론 model(gpt-4.1)도 temperature 기본값으로 동작한다. 0이 필요하면 --parameter-style compatible을 명시한다.

검증

  • 로컬(macOS arm64): cargo test --workspace --locked 773 passed / 0 failed / 4 ignored, clippy -D warnings, fmt, check-rc3-public-docs.sh
  • 실제 OpenAI(격리된 config/state, 키 미저장):
    • --provider openai setup PASS: gpt-6-luna, gpt-5.5-2026-04-23, gpt-4.1-2025-04-14. 별칭 gpt-5.5는 chat_completions_incompatible(위 3번)
    • xgen run 파일 수정 3/3(4~14초), 테스트 파일 생성+README 수정 2/2(pytest 4 passed), 출력 한도 1024에서 잘린 call 0

후속(이 PR 범위 아님)

request_rejected·chat_completions_incompatible이 code 한 줄뿐이라 원인을 알 수 없다. provider 거절 이유와 응답 model ID를 보여 주는 작업을 따로 한다.

🤖 Generated with Claude Code

OpenAI preset으로는 어떤 model도 setup을 통과하지 못했다. 실제
api.openai.com 요청으로 원인을 나눠 확인했다.

- 추론 model(gpt-5.5, gpt-6-luna)은 max_tokens와 temperature 0을 거절한다
- preset의 json_schema는 strict 모드가 모든 schema node에 type을 요구해서
  Step arguments에서 모든 model이 400으로 거절된다
- 별칭 model은 응답 model이 날짜 붙은 snapshot이라 identity 검사에서 닫힌다

--parameter-style compatible|openai(XGEN_OPENAI_PARAMETER_STYLE, profile
parameterStyle)를 더했다. openai는 출력 한도를 max_completion_tokens로
보내고 temperature를 생략한다. model ID로 추측하거나 거절 뒤 자동 전환하지
않는다. OpenAI preset은 json_object와 openai style을 쓴다.

compatible은 digest descriptor와 profile 파일에 필드를 쓰지 않으므로 기존
profile과 Run의 digest, 파일 바이트가 그대로다. 별칭 identity 검사는
완화하지 않고 snapshot ID 선택을 문서에 안내했다.

실제 OpenAI 검증(격리된 config/state, 키 미저장):
- setup PASS: gpt-6-luna, gpt-5.5-2026-04-23, gpt-4.1-2025-04-14
- run 파일 수정 3/3, 테스트 생성+README 수정 2/2(pytest 4 passed)
- 출력 한도 1024에서 잘린 call 0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SonAIengine
SonAIengine merged commit a48023d into main Nov 3, 2026
5 of 6 checks passed
@SonAIengine
SonAIengine deleted the feat/openai-parameter-style branch November 3, 2026 10:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant