รัน Open Interpreter บน custom OpenAI-compatible endpoint

Updated 2026-07-30

Open Interpreter เปิด api_base ให้ตั้งค่าได้ตรง ๆ ตั้งเป็น https://api.apisrouter.com/v1 เติม prefix openai/ ให้ id ของโมเดลเพื่อให้ LiteLLM พูดภาษา chat completions แล้วโมเดลที่เขียนและรันโค้ดบนเครื่องคุณจะเป็น id ใดก็ได้ในแคตตาล็อกหลัง key เดียว

คำตอบสั้น ๆ: api_base บวก prefix โมเดล openai/

Open Interpreter มีเอกสารระบุเส้นทาง custom-endpoint ในทั้งสอง interface บน CLI ส่ง --api_base พร้อม endpoint และ --model พร้อม prefix openai/ บน id ใน Python ตั้ง interpreter.llm.api_base, interpreter.llm.api_key และ interpreter.llm.model ก่อนเรียก chat() prefix ไม่ใช่การตกแต่ง Open Interpreter รันบน LiteLLM และ LiteLLM ตัดสิน client provider ไหนจากสตริงโมเดล openai/claude-sonnet-4-6 หมายความว่า "พูดโปรโตคอล chat-completions ของ OpenAI กับ api_base ไม่ว่ามันจะระบุอะไร ด้วย claude-sonnet-4-6 เป็นฟิลด์ model" ถ้าทิ้ง prefix LiteLLM จะเดา provider จากชื่อเปล่าแทน route id แบบ claude-* ไปที่ client ของ Anthropic และเมิน endpoint ที่คุณตั้งค่าไว้

export OPENAI_API_KEY=sk-APIsRouter-...

interpreter \
  --api_base https://api.apisrouter.com/v1 \
  --model openai/claude-sonnet-4-6

Open Interpreter ทำอะไรกับโมเดลของมัน

Open Interpreter (openinterpreter บน GitHub มีดาวประมาณ 66K) ให้ language model มี code interpreter บนเครื่องของคุณ: คุณระบุเป้าหมายเป็นภาษาธรรมชาติ โมเดลเขียน Python หรือ shell, Open Interpreter รันมันในเครื่อง แล้ว output ป้อนกลับเข้าบทสนทนาสำหรับขั้นต่อไป loop นั้นทำให้มันต่างจาก chat client เชิงคุณภาพ โมเดลไม่ได้สร้างร้อยแก้ว มันสร้างโค้ดที่รันด้วยสิทธิ์ของผู้ใช้คุณ และมันทำซ้ำโดยอิง error จริงจากระบบจริงของคุณ ผลที่ตามมามีสองอย่างสำหรับ routing อย่างแรก คุณภาพโมเดลคือคุณสมบัติด้านความปลอดภัยและความถูกต้องโดยตรง: โมเดลที่ hallucinate flag หรืออ่าน traceback ผิดจะสร้าง round trip ที่ล้มเหลวอีกครั้ง และในโหมด auto-run มันสร้าง round trip ที่คุณไม่ได้ตรวจสอบ อย่างที่สอง loop นี้หิว token ในแบบเฉพาะ: ทุก turn ส่งบทสนทนา, โค้ด และ output ที่จับไว้กลับไปซ้ำ ดังนั้น session แก้บั๊กยาวจะทบต้น context เร็ว การตั้งค่า api_base ย้าย loop ทั้งหมดนี้ไปที่ endpoint เดียว เพราะฟิลด์ model ถูกส่งผ่านเป็นสตริงธรรมดาหลัง prefix openai/ id ของ Claude, id ของ GPT และ id ของ DeepSeek เป็นตัวเลือกที่สลับกันได้ด้วย flag เดียวแทนที่จะเป็นการตั้งค่า provider แยกกัน

ตั้งค่าแบบเต็ม: Python API และ profile

