바로 실행 가능한 코드 예제
환경 설정, 모델 선택, 오류 처리 및 실행 명령을 포함한 Python 및 Node.js의 완전한 Chat Completions 프로그램입니다.
아래 두 프로그램은 동일한 작업을 수행합니다: 환경 변수를 읽고, 비 스트리밍 텍스트 요청을 한 번 발행하며, 답변 또는 위치를 파악할 수 있는 오류를 출력합니다. 예제는 자동 재시도를 비활성화하여 단일 요청 결과를 확인하기 쉽게 합니다.
1. 환경 변수 준비
제목이 “1. 환경 변수 준비”인 섹션프로그램을 실행하는 동일한 터미널에서 설정합니다. ONEZHE_MODEL은 사용 가능한 모델 목록의 ID로 교체할 수 있습니다.
export ONEZHE_API_KEY="sk-你的Key"export ONEZHE_MODEL="gpt-5.6-sol"$env:ONEZHE_API_KEY = "sk-你的Key"$env:ONEZHE_MODEL = "gpt-5.6-sol"2. 언어 선택하여 실행
제목이 “2. 언어 선택하여 실행”인 섹션Python
제목이 “Python”인 섹션python -m pip install openai을 설치하고, chat.py로 저장한 후, python chat.py을 실행합니다.
import osimport sysimport openai
api_key = os.environ.get("ONEZHE_API_KEY")if not api_key: sys.exit("请先设置 ONEZHE_API_KEY 环境变量。")
client = openai.OpenAI( api_key=api_key, base_url="https://1zheai.com/v1", timeout=120.0, max_retries=0,)try: response = client.chat.completions.create( model=os.environ.get("ONEZHE_MODEL", "gpt-5.6-sol"), messages=[{"role": "user", "content": "用一句中文解释 DNS。"}], ) if not response.choices: sys.exit("响应没有 choices,请检查响应协议。") choice = response.choices[0] print(choice.message.content or "本次响应没有普通文本。") print("finish_reason:", choice.finish_reason) print("response_id:", response.id)except openai.APIStatusError as exc: print("HTTP:", exc.status_code, "request_id:", exc.request_id, file=sys.stderr) print("请查看控制台日志和错误码文档;不要公开密钥。", file=sys.stderr) sys.exit(1)except openai.APIConnectionError: sys.exit("连接失败或超时:检查网络与代理,再核对调用日志。")Node.js
제목이 “Node.js”인 섹션npm install openai을 설치하고, chat.mjs로 저장한 후, node chat.mjs을 실행합니다. .mjs 확장자를 사용하면 ES Module을 바로 활성화할 수 있습니다.
import OpenAI from "openai";
if (!process.env.ONEZHE_API_KEY) { console.error("请先设置 ONEZHE_API_KEY 环境变量。"); process.exit(1);}const client = new OpenAI({ apiKey: process.env.ONEZHE_API_KEY, baseURL: "https://1zheai.com/v1", timeout: 120_000, maxRetries: 0,});try { const response = await client.chat.completions.create({ model: process.env.ONEZHE_MODEL || "gpt-5.6-sol", messages: [{ role: "user", content: "用一句中文解释 DNS。" }], }); const choice = response.choices[0]; if (!choice) throw new Error("响应没有 choices,请检查响应协议。"); console.log(choice.message.content || "本次响应没有普通文本。"); console.log("finish_reason:", choice.finish_reason); console.log("response_id:", response.id);} catch (error) { if (error instanceof OpenAI.APIError) { console.error("HTTP:", error.status, "request_id:", error.request_id); console.error("请检查网络、控制台日志和错误码文档。"); } else { console.error(error instanceof Error ? error.message : "未知错误"); } process.exitCode = 1;}3. 결과 확인
제목이 “3. 결과 확인”인 섹션답변과 종료 이유가 표시되어야 합니다. finish_reason이 stop이 아닌 경우, 도구 호출 또는 잘림 여부를 확인합니다. SDK의 요청 ID는 비어 있을 수 있습니다. 서버가 추적 ID를 오류 본문에 넣을 수도 있으므로, 디버깅 시 마스킹된 원본 응답에서 보완합니다.
호출 로그에서 호출을 확인합니다. 프로그램의 종료 상태와 일반 텍스트 유무만으로는 모든 비즈니스 성공 조건을 충족할 수 없으므로, 작업에 따라 구조와 내용을 확인합니다.
계속 확장하기
제목이 “계속 확장하기”인 섹션- Chat Completions: 다중 대화 기록 및 필드 설명.
- Messages: Claude 네이티브 콘텐츠 블록.
- Responses: GPT Responses 및 스트리밍 이벤트.
- 이미지 생성: 이미지 파일 생성 및 저장.
- 타임아웃 및 재시도: 출시 전 실패 처리 구성.
