สร้าง response
ร้องขอการตอบสนองของโมเดลด้วยรูปแบบคำขอของ OpenAI Responses API (input/instructions) โดยแปลงเป็นรูปแบบ Chat Completions ภายในแล้วจัดเส้นทางไปยังโมเดลที่รองรับใด ๆ — นี่คือชั้นแปล ไม่ใช่เส้นทางการอนุมานแยกต่างหาก นี่คือเอนด์พอยต์แบบไม่มีสถานะ: การส่ง store: true หรือ previous_response_id ที่ไม่ใช่ null จะคืนค่า 400 (ดูรูปแบบข้อผิดพลาดเฉพาะที่รายการ 400 ด้านล่าง) — แต่ละคำขอต้องมีบทสนทนาทั้งหมดใน input เมื่อสตรีม reasoning จะแสดงผ่านเหตุการณ์ response.reasoning_text.delta และ output item ชนิด type:"reasoning"
/api/v1/responsesการอนุญาต
Authorizationจำเป็นAPI key เป็น bearer token ใน header Authorization
Body
modelจำเป็นโมเดลที่จะใช้ ในรูปแบบมีคำนำหน้าผู้ให้บริการ เช่น "openai/gpt-5.2"
"openai/gpt-5.2"inputจำเป็นอินพุตของบทสนทนา — สตริงเดี่ยว หรืออาร์เรย์รายการที่มีโครงสร้าง (message/function_call/function_call_output) ข้อความสามารถใช้ข้อความล้วนหรืออาร์เรย์บล็อกเนื้อหาที่มี input_image
instructionsคำสั่งระดับระบบ ถูกแทรกเป็นข้อความ system แรกที่ด้านหน้าของอาร์เรย์ messages ที่แปลงแล้ว
streamtrue จะสตรีมการตอบกลับเป็นเหตุการณ์ SSE ของ Responses API (response.created, response.output_item.added, response.output_text.delta, response.reasoning_text.delta, response.completed และอื่น ๆ); ละไว้หรือ false จะคืนค่าการตอบกลับ JSON เดียว
max_output_tokensจำนวนโทเค็นสูงสุดที่การตอบกลับสามารถสร้างได้ (แปลงเป็น max_tokens ของ Chat Completions ที่ upstream)
toolsรายการนิยามเครื่องมือ/ฟังก์ชันที่โมเดลสามารถเรียกใช้ได้ รับรูปแบบแบนตามสเปก Responses {type:"function", name, description, parameters} (แนะนำ) และรูปแบบซ้อนของ Chat Completions {type:"function", function:{...}} (รับไว้เพื่อความเข้ากันได้ย้อนหลัง ส่งต่อตามเดิม) ฟิลด์ tools ของอ็อบเจ็กต์การตอบกลับจะสะท้อนค่าที่ส่งมาจริงที่นี่
tool_choiceควบคุมว่าโมเดลจะถูกบังคับให้เรียกเครื่องมือหรือไม่/อย่างไร เช่น {type:"function", name:"..."} (รูปแบบแบน แนะนำ แปลงอัตโนมัติสำหรับ upstream) หรือ "auto" ฟิลด์ tool_choice ของอ็อบเจ็กต์การตอบกลับจะสะท้อนค่าที่ส่งมาที่นี่ ค่าเริ่มต้นเมื่อละไว้คือ "auto"
parallel_tool_callsอนุญาตให้เรียกเครื่องมือแบบขนานเมื่อมี tools หรือไม่ ค่าเริ่มต้นเมื่อละไว้คือ true ฟิลด์ parallel_tool_calls ของอ็อบเจ็กต์การตอบกลับจะสะท้อนค่าที่ส่งมาที่นี่
pluginsอาร์เรย์ปลั๊กอิน (เช่น {id:"web"} เพื่อเปิดค้นหาเว็บ) รองรับเฉพาะบางเส้นทางโมเดล ไม่มีผลกรณีอื่น ตัวแปรโมเดล :online จะแทรก {id:"web"} อัตโนมัติเฉพาะเมื่อคุณไม่ได้ส่ง plugins มา ก็จำกัดเฉพาะเส้นทางที่รองรับเช่นกัน
store⚠️ เอนด์พอยต์นี้ไม่มีสถานะ — การส่ง true จะคืนค่า 400 ทันที ไม่เคยถูกยอมรับหรือละเว้นอย่างเงียบ ๆ การละไว้หรือส่ง false เป็นวิธีใช้ที่ถูกต้องเพียงอย่างเดียว
previous_response_id⚠️ เอนด์พอยต์นี้ไม่มีสถานะ — การส่งค่าใด ๆ ที่ไม่ใช่ null จะคืนค่า 400 ทันที ไม่เคยถูกยอมรับหรือละเว้นอย่างเงียบ ๆ หากต้องการดำเนินบทสนทนาต่อ ให้ส่งประวัติทั้งหมดในอาร์เรย์ input แทน
modelsรายการโมเดลสำรอง — ลองตามลำดับ ใช้ก็ต่อเมื่อกลุ่มตัวเลือกของโมเดลหลักหมดแล้วเท่านั้น
reasoningอ็อบเจ็กต์ควบคุมการคิดของโมเดล reasoning (เช่น {effort, max_tokens}) ส่งต่อไปยัง upstream ตามเดิม — ไม่มีการเติมค่าเริ่มต้น
reasoning_effortฟิลด์แบบย่อของ reasoning.effort
lowmediumhighthinkingงบประมาณโทเค็นเพิ่มเติมของ extended thinking ของ Claude (เช่น {type:"enabled", budget_tokens:2048}) เพิ่มเติมจาก max_output_tokens — ส่งต่อตามเดิม ไม่มีการเติมค่าเริ่มต้น
enable_thinkingสวิตช์เปิด/ปิด thinking สำหรับโมเดลตระกูล Qwen3/GLM ส่งต่อตามที่ผู้ใช้เลือกไว้