เส้นทาง Python ตั้งค่าสามค่าเดียวกันบน interpreter.llm และเพิ่มสองการตั้งค่าที่ LiteLLM ค้นหาเองไม่ได้สำหรับ id กำหนดเอง: context_window และ max_tokens Open Interpreter ใช้ context_window ตัดสินว่าจะเก็บประวัติบทสนทนาไว้แค่ไหนก่อนตัดทิ้ง ดังนั้นการปล่อยไว้ไม่ตั้งค่าหรือใช้ค่าเริ่มต้นบนโมเดล 200k จะตัดทิ้งเร็วกว่าที่จำเป็นมาก ประกาศสิ่งที่โมเดลรองรับจริง สำหรับการตั้งค่าถาวร key เดียวกันอยู่ใน profile YAML ใต้ block llm: (เปิดไดเรกทอรี profile ด้วย interpreter --profiles) profile เก็บ endpoint, โมเดล และการตั้งค่า window ให้พ้นจากประวัติ shell ของคุณ และทำให้ configuration แชร์ข้ามเครื่องได้ โดย key ยังคงมาจาก environment

import os
from interpreter import interpreter

interpreter.llm.api_base = "https://api.apisrouter.com/v1"
interpreter.llm.api_key = os.environ["APISROUTER_API_KEY"]
interpreter.llm.model = "openai/claude-sonnet-4-6"

# LiteLLM cannot infer these for a custom id; declare them:
interpreter.llm.context_window = 200000
interpreter.llm.max_tokens = 8192
interpreter.llm.supports_functions = True

interpreter.chat("Profile data.csv and plot the top 10 rows by revenue.")

เลือกโมเดลที่เขียนโค้ดของคุณ

การเปรียบเทียบโมเดลตรงนี้เป็นรูปธรรมอย่างผิดปกติ: ให้โมเดลสองตัวทำงานเดียวกันแล้วนับ round trip จนได้ผลลัพธ์ที่ใช้งานได้ มุมมอง usage ต่อ key เพิ่มต้นทุน token ต่อ session ซึ่งรวมกับจำนวน round trip คือการเปรียบเทียบทั้งหมด หลัง endpoint เดียว ผู้สมัครแต่ละคนคือ flag เดียว

  • loop หลักต้องการโมเดลที่เขียนโค้ดที่รันได้และอ่าน traceback ได้ดีตั้งแต่รอบแรก claude-sonnet-4-6 และ gpt-5.5 คือค่ากลางที่ไว้ใจได้ และทุก round trip ที่ล้มเหลวที่โมเดลดีกว่าช่วยหลีกเลี่ยงคือ token และเวลาที่ประหยัดได้
  • deepseek-v4-pro เป็นผู้สมัครที่แข็งแกร่งสำหรับ session ที่โค้ดหนักซึ่งปริมาณสำคัญ ผ่าน endpoint เดียว การทดลองมันกับงานของคุณเองคือการเปลี่ยน --model ครั้งเดียว
  • session งานยูทิลิตี้เร็ว (เปลี่ยนชื่อไฟล์, แปลงรูปแบบครั้งเดียว, แปลงไฟล์) ไม่ต้องการ reasoning แบบ frontier claude-haiku-4-5-20251001 หรือ glm-5.2 ทำให้มันเร็วและถูก
  • โหมด auto-run (-y) ตัดขั้นตอนการตรวจสอบของมนุษย์ระหว่างการสร้างโค้ดกับการรันออกไป ถ้าคุณจะใช้มัน ใช้กับโมเดลที่แข็งแกร่งที่สุดที่คุณรัน ในแซนด์บ็อกซ์หรือ container และอย่าใช้กับโมเดลที่คุณยังทดลองประเมินอยู่

จ่ายตามการใช้งาน · ถูกกว่าราคาทางการ

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

โมเดลราคาทางการราคาของเรา
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
GLM-5.2$1.14 / $4.00 per M$1.10 / $4.00 per M

รูปแบบความล้มเหลวเฉพาะของ Open Interpreter

id โมเดลเปล่า ๆ route อ้อม endpoint ของคุณ ถ้าไม่มี prefix openai/ LiteLLM จะ resolve provider จากชื่อ: id แบบ claude-* จะมุ่งไปที่ client ของ Anthropic และผลลัพธ์คือ auth หรือ routing error ต่อ host ที่คุณไม่เคยตั้งค่า ถ้า error พูดถึง vendor SDK แทนที่จะเป็น gateway ของคุณ แสดงว่าขาด prefix สมมติฐาน context เริ่มต้นตัด session ของคุณ สำหรับ id ที่ LiteLLM ไม่รู้จัก ไม่มีอะไรเติม context window ให้ Open Interpreter จะตกกลับไปที่พฤติกรรมระมัดระวังและตัดประวัติเร็ว ประกาศ context_window อย่างชัดเจน เพราะ session แก้บั๊กที่สูญเสียความพยายามก่อนหน้าจะทำผิดพลาดเดิมซ้ำ session ที่เติบโต บิลที่เติบโต แต่ละ turn ส่งบทสนทนาบวกโค้ดบวก output ที่จับไว้กลับไปซ้ำ session ที่วาง dataframe ขนาดใหญ่หรือ log ยาวลงใน loop จะพกมันไปในทุก request ถัดไป ควรให้โมเดลเขียนโค้ดที่ตรวจสอบไฟล์แทนการวางเนื้อหาไฟล์ลงในแชท และเริ่ม session ใหม่เมื่องานเปลี่ยน ความไม่ตรงกันของ function-calling Open Interpreter ใช้ structured function call ได้ในที่ที่รองรับ flag supports_functions มีไว้สำหรับ id ที่การตรวจจับเดาผิด ถ้า code block มาผิดรูปบนโมเดลที่คุณรู้ว่ามีความสามารถ ให้ตั้งเป็น True อย่างชัดเจน ถ้าโมเดลไม่มี tool support จริง ๆ ให้ตั้งเป็น False เพื่อให้ fallback path ทำงาน ฝั่งการรันเป็นของคุณ api_base ย้าย model traffic โค้ดยังคงรันในเครื่องด้วยสิทธิ์ของคุณ gateway ไม่ได้ทำแซนด์บ็อกซ์ให้อะไรเลย ดังนั้นเก็บ auto-run ไว้ในเฉพาะ container และให้การตรวจสอบความปลอดภัยอยู่ใน loop ทุกที่อื่น

ใครที่ route Open Interpreter ผ่าน gateway

  • นักพัฒนาที่ใช้ Open Interpreter เป็นเครื่องมืออัตโนมัติประจำวันที่ต้องการการสร้างโค้ดคุณภาพ Claude, ความหลากหลายของ GPT และ id ยูทิลิตี้ที่เร็วหลัง key เดียว
  • คนทำงานข้อมูลที่รัน loop วิเคราะห์เชิงสำรวจ ที่ session หนึ่งอาจใช้ context จำนวนมากอย่างน่าประหลาดใจ และ usage ต่อ key ทำให้ต้นทุนต่อ notebook มองเห็นได้
  • วิศวกรที่เปรียบเทียบโมเดลเขียนโค้ดด้วย round-trips-to-working ซึ่งเป็น benchmark ที่ซื่อตรงที่สุดที่มี ด้วย flag --model เดียวต่อผู้สมัคร
  • นักทดลองที่รันงาน interpreter แบบตั้งเวลาหรือใน container ที่ endpoint แบบ env-var และ secret เดียวดีกว่าชุด credential ต่อ vendor
  • นักพัฒนาที่ไม่มีสิทธิ์เข้าถึงระบบเก็บเงินของ vendor รายหนึ่ง การเข้าถึงแบบเติมเงินโดยไม่ต้องใช้บัตรตัดการพึ่งพาการสมัครต่อ provider ออกไป

ตรวจสอบ endpoint และ debug session แรก

ลิสต์โมเดลของ gateway ก่อน id หลัง openai/ ต้องตรงกับ id ที่เสิร์ฟจริงเป๊ะ รวม suffix เวอร์ชันด้วย ความล้มเหลวใน session แรกมีรูปแบบ error ที่ระบุชื่อ anthropic หรือ vendor SDK อื่นหมายความว่าขาด prefix openai/ และ LiteLLM route ตามชื่อ 401 หมายความว่า key มองไม่เห็นใน shell ที่เปิด interpreter หรือถูกตั้งไว้ในตัวแปรอื่นที่ไม่ใช่ตัวที่ใช้อยู่ เมื่อมี prefix แล้ว OPENAI_API_KEY หรือ api_key ที่ระบุชัดเจนใช้ได้ทั้งคู่ error model-not-found จาก gateway คือ id พิมพ์ผิด connection error มักหมายความว่า api_base สูญเสีย suffix /v1 client เติม /chat/completions ต่อ base ใดก็ตามที่คุณให้ เมื่อ loop กำลังรัน console ของ APIsRouter แสดงโมเดลต่อ request, จำนวน token และค่าใช้จ่าย session ของ interpreter เป็นกรณีคลาสสิกของ workload ที่รู้สึกเล็กแต่บิลปานกลาง และมุมมอง usage คือที่ที่คุณเห็นว่า session ไหนแบก token จริง ๆ

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

คำถามที่พบบ่อย

Open Interpreter รันโมเดล Claude หรือ DeepSeek ผ่าน endpoint เดียวได้ไหม?

ได้ เมื่อ api_base ชี้ไปที่ gateway และมี prefix openai/ บน id ของโมเดล LiteLLM จะพูด chat completions มาตรฐานกับ endpoint นั้นและส่งผ่าน id เป็นสตริงธรรมดา id ของ Claude, GPT, DeepSeek และ GLM ทำงานได้หมดด้วยสองการตั้งค่าเดียวกัน

ทำไม id โมเดลถึงต้องมี prefix openai/?

Open Interpreter รันบน LiteLLM ซึ่งเลือก client provider จากสตริงโมเดล prefix openai/ บังคับให้ใช้ client ของโปรโตคอล OpenAI ที่มุ่งไปที่ api_base ของคุณ id แบบ claude-* เปล่า ๆ จะ resolve ไปที่ client ของ Anthropic แทนและเมิน endpoint ของคุณ

ตัวแปร environment ตัวไหนถือ key?

เมื่อมี prefix openai/ แล้ว OPENAI_API_KEY เป็นตัวเลือกตามธรรมเนียม หรือตั้ง interpreter.llm.api_key อย่างชัดเจนใน Python หรือส่ง --api_key ทาง CLI เก็บ key ให้พ้นจาก profile และสคริปต์ environment คือที่ที่เหมาะสมสำหรับมัน

ฉันต้องตั้ง context_window ด้วยมือไหม?

สำหรับ id กำหนดเอง ต้องตั้ง LiteLLM ไม่สามารถอนุมาน window สำหรับโมเดลที่มันไม่รู้จักได้ และ Open Interpreter ตัดประวัติบทสนทนาโดยอิงตัวเลขนี้ ประกาศ window จริงของโมเดล (200000 สำหรับ id ของ Claude ในตาราง) ไม่เช่นนั้น session ยาวจะสูญเสีย context ก่อนหน้า

การ route ผ่าน gateway ทำให้ auto-run (-y) ปลอดภัยไหม?

ไม่ทำให้ปลอดภัย gateway แบก model traffic เท่านั้น โค้ดที่สร้างยังรันในเครื่องด้วยสิทธิ์ของคุณ auto-run ตัดขั้นตอนตรวจสอบออก ดังนั้นเก็บมันไว้ใน container หรือแซนด์บ็อกซ์ไม่ว่า endpoint ไหนจะเสิร์ฟโมเดล

session ของ interpreter ใช้ token กี่ตัว?

ขยายตาม turn และสิ่งที่เข้าสู่ loop: ทุก round trip ส่งบทสนทนา, โค้ด และ output ที่จับไว้กลับไปซ้ำ งานยูทิลิตี้สั้น ๆ ใช้น้อย session แก้บั๊กยาวที่วางข้อมูลลงไปทบต้นเร็ว มุมมอง usage ต่อ key ใน console ของ APIsRouter แสดงตัวเลขต่อ session จริง