เอกสาร ciyuan_market
เริ่มต้นอย่างรวดเร็ว
ciyuan_market มอบ API ที่เสถียรหนึ่งรายการสำหรับทีมการผลิตเพื่อเข้าถึงโมเดล การกำหนดเส้นทาง การสำรอง การติดตามการใช้งาน และการเรียกเก็บเงินแบบเครดิต โทเค็น LLM มาจากบัญชีผู้ให้บริการต้นฉบับบนคลาวด์องค์กรที่ได้รับความไว้วางใจ พร้อมการปกป้องความเป็นส่วนตัว ความเสถียรสูง และการตรวจสอบย้อนกลับคำขอที่สร้างขึ้นในเกตเวย์
https://api.ciyuan-market.com/apihttps://api.ciyuan-market.com/api/v1https://api.ciyuan-market.com/api/v1Authorization: Bearer <key>สร้างคีย์ API
สร้างคีย์ API ciyuan_market ในคอนโซล เก็บคีย์ไว้บนเซิร์ฟเวอร์ของคุณและอย่า เปิดเผยในโค้ดเบราว์เซอร์หรือไคลเอนต์มือถือ
กลยุทธ์คีย์ที่แนะนำ:
| ประเภทคีย์ | การใช้งานที่แนะนำ |
|---|---|
| Development key | การพัฒนาในเครื่อง, การจัดเตรียม, การทดสอบ และต้นแบบ |
| คีย์สำหรับการผลิต | สำหรับงานผลิตแบ็กเอนด์เท่านั้น |
| Integration key | Dedicated key for tools such as Cursor, Claude Code, Codex, Hermes, or OpenClaw. |
| Customer / tenant key | Optional key isolation for enterprise customers, tenant traffic, or business units. |
หมุนเวียนคีย์เมื่อการเข้าถึงของทีมเปลี่ยนแปลง เพิกถอนคีย์ที่ไม่ใช้งานแล้ว
ชี้ SDK ของคุณไปยัง ciyuan_market
ไคลเอนต์ที่เข้ากันได้กับ OpenAI ส่วนใหญ่ต้องการเพียง URL ฐานและคีย์ API ใหม่
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.CIYUAN_MARKET_API_KEY,
baseURL: "https://api.ciyuan-market.com/api/v1"
});
ส่งการเติมแชท
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/chat/completions \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "claude-sonnet-5",
"messages": [
{ "role": "user", "content": "Explain ciyuan_market in one sentence." }
]
}'
ตรวจสอบการใช้งานและยอดคงเหลือ
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/billing/balance \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
การค้นพบโมเดล
ใช้หน้าโมเดลหรือ Models API เพื่อตรวจสอบโมเดลข้อความที่พร้อมใช้งาน ข้อมูลเมตาของโมเดล รวมถึงผู้ผลิต ผู้ให้บริการ รูปแบบ ความยาวบริบท ตระกูล API ที่รองรับ ความสามารถที่รองรับ ความพร้อมใช้งาน ขีดจำกัดระดับบัญชี และราคาเครดิต
จุดเชื่อมต่อ: GET /v1/models
วัตถุประสงค์: แสดงรายการโมเดลที่พร้อมใช้งานสำหรับบัญชีปัจจุบัน
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/models \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
ตารางความสามารถ
| ความสามารถ | คำอธิบาย | ใช้โดยทั่วไปโดย |
|---|---|---|
streaming | รองรับการสตรีมเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์ | แอปแชท, ตัวแทนเขียนโค้ด, UX แบบเรียลไทม์ |
tool_calling | รองรับการเรียกเครื่องมือหรือฟังก์ชัน | ตัวแทน, ระบบอัตโนมัติเวิร์กโฟลว์, ผู้ช่วยเขียนโค้ด |
structured_outputs | รองรับเอาต์พุตที่จำกัดด้วยสคีมาหรือ JSON | การสกัดข้อมูล, ระบบอัตโนมัติเวิร์กโฟลว์, แอปองค์กร |
json_mode | สามารถส่งคืนเอาต์พุตในรูปแบบ JSON | การตอบกลับแบบโครงสร้างน้ำหนักเบา |
vision | รับอินพุตรูปภาพ | แชทหลายรูปแบบ, การวิเคราะห์ UI, ภาพหน้าจอเอกสาร |
prompt_caching | รองรับอินพุตแคชหรือการนำบริบทกลับมาใช้ใหม่ | ตัวแทนบริบทยาว, พร้อมต์ระบบที่ใช้ซ้ำ |
reasoning | รองรับการควบคุมการให้เหตุผลอย่างชัดเจนเมื่อมี | การวางแผนที่ซับซ้อน, การเขียนโค้ด, เวิร์กโฟลว์การวิเคราะห์ |
logprobs | รองรับเอาต์พุตความน่าจะเป็นของโทเค็น | การประเมิน, การจัดอันดับ, เวิร์กโฟลว์ NLP ขั้นสูง |
ตารางความเข้ากันได้ของตระกูล API
| ตระกูล API | ข้อความ | อินพุตภาพ | การเรียกเครื่องมือ | เอาต์พุตแบบโครงสร้าง | การสตรีม | หมายเหตุ |
|---|---|---|---|---|---|---|
| OpenAI Chat Completions | ใช่ | ขึ้นอยู่กับโมเดล | ขึ้นอยู่กับโมเดล | ขึ้นอยู่กับโมเดล | ใช่ | ค่าเริ่มต้นที่ดีที่สุดสำหรับตัวแทนและ SDK ที่เข้ากันได้กับ OpenAI |
| OpenAI Responses | ใช่ | ขึ้นอยู่กับโมเดล | ขึ้นอยู่กับโมเดล | ขึ้นอยู่กับโมเดล | ใช่ | แนะนำสำหรับเวิร์กโฟลว์ตัวแทนสไตล์ OpenAI รุ่นใหม่ |
| Anthropic Messages | ใช่ | ขึ้นอยู่กับโมเดล | ขึ้นอยู่กับโมเดล | ขึ้นอยู่กับโมเดล | ใช่ | ดีที่สุดสำหรับไคลเอนต์ที่เข้ากันได้กับ Claude และ Claude Code |
| ciyuan_market image generation | ไม่ | ขึ้นอยู่กับโมเดล | ไม่ | ไม่ | ไม่ | ใช้การโพลงานอะซิงโครนัสหรือเว็บฮุก |
| ciyuan_market video generation | ไม่ | ขึ้นอยู่กับโมเดล | ไม่ | ไม่ | ไม่ | ใช้การโพลงานอะซิงโครนัสหรือเว็บฮุก |
การรับรองความถูกต้อง
คำขอ API ทุกรายการใช้โทเค็นผู้ถือ เก็บคีย์ในตัวแปรสภาพแวดล้อมฝั่งเซิร์ฟเวอร์ หมุนเวียนเมื่อการเข้าถึงของทีมเปลี่ยนแปลง และบันทึกรหัสคำขอเพื่อการดีบัก
| ส่วนหัว | ค่า | หมายเหตุ |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | จำเป็นสำหรับทุกคำขอ |
Content-Type | application/json | จำเป็นสำหรับเนื้อหาคำขอ JSON |
ข้อแนะนำด้านความปลอดภัยของคีย์
- เก็บคีย์ API ไว้บนเซิร์ฟเวอร์ อย่าเปิดเผยคีย์ในโค้ดเบราว์เซอร์หรือไคลเอนต์มือถือ
- Use separate keys for development, staging, production, and third-party integrations.
- กำหนดขอบเขตคีย์ตามสภาพแวดล้อม บริการ ลูกค้า หรือผู้เช่าเมื่อมีให้
- Rotate keys after employee departures, vendor access changes, or suspected leakage.
- เก็บคีย์ในตัวจัดการความลับหรือตัวแปรสภาพแวดล้อม ไม่ใช่โค้ดต้นฉบับ
ตัวแทนเขียนโค้ด
ciyuan_market ทำงานร่วมกับตัวแทนเขียนโค้ดและเครื่องมือพัฒนา AI ที่รองรับ จุดเชื่อมต่อ
API ที่เข้ากันได้กับ OpenAI หรือ Anthropic ใช้นามแฝงการกำหนดเส้นทางเช่น
mwf/coding-auto เพื่อให้ ciyuan_market
สามารถกำหนดเส้นทางไปยังโมเดลเขียนโค้ดที่ดีที่สุดที่พร้อมใช้งาน
โดยไม่ต้องให้นักพัฒนาเปลี่ยนการกำหนดค่าเครื่องมือ
การตั้งค่าที่เข้ากันได้กับ OpenAI แบบทั่วไป
ใช้การตั้งค่านี้สำหรับ Cursor, Codex, Hermes, OpenClaw, Continue, Aider, Cline, ตัวแทนที่ใช้ LangChain, ตัวแทนที่ใช้ LlamaIndex, และรันไทม์ตัวแทนที่เข้ากันได้กับ OpenAI แบบกำหนดเอง
export OPENAI_BASE_URL="https://api.ciyuan-market.com/api/v1"
export OPENAI_API_KEY="$CIYUAN_MARKET_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"
การตั้งค่าที่เข้ากันได้กับ Anthropic แบบทั่วไป
ใช้การตั้งค่านี้สำหรับไคลเอนต์ที่เข้ากันได้กับ Claude และเครื่องมือที่คาดหวังรูปแบบ Anthropic Messages
export ANTHROPIC_BASE_URL="https://api.ciyuan-market.com/api/anthropic"
export ANTHROPIC_API_KEY="$CIYUAN_MARKET_API_KEY"
export ANTHROPIC_MODEL="mwf/coding-auto"
โมเดลตัวแทนที่แนะนำ
| กรณีการใช้งาน | นามแฝงที่แนะนำ | ข้อกำหนด |
|---|---|---|
| การเขียนโค้ดทั่วไป | mwf/coding-auto | การเรียกเครื่องมือ, การสตรีม, ความสามารถเขียนโค้ดที่แข็งแกร่ง |
| แชทเขียนโค้ดรวดเร็ว | mwf/coding-fast | เวลาแฝงต่ำและการสตรีม |
| วิเคราะห์รีโพสิทอรีขนาดใหญ่ | mwf/coding-long | บริบทยาวและเอาต์พุตที่เสถียร |
| ผู้ช่วยเขียนโค้ดที่คำนึงถึงต้นทุน | mwf/low-cost | ราคาต่ำกว่าและคุณภาพการเขียนโค้ดที่ยอมรับได้ |
| ภาพหน้าจอ UI / เขียนโค้ดด้วยการมองเห็น | mwf/vision-chat | อินพุตภาพและเอาต์พุตข้อความ |
คู่มือฉับไว Cursor
ใช้จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI
Base URL: https://api.ciyuan-market.com/api/v1
API Key: CIYUAN_MARKET_API_KEY
Model: mwf/coding-auto
ขั้นตอนที่แนะนำ:
- เปิดการตั้งค่า Cursor
- เพิ่มหรือเปิดใช้งานการกำหนดค่าคีย์ API ที่เข้ากันได้กับ OpenAI
- ตั้งค่าการแทนที่ URL ฐาน OpenAI เป็น
https://api.ciyuan-market.com/api/v1 - Add a custom model such as
mwf/coding-auto,mwf/coding-fast, ormwf/coding-long. - ใช้โมเดลที่รองรับการสตรีมและการเรียกเครื่องมือเพื่อพฤติกรรมตัวแทนที่ดีที่สุด
การแก้ไขปัญหา:
| ปัญหา | การแก้ไขที่แนะนำ |
|---|---|
| โมเดลไม่แสดง | เพิ่มชื่อโมเดลด้วยตนเองเป็นโมเดลกำหนดเอง |
| การเรียกเครื่องมือล้มเหลว | ใช้โมเดลที่มี tool_calling: true ในหน้าโมเดล |
| การสตรีมถูกขัดจังหวะ | ลองใหม่ด้วยการถดถอยหรือใช้นามแฝงการกำหนดเส้นทางพร้อมการสำรอง |
| ข้อผิดพลาด 401 | ตรวจสอบคีย์ API และ URL ฐาน |
| ข้อผิดพลาดโมเดล 404 | ยืนยันว่าโมเดลถูกเปิดใช้งานสำหรับบัญชี |
คู่มือฉับไว Claude Code
ใช้จุดเชื่อมต่อเกตเวย์ที่เข้ากันได้กับ Anthropic
export ANTHROPIC_BASE_URL="https://api.ciyuan-market.com/api/anthropic"
export ANTHROPIC_API_KEY="$CIYUAN_MARKET_API_KEY"
export ANTHROPIC_MODEL="mwf/coding-auto"
ciyuan_market รองรับเส้นทางที่เข้ากันได้กับ Anthropic นี้สำหรับ Claude Code และความเข้ากันได้ของ Anthropic SDK:
POST /api/v1/messages
ข้อกำหนดที่แนะนำ:
| ข้อกำหนด | เหตุผล |
|---|---|
| Anthropic Messages-compatible request shape | Claude Code คาดหวังข้อความสไตล์ Anthropic |
| การรองรับการสตรีม | Claude Code พึ่งพา UX การสตรีม |
| การรองรับการเรียกเครื่องมือ | จำเป็นสำหรับเวิร์กโฟลว์การเขียนโค้ดแบบตัวแทน |
| บริบทยาว | มีประโยชน์สำหรับงานระดับรีโพสิทอรี |
| การสำรองที่เสถียร | มีประโยชน์สำหรับเซสชันเขียนโค้ดที่ใช้เวลานาน |
คู่มือฉับไว Codex
ใช้ ciyuan_market เป็นผู้ให้บริการโมเดลที่เข้ากันได้กับ OpenAI แบบกำหนดเอง
ตัวอย่างการกำหนดค่าผู้ให้บริการ:
[model_providers.ciyuanmarket]
name = "ciyuan_market"
base_url = "https://api.ciyuan-market.com/api/v1"
env_key = "CIYUAN_MARKET_API_KEY"
wire_api = "responses"
model_provider = "ciyuanmarket"
model = "mwf/coding-auto"
ตัวแปรสภาพแวดล้อม:
export CIYUAN_MARKET_API_KEY="br_xxx"
โมเดลที่แนะนำ:
| โมเดล | กรณีการใช้งาน |
|---|---|
mwf/coding-auto | โมเดลตัวแทนเขียนโค้ดเริ่มต้น |
mwf/coding-long | บริบทรีโพสิทอรีขนาดใหญ่ |
mwf/coding-fast | การวนซ้ำรวดเร็วและการเปลี่ยนแปลงเล็กน้อย |
การแก้ไขปัญหา:
| ปัญหา | การแก้ไขที่แนะนำ |
|---|---|
| ข้อผิดพลาดการรับรองความถูกต้อง | Confirm env_key points to CIYUAN_MARKET_API_KEY. |
| ไม่พบโมเดล | เพิ่มนามแฝงในคอนโซล ciyuan_market หรือใช้รหัสโมเดลโดยตรง |
| ข้อผิดพลาด API Responses | Use wire_api = "responses" only for models and endpoints
that support Responses. |
| โมเดลที่รองรับเฉพาะ Chat Completions | สลับไปยัง API wire ที่เข้ากันได้กับแชทหากไคลเอนต์รองรับ |
คู่มือฉับไว Hermes
ใช้จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI เว้นแต่การปรับใช้ Hermes ของคุณกำหนดค่าไว้สำหรับ พิธีสารอื่น
export OPENAI_BASE_URL="https://api.ciyuan-market.com/api/v1"
export OPENAI_API_KEY="$CIYUAN_MARKET_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"
นโยบายโมเดลที่แนะนำ:
| งาน Hermes | โมเดล |
|---|---|
| การสร้างโค้ดทั่วไป | mwf/coding-auto |
| การดำเนินการงานเวลาแฝงต่ำ | mwf/coding-fast |
| สแกนรีโพสิทอรีบริบทยาว | mwf/coding-long |
| งานเบื้องหลังที่คำนึงถึงต้นทุน | mwf/low-cost |
คู่มือฉับไว OpenClaw
ใช้จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI สำหรับการกำหนดค่ารันไทม์ตัวแทนสไตล์ OpenAI
export OPENAI_BASE_URL="https://api.ciyuan-market.com/api/v1"
export OPENAI_API_KEY="$CIYUAN_MARKET_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"
หาก OpenClaw รองรับผู้ให้บริการหลายราย ให้กำหนดค่า ciyuan_market เป็นผู้ให้บริการที่เข้ากันได้กับ OpenAI และใช้นามแฝงการกำหนดเส้นทาง ciyuan_market สำหรับการเลือกโมเดล
{
"provider": "openai-compatible",
"base_url": "https://api.ciyuan-market.com/api/v1",
"api_key_env": "CIYUAN_MARKET_API_KEY",
"model": "mwf/coding-auto"
}
รายการตรวจสอบความเข้ากันได้ของตัวแทน
| ความสามารถ | จำเป็นสำหรับ |
|---|---|
| การสตรีม | UX ของเทอร์มินัล/เอดิเตอร์ที่ดี |
| การเรียกเครื่องมือ | การเขียนโค้ดแบบตัวแทน, การแก้ไขไฟล์, การดำเนินการคำสั่ง |
| บริบทยาว | พื้นที่เก็บข้อมูลขนาดใหญ่และการเปลี่ยนแปลงหลายไฟล์ |
| เอาต์พุตแบบโครงสร้าง | การวางแผน การแบ่งงาน เวิร์กโฟลว์อัตโนมัติ |
| อินพุตภาพ | การวิเคราะห์ภาพหน้าจอ UI และเวิร์กโฟลว์ออกแบบสู่โค้ด |
| การสำรอง | ความเสถียรของการผลิตและงานที่ใช้เวลานาน |
การใช้งานคอนโซล
คอนโซล ciyuan_market เป็นระนาบควบคุมการดำเนินงานสำหรับการเข้าถึง API ความพร้อมของโมเดล นโยบายการกำหนดเส้นทาง การมองเห็นการใช้งาน และการบริหารการเรียกเก็บเงิน มอบ มุมมองรวมศูนย์ให้ผู้ดูแลบัญชีเกี่ยวกับคีย์ โมเดล คำขอ เครดิต และ การควบคุมระดับบัญชีสำหรับการเข้าชมโมเดลการผลิต
การจัดการคีย์ API
สร้าง หมุนเวียน เพิกถอน และติดป้ายกำกับคีย์ API จากคอนโซล ใช้คีย์แยกสำหรับ การพัฒนา การจัดเตรียม การผลิต และบริการแต่ละรายการ เพื่อให้สามารถตรวจสอบและ แยกการใช้งานตามสภาพแวดล้อมหรือแอปพลิเคชัน
| แนวปฏิบัติ | คำอธิบาย |
|---|---|
| แยกสภาพแวดล้อม | Use different API keys for development, staging, and production traffic. |
| ใช้ป้ายกำกับที่สื่อความหมาย | ติดป้ายกำกับคีย์ตามแอปพลิเคชัน บริการ สภาพแวดล้อม หรือการรวมระบบ |
| หมุนเวียนเป็นประจำ | Rotate keys when access changes or credentials may have been exposed. |
| หลีกเลี่ยงการเปิดเผยฝั่งไคลเอนต์ | Keep API keys on server-side systems only. Do not expose keys in browser or mobile client code. |
| ติดตามการใช้งานคีย์ | Review request volume, credit consumption, and error patterns by key. |
รายการโมเดล
ใช้หน้าโมเดลเพื่อตรวจสอบโมเดลที่พร้อมใช้งานสำหรับบัญชี รายการโมเดลแต่ละรายการอาจ รวมถึงผู้ผลิต ผู้ให้บริการ รูปแบบ ตระกูล API ที่รองรับ ความยาวบริบท แฟล็กความสามารถ สถานะความพร้อมใช้งาน และข้อมูลราคา
| ตัวกรอง | วัตถุประสงค์ |
|---|---|
| ผู้ผลิต | Filter by model vendor such as OpenAI, Anthropic, Google, Qwen, DeepSeek, or other providers. |
| ผู้ให้บริการ | กรองตามผู้ให้บริการหรือผู้ให้บริการคลาวด์ |
| รูปแบบ | Filter by text, image, video, embedding, audio, or multimodal support. |
| ความสามารถ | Filter by streaming, tool calling, structured outputs, vision, prompt caching, or reasoning support. |
| ความพร้อมใช้งาน | ระบุโมเดลที่พร้อมใช้งานสำหรับบัญชีปัจจุบัน |
สำหรับแอปพลิเคชันการผลิต ให้ตรวจสอบความสามารถของโมเดลก่อนเปิดใช้งานการเข้าชม พารามิเตอร์และคุณสมบัติบางอย่างขึ้นอยู่กับโมเดลและอาจไม่รองรับในทุก ตระกูล API
การใช้งาน & บันทึก
มุมมองการใช้งาน & บันทึก ให้การมองเห็นการดำเนินงานของการเข้าชม API ทีมสามารถ ตรวจสอบปริมาณคำขอ โมเดลที่เลือก เป้าหมายการกำหนดเส้นทางที่แก้ไขแล้ว การใช้เครดิต เวลาแฝง รหัสข้อผิดพลาด และรหัสคำขอ
- แก้ไขปัญหาคำขอที่ล้มเหลว
- ระบุงานที่มีต้นทุนสูง
- เปรียบเทียบการใช้งานโมเดลข้ามแอปพลิเคชันและสภาพแวดล้อม
- ตรวจสอบพฤติกรรมการกำหนดเส้นทางและการสำรอง
- สืบสวนปัญหาเวลาแฝงหรือความพร้อมของผู้ให้บริการ
- ระบุรหัสคำขอเมื่อติดต่อฝ่ายสนับสนุน
การตอบกลับ API แต่ละรายการรวมหรือเปิดเผยรหัสคำขอ ciyuan_market เก็บรหัสนี้ใน บันทึกแอปพลิเคชันของคุณเพื่อให้การดีบักการผลิตและการขยายการสนับสนุนมีประสิทธิภาพมากขึ้น
การสำรอง
การสำรองเป็นกลไกความยืดหยุ่นของ ciyuan_market เมื่อโมเดลหลักหรือนโยบายการกำหนดเส้นทาง ล้มเหลว ระบบจะสลับไปยังโมเดลสำรองโดยอัตโนมัติเพื่อดำเนินการ คำขอต่อ นี่ทำให้แอปพลิเคชันของคุณตอบสนองและลดความเสี่ยงของการ หยุดชะงักของบริการ
Fallback acts like a safety net, keeping your application running smoothly even when a model failure, quota limit, or network fluctuation occurs.
ทำไมการสำรองจึงสำคัญ
ในการผลิต บริการโมเดลอาจประสบปัญหาที่คาดเดาไม่ได้หลายประการ:
- ความล้มเหลวของบริการโมเดล: API ต้นน้ำกลายเป็น ไม่พร้อมใช้งานชั่วคราวหรือหมดเวลา
- การผันผวนของประสิทธิภาพ: โหลดโมเดลสูงนำไปสู่การตอบกลับ ช้าหรือล้มเหลว
- ความล้มเหลวของการกำหนดเส้นทาง: โมเดลผู้สมัครทั้งหมดที่เลือกโดยการกำหนดเส้นทางอัจฉริยะ กลายเป็นไม่พร้อมใช้งาน
การสำรองทำให้แอปพลิเคชันของคุณพร้อมใช้งานโดยให้เส้นทางสำรองที่เชื่อถือได้
ข้อได้เปรียบหลัก
| ข้อได้เปรียบ | คำอธิบาย |
|---|---|
| ความพร้อมใช้งานสูง | การสลับระบบอัตโนมัติทำให้บริการทำงานต่อไปและลดผลกระทบของ การหยุดทำงาน |
| การสลับที่โปร่งใส | ระบบสลับโมเดลโดยอัตโนมัติ — ไม่ต้องเปลี่ยนแปลงโค้ด แอปพลิเคชัน |
| การกำหนดค่าที่ยืดหยุ่น | รองรับทั้งการกำหนดค่าระดับคำขอและระดับบัญชีสำหรับกรณี การใช้งานที่แตกต่างกัน |
| การเพิ่มประสิทธิภาพต้นทุน | เลือกโมเดลที่คุ้มค่ากว่าเป็นการสำรองเพื่อควบคุม ต้นทุนฉุกเฉิน |
| การจัดการแบบรวมศูนย์ | Configure once at the account level and it applies automatically to every request. |
การกำหนดค่าโมเดลสำรองทั่วไป
ciyuan_market รองรับการตั้งค่าโมเดลสำรองทั่วไปจากแบ็กเอนด์คอนโซล คำขอทั้งหมดใช้โมเดลนี้เป็นการสำรองโดยอัตโนมัติเมื่อล้มเหลว
วิธีการกำหนดค่า:
- Go to the หน้าการตั้งค่ากลยุทธ์ ciyuan_market.
- ค้นหาการตั้งค่า โมเดลสำรองเริ่มต้น
- เลือกโมเดลสำรองทั่วไปจากรายการแบบเลื่อนลง
- บันทึกการตั้งค่าเพื่อใช้ทันที
ข้อได้เปรียบของการกำหนดค่าทั่วไป:
- ไม่ต้องเปลี่ยนแปลงโค้ด: กำหนดค่าครั้งเดียวและใช้ทั่วโลก โดยไม่ต้องทำซ้ำการตั้งค่าในทุกคำขอ
- การจัดการแบบรวมศูนย์: จัดการนโยบายสำรองในที่เดียวเพื่อ การปรับเปลี่ยนและการติดตามที่ง่ายขึ้น
- การบำรุงรักษาที่ง่ายขึ้น: ลดความซับซ้อนของโค้ดและโอกาส เกิดข้อผิดพลาดในการกำหนดค่า
- การแทนที่ที่ยืดหยุ่น: การกำหนดค่าสำรองระดับคำขอมี ลำดับความสำคัญสูงกว่าและสามารถแทนที่การตั้งค่าทั่วไปสำหรับสถานการณ์เฉพาะ
การกำหนดค่าสำรองระดับคำขอ
สำหรับสถานการณ์ทางธุรกิจเฉพาะ คุณสามารถระบุโมเดลสำรองใน คำขอแต่ละรายการเพื่อแทนที่การกำหนดค่าทั่วไป
ระบุโมเดลสำรองด้วยพารามิเตอร์ router.fallBackModels:
{
"model": "claude-sonnet-4",
"messages": [
{
"role": "user",
"content": "Explain what quantum computing is"
}
],
"router": {
"fallBackModels": ["glm-5.2"]
}
}
กฎลำดับความสำคัญ
เมื่อมีการกำหนดค่าสำรองหลายรายการ ลำดับความสำคัญจะทำงานจากสูงสุดไปยัง ต่ำสุด:
- ระดับคำขอ
router.fallBackModels: โมเดลสำรองที่ระบุในคำขอแต่ละรายการ - โมเดลสำรองเริ่มต้นทั่วไป: โมเดลสำรองทั่วไปที่กำหนดค่า ในคอนโซล
- ไม่มีการสำรอง: หากไม่ได้กำหนดค่าทั้งสองอย่าง คำขอจะส่งกลับข้อผิดพลาด เมื่อล้มเหลว
- หากโมเดลสำรองทั้งหมดล้มเหลว ระบบจะส่งกลับเหตุผลความล้มเหลวจาก โมเดลสุดท้ายที่ลอง
- เมื่อเกิดการสำรอง การตอบกลับจะระบุโมเดลที่ใช้จริง ทำให้ ง่ายต่อการติดตามและวิเคราะห์
การบริหารบัญชี
ขึ้นอยู่กับประเภทบัญชี คอนโซลอาจรวมถึงการเปิดใช้งานโมเดลระดับบัญชี การควบคุมผู้ค้าต่อหรือผู้แจกจ่าย การกำหนดค่าการเรียกเก็บเงิน และการตั้งค่าการเข้าถึง ผู้ดูแลสามารถใช้การควบคุมเหล่านี้เพื่อจัดการการเข้าถึงโมเดล การมองเห็นการใช้งาน และ ความรับผิดชอบการเรียกเก็บเงินให้สอดคล้องกับแอปพลิเคชัน บัญชีลูกค้า หรือหน่วยธุรกิจ
รายการตรวจสอบการดำเนินงานการผลิต
| รายการ | ข้อแนะนำ |
|---|---|
| คีย์ API | ใช้คีย์การผลิตเฉพาะที่มีป้ายกำกับชัดเจน |
| โมเดล | Confirm model availability, pricing, context length, and required capabilities. |
| การกำหนดเส้นทาง | Configure routing aliases or fallback policies for critical workloads. |
| บันทึก | ตรวจสอบให้รหัสคำขอถูกบันทึกในบันทึกแอปพลิเคชัน |
| การเรียกเก็บเงิน | ยืนยันยอดคงเหลือกระเป๋าเงิน สถานะแผน และกฎการหักเครดิต |
| ขีดจำกัดอัตรา | ตรวจสอบขีดจำกัด RPM, TPM, การทำงานพร้อมกัน และงานสื่อระดับบัญชี |
| การแจ้งเตือน | Monitor usage growth, credit balance, errors, and provider availability. |
การเรียกเก็บเงิน & เครดิต
ciyuan_market ใช้โมเดลการเรียกเก็บเงินแบบเครดิตสำหรับงานโมเดลข้อความ ภาพ วิดีโอ และ งานอื่นๆ ที่รองรับ เครดิตเป็นหน่วยรวมสำหรับการใช้งานหลายโมเดลและ หลายผู้ให้บริการ เพื่อให้ทีมสามารถจัดการการใช้งานได้อย่างสม่ำเสมอข้ามรูปแบบและ ตระกูล API
ราคาโมเดลโดยละเอียดมีให้ในหน้าโมเดลหรือผ่าน API ข้อมูลเมตาของโมเดล ราคาอาจแตกต่างกันตามโมเดล ผู้ให้บริการ รูปแบบ ความละเอียด ประเภทโทเค็น ความยาวเอาต์พุต ระยะเวลางาน ประเภทบัญชี และข้อตกลงเชิงพาณิชย์
เติมเงิน & กระเป๋าเงิน
บัญชีสามารถเพิ่มเครดิตกระเป๋าเงินจ่ายตามการใช้งานสำหรับการใช้งานที่ยืดหยุ่น เครดิตกระเป๋าเงิน ใช้หลังจากเครดิตแผนรายเดือนและแพ็กเกจทรัพยากรถูกใช้หมด ยกเว้นกฎการเรียกเก็บเงิน แบบกำหนดเองที่ใช้กับบัญชี
เครดิตกระเป๋าเงินไม่หมดอายุ เว้นแต่ระบุไว้เป็นอย่างอื่นในเงื่อนไขทางพาณิชย์ที่บังคับใช้ มีค่าธรรมเนียมบริการเมื่อเติมเงินกระเป๋าเงินจ่ายตามการใช้งาน
แผนรายเดือนและแพ็กเกจทรัพยากร
ผู้ใช้หรือบัญชีแต่ละรายสามารถเลือกแผนรายเดือนที่ใช้งานอยู่หนึ่งแผน แผนรายเดือนให้ ปริมาณความจุการใช้งานที่กำหนด เงื่อนไขทางพาณิชย์ และการกำหนดค่าการเข้าถึง ระดับบัญชีสำหรับรอบการเรียกเก็บเงิน
ผู้ใช้ยังสามารถซื้อแพ็กเกจทรัพยากรหลายแพ็กเกจเพื่อเพิ่มความจุการใช้งาน แพ็กเกจ ทรัพยากรสามารถแยกการใช้งานที่ผูกมัดจากยอดคงเหลือกระเป๋าเงินจ่ายตามการใช้งานและมีประโยชน์สำหรับ การใช้งานข้อความ ภาพ วิดีโอ ปริมาณมาก หรืองานเฉพาะ
ลำดับการหักเงิน
เว้นแต่จะกำหนดค่ากฎการเรียกเก็บเงินแบบกำหนดเอง เครดิตจะถูกหักใน ลำดับต่อไปนี้:
| ลำดับความสำคัญ | แหล่งเครดิต | คำอธิบาย |
|---|---|---|
| 1 | แผนรายเดือน | ความจุการใช้งานรายเดือนที่รวมถูกใช้ก่อน |
| 2 | แพ็กเกจทรัพยากร | แพ็กเกจที่ซื้อเพิ่มถูกใช้หลังเครดิตแผนรายเดือน |
| 3 | กระเป๋าเงินจ่ายตามการใช้งาน | ยอดคงเหลือกระเป๋าเงินถูกใช้หลังเครดิตแผนและแพ็กเกจทรัพยากร |
สำหรับบัญชีที่มีเงื่อนไขทางพาณิชย์แบบกำหนดเอง ลำดับการหักเงิน กฎการหมดอายุ การใช้งาน ที่รวม และราคาอาจแตกต่างกัน กฎเฉพาะบัญชีจะแสดงในคอนโซลหรือ ระบุผ่านข้อตกลงทางพาณิชย์
ราคาที่กำหนดเอง
ราคาสามารถกำหนดเองสำหรับผู้ใช้หรือบัญชีแต่ละราย ลูกค้าองค์กร บัญชีผู้ค้าต่อ บัญชีผู้แจกจ่าย และลูกค้าที่ใช้ปริมาณมากอาจมีสิทธิ์ได้รับราคา กำหนดเอง ติดต่อฝ่ายขายเพื่อขอราคา
ราคากำหนดเองสามารถกำหนดค่าตามบัญชี โมเดล ผู้ให้บริการ รูปแบบ ภูมิภาค ปริมาณ การใช้งาน หรือข้อตกลงทางพาณิชย์ เมื่อเปิดใช้งานราคากำหนดเอง คอนโซลและ API การเรียกเก็บเงินจะแสดงราคาและกฎการหักเงินเฉพาะบัญชีเมื่อมี
หน่วยราคา
โมดอลิตี้โมเดลที่แตกต่างกันใช้หน่วยวัดที่แตกต่างกัน ciyuan_market แปลง หน่วยเหล่านี้เป็นเครดิตตามกฎการกำหนดราคาของโมเดล
| รูปแบบ | พื้นฐานราคาทั่วไป |
|---|---|
| ข้อความ | โทเค็นอินพุต โทเค็นเอาต์พุต โทเค็นอ่านแคช โทเค็นเขียนแคช โทเค็น ให้เหตุผล หรือหมวดหมู่โทเค็นเฉพาะโมเดล |
| ภาพ | โมเดล ความละเอียด จำนวนภาพที่สร้าง การใช้ภาพอินพุต โหมดแก้ไข หรือการตั้งค่าคุณภาพ |
| วิดีโอ | โมเดล ความละเอียดเอาต์พุต วินาทีที่สร้าง อัตราส่วนภาพ การใช้ภาพหรือวิดีโอ อินพุต และประเภทงาน |
| การฝัง | โทเค็นอินพุตหรือจำนวนระเบียนการฝัง |
| เสียง | ระยะเวลาอินพุต ระยะเวลาเอาต์พุต ความยาวการถอดเสียง หรือหน่วย เสียงเฉพาะโมเดล |
หน่วยราคาอาจแตกต่างกันตามโมเดล โปรดดูหน้ารายละเอียดโมเดลหรือข้อมูลเมตา ราคาก่อนเปิดใช้งานโมเดลในการผลิตเสมอ
การระบุแหล่งที่มาการใช้งาน
การใช้งาน ciyuan_market สามารถตรวจสอบได้ตามบัญชี คีย์ API โมเดล รูปแบบ หรือช่วงเวลา ซึ่งช่วยให้ทีมสามารถระบุต้นทุนให้กับแอปพลิเคชัน สภาพแวดล้อม ลูกค้า หรือ หน่วยธุรกิจภายใน
| มิติข้อมูล | คำอธิบาย |
|---|---|
| API key | จัดกลุ่มการใช้งานตามแอปพลิเคชัน บริการ หรือสภาพแวดล้อม |
| Model | เปรียบเทียบต้นทุนและปริมาณตามโมเดลที่เลือก |
| Resolved model | ตรวจสอบโมเดลจริงที่ใช้หลังการกำหนดเส้นทางหรือการสำรอง |
| รูปแบบ | แยกการใช้งานข้อความ ภาพ วิดีโอ การฝัง และเสียง |
| Time range | ตรวจสอบรอบการรายงานรายวัน รายเดือน หรือกำหนดเอง |
| Metadata | Group usage by custom request metadata such as customer ID, tenant ID, user ID, or environment. |
ยอดเครดิตคงเหลือ
ตรวจสอบจำนวนเครดิตที่พร้อมใช้งานในบัญชีของคุณ ยอดคงเหลือถูกแบ่งเป็น กระเป๋าเงินสามใบที่หักตามลำดับ: เงินช่วยเหลือแผนรายเดือน แพ็กเกจทรัพยากรที่ซื้อ และกระเป๋าเงินจ่ายตามการใช้งาน ยอดรวมทรัพยากรรวม (แผนรายเดือน + แพ็กเกจ ทรัพยากร ไม่รวมจ่ายตามการใช้งาน) ยังมีให้สำหรับติดตามการใช้งานที่รวมแยกจาก การใช้จ่ายเติมเงิน
เพื่อดึงข้อมูลนี้โดยใช้โปรแกรม ดู
GET /v1/billing/balance ใน การอ้างอิง API
รายละเอียดการใช้งาน
ตรวจสอบรายการการใช้งานแต่ละรายการแบบแบ่งหน้าตามลำดับเวลาสำหรับการรายงาน การติดตาม และการจัดสรรต้นทุนภายใน แต่ละรายการแสดงโมเดล ประเภทโมเดล (ข้อความ ภาพ หรือวิดีโอ) เครดิตที่หัก และรายละเอียดว่าการหักแต่ละรายการถูกหักจากกระเป๋าเงินใด ผลลัพธ์สามารถกรองตามช่วงเวลาเฉพาะ
เพื่อดึงข้อมูลนี้โดยใช้โปรแกรม ดู GET /v1/usage ใน
การอ้างอิง API
ประวัติธุรกรรม
ใช้ประวัติธุรกรรมเพื่อตรวจสอบการเคลื่อนไหวของเครดิต รวมถึงการเติมเงิน การจัดสรร แผน การให้แพ็กเกจทรัพยากร การหักการใช้งาน การปรับ และการแก้ไข ทางการบริหาร
เพื่อดึงข้อมูลนี้โดยใช้โปรแกรม ดู
GET /v1/billing/transactions ใน
การอ้างอิง API
คำขอที่ล้มเหลวและการคืนเงิน
ข้อผิดพลาดในการตรวจสอบ ข้อผิดพลาดการรับรองความถูกต้อง และข้อผิดพลาดการอนุญาต มักไม่ถูกเรียกเก็บเงินเพราะไม่มีการดำเนินการโมเดล คำขอที่ถึงโมเดลต้นน้ำหรือ สร้างเอาต์พุตบางส่วนอาจใช้เครดิตขึ้นอยู่กับโมเดล ผู้ให้บริการ และ สถานะการตอบกลับ
สำหรับงานภาพและวิดีโออะซิงโครนัส พฤติกรรมการเรียกเก็บเงินขึ้นอยู่กับว่างานถูก ยอมรับ เริ่ม เสร็จสิ้น ล้มเหลว หรือยกเลิก การตอบกลับรายละเอียดงานรวม ข้อมูลการใช้งานเมื่อเครดิตถูกใช้
การเติมเงิน แผนรายเดือน แพ็กเกจทรัพยากร และเครดิตที่ใช้แล้วไม่สามารถคืนได้ เว้นแต่ ระบุไว้เป็นอย่างอื่นในข้อตกลงทางพาณิชย์ที่บังคับใช้หรือตามที่กฎหมายกำหนด
การอ้างอิง API
ข้อตกลงทั่วไป
URL ฐาน
จุดเชื่อมต่อทั้งหมดให้บริการภายใต้คำนำหน้า /v1
การรับรองความถูกต้อง
การเรียกจุดเชื่อมต่อ /v1/* ใช้การรับรองความถูกต้อง
คีย์ API (ไม่ใช่ JWT) คีย์ API ส่งผ่านส่วนหัวต่อไปนี้:
| ส่วนหัว | รูปแบบ | คำอธิบาย |
|---|---|---|
Authorization | Bearer <api_key> | สไตล์ OpenAI จุดเชื่อมต่อที่เข้ากันได้กับ Anthropic ยังยอมรับ
x-api-key กับ anthropic-version: 2023-06-01 |
คีย์ที่ขาดหายไปหรือไม่ถูกต้องจะส่งกลับ 401
การตรวจสอบยอดคงเหลือล่วงหน้า
จุดเชื่อมต่อเรียกโมเดลทั้งหมดจะตรวจสอบยอดคงเหลือก่อนการดำเนินการ:
- Insufficient balance returns
Insufficient credit, mapped to:- พิธีสาร OpenAI: HTTP
400,code = insufficient_quota - พิธีสาร Anthropic: HTTP
402,type = billing_error
- พิธีสาร OpenAI: HTTP
- จุดเชื่อมต่อบางรายการยังประเมินต้นทุนขั้นต่ำต่อโมเดลสำหรับการตรวจสอบล่วงหน้าครั้งที่สอง
POST https://api.ciyuan-market.com/api/v1/chat/completions
จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI Chat Completions รองรับการสตรีมและไม่สตรีม การเรียก เครื่องมือ โหมด JSON และอินพุตหลายรูปแบบ
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
model | String | ใช่ | ชื่อโมเดล |
messages | Message[] | ใช่ | ข้อความสนทนา |
stream | Boolean | ไม่ | โหมดสตรีม ค่าเริ่มต้น false |
temperature | Double | ไม่ | อุณหภูมิการสุ่มตัวอย่าง |
max_tokens | Integer | ไม่ | โทเค็นเอาต์พุตสูงสุด |
top_p | Double | ไม่ | การสุ่มตัวอย่างนิวเคลียส |
presence_penalty | Double | ไม่ | — |
frequency_penalty | Double | ไม่ | — |
tools | Tool[] | ไม่ | นิยามเครื่องมือ |
tool_choice | String|Object | ไม่ | auto / none / required / specific
function. |
response_format | Object | ไม่ | {type, json_schema:{name,schema,strict}};
text/json_object/json_schema. |
parallel_tool_calls | Boolean | ไม่ | — |
metadata | Map | ไม่ | ข้อมูลเมตาแบบส่งผ่าน |
Message fields:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
role | String | system / user / assistant /
tool. |
content | String|Array | Plain text or multimodal content block array
([{type:"text",text},{type:"image_url",image_url:{url}}]). |
tool_call_id | String | เชื่อมโยงไปยัง tool_calls เมื่อ role=tool |
tool_calls | ToolCall[] | มีเมื่อ role=assistant เรียกเครื่องมือ |
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
type | String | ค่าคงที่ function |
function | Object | นิยามฟังก์ชัน |
function.name | String | ชื่อฟังก์ชัน |
function.description | String | คำอธิบายฟังก์ชัน |
function.parameters | Object | JSON Schema สำหรับอินพุต |
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/chat/completions \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "glm-5.2",
"messages": [{"role": "user", "content": "Describe Hangzhou in one sentence."}],
"stream": false,
"temperature": 0.7
}'
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1721380000,
"model": "glm-5.2",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "Hangzhou is ..."},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 12, "completion_tokens": 18, "total_tokens": 30}
}
ฟิลด์การตอบกลับ (ไม่สตรีม):
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสการเติมเต็ม |
object | String | ค่าคงที่ chat.completion |
created | Long | การประทับเวลาที่สร้าง (วินาที) |
model | String | ชื่อโมเดล |
choices | Choice[] | {index, message:{role, content, tool_calls?}, finish_reason}. |
usage | Object | {prompt_tokens, completion_tokens, total_tokens}. |
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสการเรียกเครื่องมือ |
type | String | ค่าคงที่ function |
function | Object | รายละเอียดการเรียกฟังก์ชัน |
function.name | String | ชื่อฟังก์ชัน |
function.arguments | Object | อาร์กิวเมนต์ฟังก์ชัน |
ตัวอย่างการตอบกลับแบบสตรีม:
data: {"object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant","content":"..."}}]}
data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"..."}}]}
data: [DONE]
POST https://api.ciyuan-market.com/api/v1/responses
จุดเชื่อมต่อที่เข้ากันได้กับ OpenAI Responses ใช้ input แทน
messages instructions แทนข้อความระบบ และ บล็อก
text แทน response_format
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
model | String | ใช่ | ชื่อโมเดล |
input | String|Array | ใช่ | สตริงธรรมดา (ข้อความผู้ใช้) หรืออาร์เรย์ออบเจ็กต์ข้อความ |
instructions | String | ไม่ | พร้อมต์ระบบ |
stream | Boolean | ไม่ | ค่าเริ่มต้น false |
max_output_tokens | Integer | ไม่ | โทเค็นเอาต์พุตสูงสุด |
temperature | Double | ไม่ | ค่าเริ่มต้น 1 |
top_p | Double | ไม่ | — |
tools | Tool[] | ไม่ | ระดับบน {type, name, description, parameters} |
tool_choice | String|Object | ไม่ | auto/none/required/{type,name}. |
text | Object | ไม่ | {format:{type, name, schema, strict}};
text/json_object/json_schema. |
metadata | Map | ไม่ | — |
previous_response_id | String | ไม่ | รหัสการตอบกลับก่อนหน้าสำหรับหลายรอบ |
parallel_tool_calls | Boolean | ไม่ | — |
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/responses \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "glm-5.2",
"input": "Describe Hangzhou in one sentence.",
"instructions": "Be concise.",
"stream": false
}'
{
"id": "resp_xxx",
"object": "response",
"model": "glm-5.2",
"status": "completed",
"created_at": 1721380000,
"output": [
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"content": [{"type": "output_text", "text": "Hangzhou is ..."}],
"status": "completed"
}
],
"usage": {"input_tokens": 12, "output_tokens": 18, "total_tokens": 30}
}
ฟิลด์การตอบกลับ (ไม่สตรีม):
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสการตอบกลับ |
object | String | ค่าคงที่ response |
model | String | ชื่อโมเดล |
status | String | เช่น completed |
created_at | Long | การประทับเวลาที่สร้าง (วินาที) |
output | Array | Output items. Message items:
{id, type:"message", role, content:[{type:"output_text",
text}], status}. Tool-call items:
{type:"function_call", id, name, call_id, arguments, status}. |
usage | Object | {input_tokens, output_tokens, total_tokens}. For Claude models,
input_tokens includes cache_read and
output_tokens includes cache_write. |
การสตรีมตามเหตุการณ์ API Responses:
| เหตุการณ์ | คำอธิบาย |
|---|---|
response.created | จุดเริ่มต้นของสตรีมการตอบกลับ |
response.output_text.delta | การอัปเดตเอาต์พุตข้อความแบบเพิ่มขึ้น |
response.completed | จุดสิ้นสุดของสตรีมการตอบกลับ |
POST https://api.ciyuan-market.com/api/v1/messages
จุดเชื่อมต่อที่เข้ากันได้กับ Anthropic Messages ยอมรับส่วนหัว
x-api-key และ anthropic-version: 2023-06-01 บล็อกเนื้อหารองรับ
text, image, tool_use, tool_result,
thinking และ redacted_thinking
| ฟิลด์ | ประเภท | จำเป็น | ฟิลด์ JSON | คำอธิบาย |
|---|---|---|---|---|
model | String | ใช่ | model | ชื่อโมเดล |
messages | Message[] | ใช่ | messages | ข้อความสนทนา |
system | String|Array | ไม่ | system | พร้อมต์ระบบ สตริงหรือ [{type,text}] |
maxTokens | Integer | ใช่ | max_tokens | โทเค็นเอาต์พุตสูงสุด |
stream | Boolean | ไม่ | stream | การสตรีม |
temperature | Double | ไม่ | temperature | — |
topP | Double | ไม่ | top_p | — |
topK | Integer | ไม่ | top_k | — |
tools | Tool[] | ไม่ | tools | นิยามเครื่องมือ (input_schema) |
toolChoice | Object | ไม่ | tool_choice | — |
metadata | Map | ไม่ | metadata | — |
thinking | Object | ไม่ | thinking | การกำหนดค่าการคิดแบบขยาย |
stopSequences | Object | ไม่ | stop_sequences | — |
anthropicBeta | Object | ไม่ | anthropic_beta | ส่วนหัวฟีเจอร์เบต้า |
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
role | String | บทบาทข้อความ เช่น user / assistant |
content | String|ContentBlock[] | ข้อความธรรมดาหรืออาร์เรย์ของบล็อกเนื้อหา |
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
type | String | One of text, image, tool_use,
tool_result, thinking,
redacted_thinking. |
text | String | มีเมื่อ type เป็น text |
source | Object | มีเมื่อ type เป็น image |
ตัวอย่างบล็อกภาพ:
{ "type": "image", "source": { "type": "base64", "media_type": "...", "data": "..." } }
{ "type": "image", "source": { "type": "url", "url": "..." } }
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
name | String | ชื่อฟังก์ชัน |
description | String | คำอธิบายฟังก์ชัน |
input_schema | Object | JSON Schema สำหรับอินพุต |
cache_control | Object | การควบคุมแคชที่เลือกได้ |
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/messages \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "Content-Type: application/json" \
--data '{
"model": "claude-sonnet-4.6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Describe Hangzhou in one sentence."}]
}'
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4.6",
"content": [{"type": "text", "text": "Hangzhou is ..."}],
"stop_reason": "end_turn",
"usage": {"input_tokens": 12, "output_tokens": 18}
}
ฟิลด์การตอบกลับ (ไม่สตรีม):
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสข้อความ |
type | String | ค่าคงที่ message |
role | String | ค่าคงที่ assistant |
model | String | ชื่อโมเดล |
content | ContentBlock[] | Response content blocks (e.g. {type:"text", text},
{type:"tool_use", ...}). |
stop_reason | String | e.g. end_turn, tool_use, max_tokens. |
usage | Object | {input_tokens, output_tokens} |
| เหตุการณ์ | คำอธิบาย |
|---|---|
message_start | จุดเริ่มต้นของสตรีมข้อความ |
content_block_start | จุดเริ่มต้นของบล็อกเนื้อหาใหม่ |
content_block_delta | การอัปเดตแบบเพิ่มขึ้นสำหรับบล็อกเนื้อหา |
content_block_stop | จุดสิ้นสุดของบล็อกเนื้อหา |
message_delta | การอัปเดตแบบเพิ่มขึ้นสำหรับข้อความ |
message_stop | จุดสิ้นสุดของสตรีมข้อความ |
GET https://api.ciyuan-market.com/api/v1/models
ส่งคืนโมเดล API ที่ออนไลน์และเปิดใช้งานทั้งหมด
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/models \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
{
"object": "list",
"data": [
{
"id": "glm-5.2",
"object": "model",
"display_name": "glm-5.2",
"created": 1721380000,
"owned_by": "Zai",
"input_modalities": ["text", "image"],
"output_modalities": ["text"],
"context_length": 128000,
"description": "..."
}
]
}
ฟิลด์ของแต่ละรายการโมเดล (data[]):
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสโมเดล |
object | String | ค่าคงที่ model |
display_name | String | ชื่อที่แสดง |
created | Long | การประทับเวลาที่สร้าง (วินาที) |
owned_by | String | เจ้าของ / ผู้ผลิต |
input_modalities | String[] | e.g. ["text","image"]. |
output_modalities | String[] | เช่น ["text"] |
context_length | Integer | ความยาวบริบทสูงสุด |
description | String | คำอธิบายโมเดล |
GET https://api.ciyuan-market.com/api/v1/models/{model}
ส่งคืนโมเดลเดียวที่มีรูปร่างเดียวกับรายการในรายการ ส่งกลับ HTTP 404 เมื่อ โมเดลไม่มีอยู่
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/models/gpt-5.5 \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
การตอบกลับสำเร็จ: ออบเจ็กต์โมเดลเดียวที่มีฟิลด์เดียวกันกับ รายการใน
/v1/models
เมื่อโมเดลไม่มีอยู่ จะส่งกลับ HTTP 404:
{"error": {"message": "The model 'xxx' does not exist", "type": "invalid_request_error", "code": "invalid_model_error"}}
GET https://api.ciyuan-market.com/api/v1/image-models
สอบถามความละเอียด อัตราส่วน และจำนวนสูงสุดที่รองรับโดยโมเดลภาพก่อน เรียก
/v1/image-generations ไม่ต้องรับรองความถูกต้อง
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสโมเดล |
object | String | ค่าคงที่ image_model |
displayName | String | ชื่อที่แสดง |
description | String | คำอธิบายโมเดล |
icon | String | URL ไอคอน |
created | Long | การประทับเวลาที่สร้าง (วินาที) |
maxCount | Integer | ภาพสูงสุดต่อคำขอ |
fileMax | Integer | ภาพอ้างอิงสูงสุด เมื่อเป็น 0 จะไม่รองรับการสร้างภาพจากภาพ |
resolutions | String[] | Supported resolutions, e.g.
["720p","1080p"]. |
ratios | String[] | Supported aspect ratios, e.g.
["1:1","3:2"]. |
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/image-models \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
{
"object": "list",
"data": [
{
"id": "gpt-image-2",
"object": "image_model",
"displayName": "GPT Image 1",
"description": "...",
"icon": "...",
"created": 1721380000,
"maxCount": 4,
"fileMax": 10,
"resolutions": ["720p", "1080p"],
"ratios": ["1:1", "3:2"]
}
]
}
GET https://api.ciyuan-market.com/api/v1/video-models
สอบถามค่า videoType ที่รองรับ ช่วงระยะเวลา ความละเอียด และ
อัตราส่วนสำหรับโมเดลวิดีโอก่อนเรียก /v1/video-generations ไม่
ต้องรับรองความถูกต้อง
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสโมเดล |
object | String | ค่าคงที่ video_model |
displayName | String | ชื่อที่แสดง |
description | String | คำอธิบายโมเดล |
icon | String | URL ไอคอน |
created | Long | การประทับเวลาที่สร้าง (วินาที) |
allowedVideoTypes | VideoTypeOption[] | รายการ videoType ที่รองรับ |
videoDurationMin | Integer | วินาทีขั้นต่ำต่อคลิป |
videoDurationMax | Integer | วินาทีสูงสุดต่อคลิป |
videoDurationSuggest | Integer[] | ขั้นระยะเวลาที่แนะนำ เช่น [5,8,10] |
resolutions | String[] | ความละเอียดที่รองรับ |
ratios | String[] | อัตราส่วนภาพที่รองรับ |
resolutionOptions | ResolutionOption[] | ชุดค่าผสมความละเอียด+อัตราส่วน+ขนาดแบบโครงสร้าง |
fileMax | Integer | เนื้อหาอ้างอิงสูงสุด |
VideoTypeOption fields:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
code | Integer | The videoType value to pass to
/v1/video-generations. |
name | String | ชื่อประเภทที่แปลแล้ว (ข้อความเป็นวิดีโอ / ภาพเป็นวิดีโอ / ...) |
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/video-models \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
{
"object": "list",
"data": [
{
"id": "sora-2",
"object": "video_model",
"displayName": "Sora 2",
"description": "...",
"icon": "...",
"created": 1721380000,
"allowedVideoTypes": [
{"code": 1, "name": "text-to-video"},
{"code": 2, "name": "image-to-video"},
{"code": 3, "name": "image-to-video (first/last frame)"}
],
"videoDurationMin": 5,
"videoDurationMax": 10,
"videoDurationSuggest": [5, 8, 10],
"resolutions": ["1080p", "720p"],
"ratios": ["16:9", "9:16"],
"fileMax": 5
}
]
}
คำอธิบายฟิลด์ระดับราคา
4 endpoint สำหรับการคิวรีโมเดล /v1/models,
/v1/models/{model}, /v1/image-models และ
/v1/video-models
จะคืนค่าราคาที่เรียกเก็บจริงสำหรับผู้เรียก (ผู้ใช้ API Key)
ซึ่งตรงกับค่าใช้จ่ายจริง และคืนค่าระดับราคาทั้งหมดของโมเดลนั้น
ความแตกต่างของชื่อฟิลด์:/v1/models /
/v1/models/{model} ใช้สไตล์ OpenAI snake_case (price_tiers);
/v1/image-models / /v1/video-models ใช้ camelCase
(priceTiers)โครงสร้างเหมือนกัน
price_tiers / priceTiers เป็น array โดยแต่ละ element
คือระดับราคา:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
outputPrice | decimal | ราคาต่อหน่วยเอาต์พุตที่มีผลสำหรับผู้เรียกปัจจุบัน |
cachePrice | decimal | ราคาแคช (โมเดลทั่วไป, ใช้สูตรการเรียกเก็บเงินแบบเก่า) |
cacheReadPrice | decimal | ราคาต่อหน่วยการอ่านแคช (เฉพาะ Bedrock Claude) |
cacheWritePrice | decimal | ราคาต่อหน่วยการเขียนแคช (เฉพาะ Bedrock Claude) |
ratio | decimal | อัตราคูณการเรียกเก็บเงิน โหมด FIXED คือ 1; โหมด RATIO คือ อัตราคูณของผู้ใช้/กลุ่ม |
mode | string | โหมดราคา:RATIO / FIXED |
planId | string | ID แผนราคาที่ตรงกัน อาจเป็น null |
โมเดลทั้งสามประเภทใช้โครงสร้างเดียวกัน ต่างกันที่การเติมฟิลด์คำอธิบายเท่านั้น ฟิลด์ที่ไม่เกี่ยวข้องเป็น null:
| ประเภทโมเดล | UNIT | ฟิลด์คำอธิบายที่มีผล |
|---|---|---|
| ข้อความ | token | region / bandMin / bandMax |
| รูปภาพ | image | resolution / clarity |
| วิดีโอ | video | resolution / clarity |
ความหมายของราคา:ค่า inputPrice / outputPrice /
cacheReadPrice / cacheWritePrice ที่คืนมา
เป็นหน่วยราคาเรียกเก็บสุดท้ายสำหรับผู้ใช้ API Key ปัจจุบัน หลังจากแก้ไขผ่าน price chain
(chain)→ guidance → ราคาฐาน ตรงกับค่าใช้จ่ายจริง
หน่วยราคาที่ผู้เรียกเห็นจะแตกต่างกันตามกลุ่ม pricing chain (reseller / distributor /
องค์กร / การตั้งค่าระดับผู้ใช้)
ยอดหักจริง = ปริมาณการใช้ ÷ quantity × ราคาต่อหน่วยที่เกี่ยวข้อง × ratio สำหรับวิดีโอที่คิดตามวินาที: ยอดหักจริง = duration × outputPrice × ratio
การจัดการขอบเขตและข้อยกเว้น (endpoint แบบอ่านอย่างเดียวจะไม่คืน 500 เนื่องจากปัญหาการตั้งค่าราคา)
| สถานการณ์ | พฤติกรรม |
|---|---|
| การแก้ไขระดับราคาเดียวล้มเหลว (นโยบายราคาปฏิเสธการเข้าถึง, การตั้งค่าขาดหาย) | ข้ามระดับนั้น บันทึก warn log แล้วแก้ไขระดับที่เหลือต่อ |
| ระดับราคาทั้งหมดของโมเดลแก้ไขไม่สำเร็จ | เป็น array ว่าง [] โมเดลยังคงคืนค่าปกติ |
| โมเดลไม่มีการตั้งค่าราคาใดๆ | เป็น array ว่าง [] |
| การแก้ไขราคาเกิดข้อยกเว้นที่ไม่ได้จัดการ | try-catch ทั้งหมด คืนค่า array ว่าง endpoint ยังคง 200 |
ตัวอย่างการตอบกลับ (/v1/models, โมเดลข้อความ):
{
"object": "list",
"data": [
{
"id": "gpt-4o",
"object": "model",
"display_name": "gpt-4o",
"context_length": 128000,
"price_tiers": [
{
"region": "GLOBAL",
"bandMin": null,
"bandMax": null,
"resolution": null,
"clarity": null,
"unit": "token",
"quantity": 1000,
"description": "ต่อ 1,000 token",
"inputPrice": 0.0025,
"outputPrice": 0.01,
"cachePrice": 0.00125,
"cacheReadPrice": 0,
"cacheWritePrice": 0,
"ratio": 1,
"mode": "RATIO",
"planId": null
}
]
}
]
}
ตัวอย่างการตอบกลับ (/v1/image-models, โมเดลรูปภาพ, โครงสร้าง
priceTiers เหมือนข้างต้น, unit คือ image):
{
"object": "list",
"data": [
{
"id": "dall-e-3",
"object": "image_model",
"displayName": "dall-e-3",
"resolutions": ["1024x1024", "1792x1024", "1024x1792"],
"priceTiers": [
{
"region": null,
"bandMin": null,
"bandMax": null,
"resolution": "1024x1024",
"clarity": "standard",
"unit": "image",
"quantity": 1,
"description": "ต่อรูป",
"inputPrice": 0,
"outputPrice": 0.04,
"cachePrice": 0,
"cacheReadPrice": 0,
"cacheWritePrice": 0,
"ratio": 1,
"mode": "RATIO",
"planId": null
}
]
}
]
}
POST https://api.ciyuan-market.com/api/v1/image-generations
ส่งงานสร้างภาพแบบอะซิงโครนัส ส่งคืน taskId
ทันที ดึงผลลัพธ์โดยโพล
GET /v1/image-generations/{taskId} หรือผ่าน เว็บฮุก
callbackUrl
model ค่า resolution / ratio ที่รองรับ
ขีดจำกัดบน count และขีดจำกัดการอัปโหลดภาพอ้างอิง (fileMax)
ต้องได้รับจาก GET /v1/image-models ก่อน
ยอมรับเฉพาะค่า ที่ระบุในสเปกของโมเดลนั้นเท่านั้น
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
text | String | ใช่ | พร้อมต์ |
model | String | ใช่ | ชื่อโมเดล |
imageUrls | String[] | ไม่ | URL ภาพอ้างอิง (ภาพเป็นภาพ) |
count | Integer | ไม่ | จำนวนภาพ (≥0) |
resolution | String | ไม่ | ความละเอียด (ดู /v1/image-models) |
ratio | String | ไม่ | อัตราส่วนภาพ |
callbackUrl | String | ไม่ | URL เว็บฮุกระดับงาน |
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/image-generations \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "seedream-4.5",
"text": "A cat drinking water by the river",
"count": 1,
"resolution": "2k",
"ratio": "1:1",
"imageUrls": []
}'
{
"code": 200,
"message": "image task is commit",
"data": {"taskId": "img_xxx"}
}
การตอบกลับข้อผิดพลาด:
// Insufficient credit
{ "code": 500, "message": "Insufficient credit" }
// Model not found
{ "code": 404, "message": "Model not found: xxx" }
GET https://api.ciyuan-market.com/api/v1/image-generations/{taskId}
โพลงานสร้างภาพ status คือ pending / success /
failed images เป็นอาร์เรย์ URL ของภาพที่แปลงเป็นสตริง JSON
text มีคำอธิบายข้อความที่โมเดลแนบมา (เช่น เอาต์พุตหลายรูปแบบของ Gemini)
หากไม่มีจะเป็น null
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/image-generations/img_xxx \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
{
"code": 200,
"message": "success",
"data": {
"taskId": "img_xxx",
"status": "success",
"errorMessage": null,
"images": "[\"https://.../1.png\"]",
"text": null
}
}
ฟิลด์ data การตอบกลับ:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
taskId | String | รหัสงาน |
status | String | pending / success / failed. |
errorMessage | String | เหตุผลความล้มเหลว null เมื่อสำเร็จ |
images | String | JSON-stringified array of image URLs, e.g.
"[\"https://.../1.png\"]". |
text | String | Model-attached text description (e.g. Gemini multimodal output);
null otherwise. |
ไม่พบงาน:
{ "code": 500, "message": "task not found" }
หากระบุ callbackUrl ไว้ตอนส่ง เซิร์ฟเวอร์จะส่งผลลัพธ์
success / failed ขั้นสุดท้ายผ่านเว็บฮุกด้วยรูปแบบ
data เดียวกัน
ตัวอย่างแบบเต็ม (ส่ง + โพล)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class ImageGenerationExample {
private static final String BASE = "https://api.ciyuan-market.com/api/v1";
private static final String API_KEY = System.getenv("CIYUAN_MARKET_API_KEY");
public static void main(String[] args) throws Exception {
HttpClient http = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10)).build();
// 1. Submit the task.
String body = "{"
+ "\"model\":\"seedream-4.5\","
+ "\"text\":\"A cat drinking water by the river\","
+ "\"count\":1,"
+ "\"resolution\":\"2k\","
+ "\"ratio\":\"1:1\","
+ "\"imageUrls\":[]"
+ "}";
HttpResponse<String> submit = http.send(
HttpRequest.newBuilder(URI.create(BASE + "/image-generations"))
.header("Authorization", "Bearer " + API_KEY)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body)).build(),
HttpResponse.BodyHandlers.ofString());
String taskId = extract(submit.body(), "taskId");
System.out.println("taskId = " + taskId);
// 2. Poll until terminal status.
String status = "pending";
while ("pending".equals(status)) {
Thread.sleep(15_000L);
HttpResponse<String> poll = http.send(
HttpRequest.newBuilder(URI.create(BASE + "/image-generations/" + taskId))
.header("Authorization", "Bearer " + API_KEY).GET().build(),
HttpResponse.BodyHandlers.ofString());
status = extract(poll.body(), "status");
System.out.println("status = " + status);
}
if (!"success".equals(status)) {
throw new RuntimeException("image generation failed: " + status);
}
// images is a JSON-stringified array of URLs.
String images = extract(pollResult(http, taskId), "images");
System.out.println("images = " + images);
}
// Minimal JSON field extractor — use Jackson/Gson in production.
private static String extract(String json, String field) {
int i = json.indexOf("\"" + field + "\":");
if (i < 0) return null;
i += field.length() + 3;
if (json.charAt(i) == '\"') {
int end = json.indexOf('\"', i + 1);
return json.substring(i + 1, end);
}
int end = i;
while (end < json.length() && "0123456789.".indexOf(json.charAt(end)) >= 0) end++;
return json.substring(i, end);
}
private static String pollResult(HttpClient http, String taskId) throws Exception {
return http.send(HttpRequest.newBuilder(URI.create(BASE + "/image-generations/" + taskId))
.header("Authorization", "Bearer " + API_KEY).GET().build(),
HttpResponse.BodyHandlers.ofString()).body();
}
}
import os
import time
import requests
BASE = "https://api.ciyuan-market.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['CIYUAN_MARKET_API_KEY']}"}
# 1. Submit the task.
resp = requests.post(
f"{BASE}/image-generations",
headers={**HEADERS, "Content-Type": "application/json"},
json={
"model": "seedream-4.5",
"text": "A cat drinking water by the river",
"count": 1,
"resolution": "2k",
"ratio": "1:1",
"imageUrls": [],
},
)
resp.raise_for_status()
task_id = resp.json()["data"]["taskId"]
print(f"taskId = {task_id}")
# 2. Poll until terminal status.
while True:
time.sleep(15)
poll = requests.get(f"{BASE}/image-generations/{task_id}", headers=HEADERS)
poll.raise_for_status()
data = poll.json()["data"]
status = data["status"]
print(f"status = {status}")
if status != "pending":
break
if status != "success":
raise RuntimeError(f"image generation failed: {data.get('errorMessage')}")
# images is a JSON-stringified array of URLs.
import json
images = json.loads(data["images"])
print(f"images = {images}")
POST https://api.ciyuan-market.com/api/v1/video-generations
ส่งงานสร้างวิดีโอแบบอะซิงโครนัส ส่งคืน taskId
ทันที ดึงผลลัพธ์โดยโพล
GET /v1/video-generations/{taskId} หรือผ่าน เว็บฮุก
callbackUrl
model ค่า videoType ที่อนุญาต ช่วงระยะเวลา
(videoDurationMin/Max) resolution /
ratio ที่รองรับ และขีดจำกัดการอัปโหลดเนื้อหาอ้างอิง (fileMax)
ต้อง ได้รับจาก GET /v1/video-models ก่อน
ยอมรับเฉพาะ รหัส videoType ที่ระบุใน
allowedVideoTypes ของโมเดลนั้นเท่านั้น
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
text | String | ใช่ | พร้อมต์ |
model | String | ใช่ | ชื่อโมเดล |
videoType | Integer | ใช่ | 1 text-to-video / 2 image-to-video (first frame) / 3 image-to-video (first+last frame) / 4 image-to-video (reference) / 5 all reference. |
imageUrls | String[] | ไม่ | URL เนื้อหาภาพ |
videoUrls | VideoUrl[]|String[] | ไม่ | URL เนื้อหาวิดีโอ |
audioUrls | String[] | ไม่ | URL เนื้อหาเสียง |
resolution | String | ไม่ | ความละเอียด |
ratio | String | ไม่ | อัตราส่วนภาพ |
duration | Long | ไม่ | วินาที (>0) |
callbackUrl | String | ไม่ | URL เว็บฮุกระดับงาน |
ตัวอย่างสำหรับแต่ละ videoType:
1. ข้อความเป็นวิดีโอ (videoType=1)
สร้างวิดีโอจากพร้อมต์ข้อความเท่านั้น ไม่ต้องมีเนื้อหาอ้างอิง
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/video-generations \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"videoType": 1,
"text": "A cat jumping on a bed",
"resolution": "480p",
"ratio": "16:9",
"duration": 4,
"model": "seedance-2.0"
}'
2. ภาพเป็นวิดีโอ - เฟรมแรก (videoType=2)
ระบุเฟรมเริ่มต้นเดียวใน imageUrls โมเดลจะสร้างวิดีโอ เริ่มจากเฟรมนั้น
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/video-generations \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"videoType": 2,
"text": "Happily shaking head",
"resolution": "480p",
"ratio": "16:9",
"duration": 4,
"model": "seedance-2.0",
"imageUrls": ["https://ciyuanmarket-flie.oss-accelerate.aliyuncs.com/test/first-frame.png"]
}'
3. ภาพเป็นวิดีโอ - เฟรมแรกและสุดท้าย (videoType=3)
ระบุทั้งเฟรมแรกและสุดท้ายใน imageUrls (ลำดับ: [first, last])
โมเดลจะสร้างวิดีโอเปลี่ยนผ่านระหว่างสอง เฟรม
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/video-generations \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"videoType": 3,
"text": "Put on the hat",
"resolution": "480p",
"ratio": "16:9",
"duration": 4,
"model": "seedance-2.0",
"imageUrls": [
"https://ciyuanmarket-flie.oss-accelerate.aliyuncs.com/test/first-frame.png",
"https://ciyuanmarket-flie.oss-accelerate.aliyuncs.com/test/last-frame.png"
]
}'
4. ภาพเป็นวิดีโอ - อ้างอิง (videoType=4)
ระบุภาพอ้างอิงหนึ่งภาพขึ้นไปใน imageUrls โมเดลจะใช้
สไตล์/เนื้อหาเป็นอ้างอิง (ไม่ใช่เฟรมแรก/สุดท้ายที่บังคับ) เพื่อสร้างวิดีโอ
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/video-generations \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"videoType": 4,
"text": "Two cats playing together",
"resolution": "480p",
"ratio": "16:9",
"duration": 4,
"model": "kling-v3-omni-video",
"imageUrls": [
"https://ciyuanmarket-flie.oss-accelerate.aliyuncs.com/test/ref-1.png",
"https://ciyuanmarket-flie.oss-accelerate.aliyuncs.com/test/ref-2.png"
]
}'
5. อ้างอิงทั้งหมด (videoType=5)
อ้างอิงภาพ / วิดีโอ / เสียงแบบผสม อ้างอิงเนื้อหาตามตำแหน่งในพร้อมต์: รายการ ที่ 1 ใน
imageUrls คือ @图片 1 รายการที่ 1 ใน
videoUrls คือ @视频 1 รายการที่ 1 ใน
audioUrls คือ @音频 1 videoUrls ยังยอมรับสตริง
URL แบบธรรมดา
curl --request POST \
--url https://api.ciyuan-market.com/api/v1/video-generations \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"videoType": 5,
"text": "Use the first-person framing of @视频 1 and @音频 1 as background music. First-person tea ad; start frame is @图片 1 ... end frame is @图片 2.",
"model": "seedance-2.0",
"imageUrls": [
"https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg",
"https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic2.jpg"
],
"videoUrls": ["https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_tea_video1.mp4"],
"audioUrls": ["https://ark-project.tos-cn-beijing.volces.com/doc_audio/r2v_tea_audio1.mp3"],
"resolution": "1080p",
"ratio": "16:9",
"duration": 11
}'
การตอบกลับการส่ง (ทั้งห้าประเภท):
{
"code": 200,
"message": "success",
"data": {"taskId": "vid_xxx"}
}
GET https://api.ciyuan-market.com/api/v1/video-generations/{taskId}
โพลงานสร้างวิดีโอ status คือ pending / success /
failed videoUrl คือ URL ของวิดีโอที่สร้างขึ้น และ
lastFrameUrl คือ URL ของเฟรมสุดท้าย (สถานการณ์ภาพเป็นวิดีโอ)
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/video-generations/vid_xxx \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
{
"code": 200,
"message": "success",
"data": {
"status": "success",
"videoUrl": "https://.../out.mp4",
"lastFrameUrl": null,
"message": null
}
}
ฟิลด์ data การตอบกลับ:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
status | String | pending / success / failed. |
videoUrl | String | URL วิดีโอที่สร้าง |
lastFrameUrl | String | Last-frame URL (image-to-video scenarios); null otherwise. |
message | String | เหตุผลความล้มเหลว null เมื่อสำเร็จ |
หากระบุ callbackUrl ไว้ตอนส่ง เซิร์ฟเวอร์จะส่งผลลัพธ์ขั้นสุดท้าย
ผ่านเว็บฮุกด้วยรูปแบบ data เดียวกัน
ตัวอย่างแบบเต็ม (ส่ง + โพล)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class VideoGenerationExample {
private static final String BASE = "https://api.ciyuan-market.com/api/v1";
private static final String API_KEY = System.getenv("CIYUAN_MARKET_API_KEY");
public static void main(String[] args) throws Exception {
HttpClient http = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10)).build();
// 1. Submit the task (videoType=1: text-to-video).
String body = "{"
+ "\"videoType\":1,"
+ "\"text\":\"A cat jumping on a bed\","
+ "\"resolution\":\"480p\","
+ "\"ratio\":\"16:9\","
+ "\"duration\":4,"
+ "\"model\":\"seedance-2.0\""
+ "}";
HttpResponse<String> submit = http.send(
HttpRequest.newBuilder(URI.create(BASE + "/video-generations"))
.header("Authorization", "Bearer " + API_KEY)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body)).build(),
HttpResponse.BodyHandlers.ofString());
String taskId = extract(submit.body(), "taskId");
System.out.println("taskId = " + taskId);
// 2. Poll until terminal status. Video tasks take longer — poll every 20s.
String status = "pending";
String lastBody = null;
while ("pending".equals(status)) {
Thread.sleep(20_000L);
HttpResponse<String> poll = http.send(
HttpRequest.newBuilder(URI.create(BASE + "/video-generations/" + taskId))
.header("Authorization", "Bearer " + API_KEY).GET().build(),
HttpResponse.BodyHandlers.ofString());
lastBody = poll.body();
status = extract(lastBody, "status");
System.out.println("status = " + status);
}
if (!"success".equals(status)) {
throw new RuntimeException("video generation failed: " + status);
}
String videoUrl = extract(lastBody, "videoUrl");
System.out.println("videoUrl = " + videoUrl);
}
// Minimal JSON field extractor — use Jackson/Gson in production.
private static String extract(String json, String field) {
int i = json.indexOf("\"" + field + "\":");
if (i < 0) return null;
i += field.length() + 3;
if (json.charAt(i) == '\"') {
int end = json.indexOf('\"', i + 1);
return json.substring(i + 1, end);
}
int end = i;
while (end < json.length() && "0123456789.".indexOf(json.charAt(end)) >= 0) end++;
return json.substring(i, end);
}
}
import os
import time
import requests
BASE = "https://api.ciyuan-market.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['CIYUAN_MARKET_API_KEY']}"}
# 1. Submit the task (videoType=1: text-to-video).
resp = requests.post(
f"{BASE}/video-generations",
headers={**HEADERS, "Content-Type": "application/json"},
json={
"videoType": 1,
"text": "A cat jumping on a bed",
"resolution": "480p",
"ratio": "16:9",
"duration": 4,
"model": "seedance-2.0",
},
)
resp.raise_for_status()
task_id = resp.json()["data"]["taskId"]
print(f"taskId = {task_id}")
# 2. Poll until terminal status. Video tasks take longer — poll every 20s.
while True:
time.sleep(20)
poll = requests.get(f"{BASE}/video-generations/{task_id}", headers=HEADERS)
poll.raise_for_status()
data = poll.json()["data"]
status = data["status"]
print(f"status = {status}")
if status != "pending":
break
if status != "success":
raise RuntimeError(f"video generation failed: {data.get('message')}")
print(f"videoUrl = {data['videoUrl']}")
if data.get("lastFrameUrl"):
print(f"lastFrameUrl = {data['lastFrameUrl']}")
GET https://api.ciyuan-market.com/api/v1/billing/balance
ส่งคืนยอดคงเหลือบัญชีแบ่งเป็นกระเป๋าเงินสามใบ: แผนรายเดือน แพ็กเกจทรัพยากร และ เครดิตจ่ายตามการใช้งาน
curl --request GET \
--url https://api.ciyuan-market.com/api/v1/billing/balance \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
{
"totalCredit": 128.50,
"totalResourceCredit": 30.00,
"wallets": {
"monthlyPlan": {"id": "pkg_xxx", "credit": 50.00, "name": "Monthly plan"},
"resourcePacks": [
{"id": "rp_xxx", "credit": 30.00, "name": "Video resource pack"}
],
"payAsYouGo": 48.50
}
}
ฟิลด์การตอบกลับ:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
totalCredit | BigDecimal | ยอดคงเหลือรวม |
totalResourceCredit | BigDecimal | ผลรวมยอดคงเหลือแพ็กเกจทรัพยากร |
wallets.monthlyPlan | WalletDetail | แผนรายเดือน (null หากไม่มี) |
wallets.resourcePacks | WalletDetail[] | รายการแพ็กเกจทรัพยากร |
wallets.payAsYouGo | BigDecimal | ยอดคงเหลือจ่ายตามการใช้งาน |
WalletDetailVO fields::
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | String | รหัสกระเป๋าเงิน |
credit | BigDecimal | เครดิตคงเหลือ |
name | String | ชื่อกระเป๋าเงิน |
GET https://api.ciyuan-market.com/api/v1/usage
รายละเอียดการเรียกเก็บเงินการเรียกโมเดลแบบแบ่งหน้า สแนปชอตตามราคา
(priceSnapshotId) เรียงตามเวลาสร้างคำสั่งซื้อจากมากไปน้อย ส่งคืนเฉพาะ
ระเบียนค่าใช้จ่ายปกติ (reason = model usage) เท่านั้น
พารามิเตอร์การค้นหา:
| พารามิเตอร์ | ประเภท | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
page | Integer | ไม่ | 1 | หมายเลขหน้า เริ่มจาก 1 |
size | Integer | ไม่ | 20 | ขนาดหน้า (แบ่งหน้าตาม priceSnapshotId) |
startTime | LocalDateTime | ไม่ | — | Start time, format yyyy-MM-ddTHH:mm:ss, filters by snapshot
orderCreatedAt. |
endTime | LocalDateTime | ไม่ | — | เวลาสิ้นสุด รูปแบบ yyyy-MM-ddTHH:mm:ss |
curl --request GET \
--url "https://api.ciyuan-market.com/api/v1/usage?page=1&size=20&startTime=2026-07-01T00:00:00&endTime=2026-07-31T23:59:59" \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
ตัวห่อหุ้มการตอบกลับ:
{
"code": 0,
"message": "success",
"data": { ... }
}
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
records | UsageDetailVO[] | ระเบียนหน้าปัจจุบัน |
total | Long | จำนวนรวม |
current | Long | หน้าปัจจุบัน |
size | Long | ขนาดหน้า |
pages | Long | หน้าทั้งหมด |
UsageDetailVO fields:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
priceSnapshotId | String | รหัสสแนปชอตราคา |
taskId | String | รหัสงาน |
credit | BigDecimal | จำนวนเงินที่เรียกเก็บ |
model | String | ชื่อโมเดล |
modelType | String | text / image / video. |
inputTokens | Long | โทเค็นอินพุต null สำหรับภาพ/วิดีโอ |
outputTokens | Long | โทเค็นเอาต์พุต |
totalTokens | Long | โทเค็นรวม |
cacheReadTokens | Long | โทเค็นอ่านแคช |
cacheWriteTokens | Long | โทเค็นเขียนแคช |
imageCount | Integer | จำนวนภาพ ตั้งค่าสำหรับโมเดลภาพ |
imageResolution | String | ความละเอียดภาพ เช่น 720P |
imageRatio | String | อัตราส่วนภาพ เช่น 1:1 |
videoResolution | String | ความละเอียดวิดีโอ เช่น 1080p |
videoRatio | String | อัตราส่วนวิดีโอ เช่น 16:9 |
videoDurationSec | Long | ระยะเวลาวิดีโอเป็นวินาที |
orderCreatedAt | LocalDateTime | เวลาสร้างคำสั่งซื้อ (สแนปชอต orderCreatedAt) |
creditDetails | CreditDetailItem[] | Order details under this snapshot (from credit_order_t). |
CreditDetailItem fields:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
credit | BigDecimal | จำนวนเงินที่เรียกเก็บโดยคำสั่งซื้อนี้ |
deductionSource | String | Deduction source (Balance / Monthly Package /
Resource Package). |
packageName | String | ชื่อแพ็กเกจ null หากไม่มีแพ็กเกจ |
อนุสัญญาค่าว่าง: เฉพาะฟิลด์ที่เกี่ยวข้องกับแต่ละ modelType เท่านั้นที่
ถูกเติม ส่วนที่เหลือเป็น null text เติมฟิลด์โทเค็น
image เติม imageCount/imageResolution/imageRatio
video เติม videoResolution/videoRatio/videoDurationSec
ตัวอย่างการตอบกลับ:
{
"code": 200,
"message": "success",
"data": {
"records": [
{
"priceSnapshotId": "snap_9f3c1a2b",
"taskId": "task_5e8a1c33",
"credit": 0.0342,
"model": "glm-5.2",
"modelType": "text",
"inputTokens": 1280,
"outputTokens": 642,
"totalTokens": 1922,
"cacheReadTokens": 0,
"cacheWriteTokens": 0,
"imageCount": null,
"imageResolution": null,
"imageRatio": null,
"videoResolution": null,
"videoRatio": null,
"videoDurationSec": null,
"orderCreatedAt": "2026-07-18T14:23:11",
"creditDetails": [
{
"credit": 0.0342,
"deductionSource": "balance",
"packageName": ""
}
]
},
{
"priceSnapshotId": "snap_a12f77c0",
"taskId": "task_c71e44a2",
"credit": 1.8000,
"model": "seedance-2.0",
"modelType": "video",
"inputTokens": null,
"outputTokens": null,
"totalTokens": null,
"cacheReadTokens": null,
"cacheWriteTokens": null,
"imageCount": null,
"imageResolution": null,
"imageRatio": null,
"videoResolution": "1080p",
"videoRatio": "16:9",
"videoDurationSec": 8,
"orderCreatedAt": "2026-07-17T22:41:09",
"creditDetails": [
{
"credit": 1.5000,
"deductionSource": "Monthly Package",
"packageName": "基础月度套餐"
},
{
"credit": 0.3000,
"deductionSource": "Resource Package",
"packageName": "byteplus视频资源包"
}
]
}
],
"total": 128,
"current": 1,
"size": 20,
"pages": 7
}
}
GET https://api.ciyuan-market.com/api/v1/billing/transactions
รายการแบบแบ่งหน้าของธุรกรรมการเติมเงินที่ชำระแล้ว (status=2)
ของผู้ใช้ปัจจุบัน เรียงตาม created_at จากมากไปน้อย
| พารามิเตอร์ | ประเภท | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
page | Integer | ไม่ | 1 | หมายเลขหน้า |
size | Integer | ไม่ | 20 | ขนาดหน้า |
startTime | String | ไม่ | — | เวลาเริ่มต้น yyyy-MM-dd HH:mm:ss รวม |
endTime | String | ไม่ | — | เวลาสิ้นสุด yyyy-MM-dd HH:mm:ss รวม |
curl --request GET \
--url "https://api.ciyuan-market.com/api/v1/billing/transactions?page=1&size=20&startTime=2026-07-01%2000:00:00&endTime=2026-07-31%2023:59:59" \
--header "Authorization: Bearer $CIYUAN_MARKET_API_KEY"
ตัวห่อหุ้มการตอบกลับ:
{
"code": 0,
"message": "success",
"data": { ... }
}
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
records | TransactionVO[] | ธุรกรรมหน้าปัจจุบัน |
total | Long | จำนวนรวม |
current | Long | หน้าปัจจุบัน |
size | Long | ขนาดหน้า |
pages | Long | หน้าทั้งหมด |
TransactionVO fields:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
orderNo | String | หมายเลขคำสั่งซื้อ |
thirdPartyOrderNo | String | หมายเลขคำสั่งซื้อบุคคลที่สาม |
amount | BigDecimal | จำนวนเงินคำสั่งซื้อ |
actualAmount | BigDecimal | จำนวนเงินที่ชำระจริง |
discount | BigDecimal | จำนวนเงินส่วนลด |
paymentMethod | String | Payment method (wechat / alipay / ustd /
stripe / wallyt etc.). |
TransactionVO fields:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
serviceFeeAmount | BigDecimal | จำนวนเงินค่าธรรมเนียมบริการ |
paymentChannel | String | แพลตฟอร์มการชำระเงิน |
source | String | Order source (recharge / package_purchase etc.). |
packageName | String | Package name (set for package purchases; null for plain
recharges). |
createdAt | LocalDateTime | เวลาที่สร้าง |
{
"code": 200,
"message": "success",
"data": {
"records": [
{
"orderNo": "R20260718abc123",
"thirdPartyOrderNo": "wx_pay_xxx",
"amount": 50.00,
"actualAmount": 48.50,
"discount": 1.50,
"paymentMethod": "wechat",
"serviceFeeAmount": 0.00,
"paymentChannel": "wechat",
"source": "recharge",
"packageName": null,
"createdAt": "2026-07-18T14:23:11"
}
],
"total": 28,
"current": 1,
"size": 20,
"pages": 2
}
}
การดำเนินงาน
ข้อผิดพลาด
ciyuan_market ส่งคืนรหัสข้อผิดพลาดที่เสถียรเพื่อให้แอปพลิเคชันสามารถจัดการการลองใหม่ การสำรอง ปัญหาการเรียกเก็บเงิน และการดีบักได้อย่างสม่ำเสมอ
จุดเชื่อมต่อที่เข้ากันได้กับผู้ให้บริการจะพยายามรักษารูปร่างข้อผิดพลาด ของตระกูล API ต้นฉบับเมื่อเป็นไปได้ จุดเชื่อมต่อ ciyuan_market-native ใช้ออบเจ็กต์ข้อผิดพลาด ciyuan_market
HTTP status and error code mapping
| HTTP status | ประเภทข้อผิดพลาด | รหัสตัวอย่าง | ลองใหม่ |
|---|---|---|---|
| 400 | invalid_request_error | invalid_request, unsupported_parameter,
invalid_messages, invalid_image_url | ไม่ |
| 401 | authentication_error | missing_api_key, invalid_api_key | ไม่ |
| 402 | billing_error | insufficient_credits, payment_required,
quota_exceeded | ไม่ |
| 403 | permission_error | model_access_denied, endpoint_access_denied,
key_scope_denied | ไม่ |
| 404 | not_found_error | model_not_found, response_not_found,
task_not_found | ไม่ |
| 408 | timeout_error | gateway_timeout, provider_timeout | ใช่ |
| 409 | conflict_error | idempotency_conflict, task_already_cancelled | ขึ้นอยู่กับ |
| 422 | validation_error | schema_validation_failed, unsupported_modality | ไม่ |
| 429 | rate_limit_error | account_rpm_exceeded, account_tpm_exceeded,
provider_rate_limited | ใช่ |
| 500 | internal_error | internal_error | ใช่ |
| 502 | provider_error | provider_bad_gateway, provider_invalid_response | ใช่ |
| 503 | service_unavailable | model_unavailable, provider_unavailable,
insufficient_capacity | ใช่ |
| 504 | timeout_error | provider_timeout, gateway_timeout | ใช่ |
รหัสข้อผิดพลาดทั่วไป
| รหัส | ความหมาย | การดำเนินการที่แนะนำ |
|---|---|---|
missing_api_key | ไม่ได้ระบุคีย์ API | เพิ่มส่วนหัว Authorization |
invalid_api_key | คีย์ API ไม่ถูกต้องหรือถูกเพิกถอน | สร้างหรือหมุนเวียนคีย์ API |
model_not_found | รหัสโมเดลไม่มีอยู่หรือไม่ได้เปิดใช้งานสำหรับบัญชี | ตรวจสอบหน้าโมเดลหรือเรียก GET /v1/models |
model_access_denied | คีย์ API หรือบัญชีไม่มีสิทธิ์เข้าถึงโมเดล | เปิดใช้งานโมเดลหรือติดต่อผู้ดูแล |
unsupported_parameter | คำขอมีพารามิเตอร์ที่ไม่รองรับโดยเอนด์พอยต์หรือโมเดลที่เลือก | ลบพารามิเตอร์หรือเลือกโมเดลที่เข้ากันได้ |
unsupported_modality | รูปแบบอินพุตหรือเอาต์พุตไม่ได้รับการรองรับโดยโมเดลที่เลือก | เลือกโมเดลที่รองรับรูปแบบ |
account_rpm_exceeded | เกินขีดจำกัดคำขอต่อนาทีของบัญชี | ลองใหม่ด้วยการถดถอยหรือขอขีดจำกัดที่สูงขึ้น |
account_tpm_exceeded | เกินขีดจำกัดโทเค็นต่อนาทีของบัญชี | ลองใหม่ด้วยการถดถอย ลดโทเค็น หรือขอขีดจำกัดที่สูงขึ้น |
provider_rate_limited | ผู้ให้บริการอัปสตรีมจำกัดอัตราคำขอ | ลองใหม่หรือเปิดใช้งานการสำรอง |
insufficient_credits | บัญชีมีเครดิตไม่เพียงพอ | เติมเงินกระเป๋าเงิน ซื้อแพ็กเกจ หรืออัปเกรดแผน |
provider_timeout | ผู้ให้บริการอัปสตรีมไม่ตอบกลับในเวลาที่กำหนด | ลองใหม่หรือเปิดใช้งานการสำรอง |
model_unavailable | โมเดลไม่พร้อมใช้งานชั่วคราว | ลองใหม่หรือใช้นามแฝงการกำหนดเส้นทาง |
content_policy_error | คำขอหรือเอาต์พุตถูกบล็อกโดยนโยบายความปลอดภัย | แก้ไขอินพุตหรือเลือกเวิร์กโฟลว์ที่เหมาะสม |
MCP
คู่มือ MCP ของ ciyuan_market
รวม ciyuan_market (เกตเวย์ LLM ที่เข้ากันได้กับ OpenAI) ให้เป็นเซิร์ฟเวอร์ MCP เพื่อให้เครื่องมือ AI ของคุณสามารถเรียกใช้เอนด์พอยต์แชท โมเดล การเรียกเก็บเงิน รูปภาพ และวิดีโอของ ciyuan_market ได้โดยตรง
ฟีเจอร์
- 🤖 แชทหลาย API: รองรับเอนด์พอยต์ที่เข้ากันได้กับ OpenAI Chat Completions, Anthropic Messages และ OpenAI Responses
- 🖼️ การสร้างมัลติมีเดีย: นอกจากแชทข้อความแล้ว ยังรองรับงานแบบอะซิงโครนัสสำหรับสร้างภาพและวิดีโอ (ข้อความเป็นภาพ, ภาพเป็นภาพ, เฟรมแรก/สุดท้าย, สินทรัพย์อ้างอิง)
- 🔍 การค้นหาโมเดลและบัญชี: แสดงรายการโมเดลที่พร้อมใช้งาน รายละเอียดโมเดล ยอดคงเหลือในบัญชี รายละเอียดการใช้งาน/การเรียกเก็บเงิน และธุรกรรมการเติมเงิน
- 🔑 ส่งคีย์ผ่านส่วนหัว: การเรียกทุกครั้งจะอ่านคีย์ API จากส่วนหัวของคำขอ ดังนั้นการติดตั้งใช้งานเพียงครั้งเดียวสามารถใช้ร่วมกันได้หลายบัญชี — เซิร์ฟเวอร์จะไม่จัดเก็บหรือแคชคีย์ใด ๆ ไว้เลย
เริ่มต้นอย่างรวดเร็ว
ใช้งานผ่าน Claude Code (แนะนำ) เพิ่ม -s user เพื่อลงทะเบียนในระดับผู้ใช้
(ใช้ได้กับทุกโปรเจกต์ของคุณ)
ขั้นตอนที่ 1: เพิ่มการเชื่อมต่อ
claude mcp add --transport http ciyuanmarket https://api.ciyuan-market.com/mcp \
--header "X-Ciyuanmarket-Api-Key: <your ciyuan_market API key>" \
-s user
ขั้นตอนที่ 2: ตรวจสอบการเชื่อมต่อ
claude mcp list # should show ✓ Connected
claude mcp get ciyuanmarket # should show Scope: User config (available in all your projects)
ขั้นตอนที่ 3: เริ่มใช้งาน
คุณสามารถขอให้ Claude ทำสิ่งต่าง ๆ ได้ เช่น
- "ใช้ ciyuan_market เรียก claude-sonnet-5 แล้วเขียนบทกวีเกี่ยวกับฤดูใบไม้ร่วง"
- "แสดงรายการโมเดลที่พร้อมใช้งานในบัญชี ciyuan_market ของฉัน"
- "ตรวจสอบยอดคงเหลือและการใช้งานล่าสุดของ ciyuan_market ของฉัน"
- "ใช้ ciyuan_market สร้างภาพเมืองยามค่ำคืนสไตล์ไซเบอร์พังก์"
Claude จะเรียกใช้เครื่องมือ MCP ที่ตรงกันโดยอัตโนมัติและส่งคืนผลลัพธ์
การใช้งานกับ Claude Desktop
เพิ่มสิ่งนี้ลงในส่วน mcpServers
{
"mcpServers": {
"ciyuanmarket": {
"type": "http",
"url": "https://api.ciyuan-market.com/mcp",
"headers": {
"X-Ciyuanmarket-Api-Key": "<your ciyuan_market API key>"
}
}
}
}
การใช้งานกับ Codex CLI
แนะนำ: ใช้ env_http_headers เพื่ออ่านคีย์จากตัวแปรสภาพแวดล้อม
ตั้งค่าตัวแปรสภาพแวดล้อมในเชลล์ของคุณก่อน
export CIYUAN_MARKET_API_KEY=<your ciyuan_market API key>
จากนั้นใน ~/.codex/config.toml
[mcp_servers.ciyuanmarket]
url = "https://api.ciyuan-market.com/mcp"
env_http_headers = { "X-Ciyuanmarket-Api-Key" = "CIYUAN_MARKET_API_KEY" }
อีกวิธี: ใช้ http_headers เพื่อเขียนคีย์ลงในไฟล์ตั้งค่าโดยตรง
(สะดวกหากคุณไม่ต้องการจัดการตัวแปรสภาพแวดล้อมแยก
แต่โปรดทราบว่าคีย์จะถูกจัดเก็บเป็นข้อความล้วนในไฟล์ตั้งค่า)
[mcp_servers.ciyuanmarket]
url = "https://api.ciyuan-market.com/mcp"
http_headers = { "X-Ciyuanmarket-Api-Key" = "<your ciyuan_market API key>" }
หากเพิ่มผ่านหน้าตั้งค่าของ Codex
- ประเภท: HTTP / Streamable HTTP
- ชื่อ: ciyuanmarket
- URL:
https://api.ciyuan-market.com/mcp - ชื่อส่วนหัว:
X-Ciyuanmarket-Api-Key - ค่าส่วนหัว: คีย์ API ciyuan_market ของคุณ
ตรวจสอบการเชื่อมต่อ
หลังจากเปิด Codex CLI คำสั่ง /mcp จะแสดงรายการเซิร์ฟเวอร์ MCP
ที่ตั้งค่าไว้และสถานะการเชื่อมต่อ — เพียงยืนยันว่าโหลด สำเร็จ รูปแบบการใช้งานเหมือนกับ
Claude คือ Codex จะเลือกเครื่องมือที่ถูกต้อง โดยอัตโนมัติ
หากไฟล์ตั้งค่าของคุณมีเซิร์ฟเวอร์ MCP อื่นอยู่แล้ว ให้เพิ่มรายการนี้ในระดับเดียวกัน ปิด Claude Desktop ให้สนิทแล้วเปิดใหม่หลังแก้ไข
เครื่องมือ
เซิร์ฟเวอร์ MCP นี้มีเครื่องมือ 14 รายการ แบ่งเป็นห้าหมวดหมู่
1. แชท
1. chat_completion — Chat Completions
ส่งคำขอสนทนาหนึ่งครั้งและส่งกลับคำตอบเต็มของโมเดล (ไม่สตรีม) นอกจากข้อความแล้ว
ยังรับภาพเพื่อการเข้าใจภาพได้ (โมเดลต้องรองรับ vision) — เปลี่ยน
content ของข้อความจาก string เป็นarray ของบล็อกเนื้อหา ผสม
text กับ image_url
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| model | ✅ | รหัสโมเดล เช่น "claude-sonnet-5" — ตรวจสอบด้วย list_models ก่อน |
| messages | ✅ | รายการข้อความ แต่ละรายการรูปแบบ
{"role": "user"|"assistant"|"system", "content": "..."};
สำหรับอินพุตหลายโมดัล content เป็น array ของบล็อกเนื้อหา (ดู อินพุตหลายโมดัล
ด้านล่าง) |
| temperature | ❌ | อุณหภูมิการสุ่มตัวอย่าง — ค่าสูงขึ้นสุ่มมากขึ้น |
| max_tokens | ❌ | จำนวนโทเค็นสูงสุดที่จะสร้าง |
อินพุตหลายโมดัล (text / image / video)
อินพุตภาพ (URL):
{"role": "user", "content": [
{"type": "text", "text": "ในภาพนี้มีอะไร?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]}
อินพุตภาพ (Base64):
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64_STRING>"}}
รูปแบบที่รองรับ: PNG, JPEG, GIF (เฉพาะเฟรมแรก), WebP. ขนาดรูปภาพเดียวจำกัด 20MB.
หมายเหตุ: รูปภาพขนาดใหญ่ที่เข้ารหัส Base64 จะได้สตริงที่ยาวมาก อาจล้มเหลวเนื่องจากเนื้อความคำขอใหญ่เกินไป แนะนำให้ส่งภาพผ่าน URL
พารามิเตอร์ detail (ไม่บังคับ ตั้งใน object image_url)
ควบคุมความละเอียดการประมวลผลภาพ: "auto" (ค่าเริ่มต้น — โมเดลตัดสินตามขนาด)
/ "low" (ภาพย่อ 512x512 เร็วและประหยัด เหมาะกับการจำแนกง่าย ๆ) /
"high" (ความละเอียดเต็ม เหมาะกับอ่านอักษรเล็ก/รายละเอียด) ใน array content
ของข้อความหนึ่งสามารถใส่บล็อก image_url หลายบล็อกเพื่อส่งภาพหลายภาพได้
Video input (URL):
{"role": "user", "content": [
{"type": "text", "text": "อธิบายสิ่งที่เกิดขึ้นในวิดีโอนี้"},
{"type": "video_url", "video_url": {"url": "https://example.com/video.mp4"}}
]}
Video input (Base64):
{"type": "video_url", "video_url": {"url": "data:video/mp4;base64,<BASE64_STRING>"}}
โมเดลที่รองรับการป้อนข้อมูลวิดีโอบน ciyuan_market ได้แก่ โมเดลบางรุ่นจากซีรีส์ Qwen, Doubao (dola-seed), Kimi, MiniMax — ตรวจสอบ input_modalities ที่ส่งกลับโดย list_models มาตรฐาน Chat Completions อย่างเป็นทางการของ OpenAI ไม่รองรับวิดีโอแบบ native แต่ ciyuan_market gateway รองรับผ่าน
{"type": "video_url", "video_url": {"url": "..."}}
รูปแบบส่วนขยาย รูปแบบนี้สอดคล้องกับรูปแบบ video_url ที่ใช้โดย OpenRouter, NVIDIA NIM, vLLM และแพลตฟอร์มอื่น ๆ
2. create_message — เข้ากันได้กับ Anthropic Messages
เรียก endpoint ที่รองรับ Anthropic Messages (ไม่สตรีม) บล็อกเนื้อหารองรับ text, image, tool_use, tool_result, thinking, redacted_thinking ส่งภาพผ่านบล็อกเนื้อหา
{"type": "image", "source": {...}}
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| model | ✅ | รหัสโมเดล เช่น "claude-sonnet-4.6" |
| messages | ✅ | รายการข้อความ; content อาจเป็นสตริงหรืออาร์เรย์ของบล็อกเนื้อหา (text/image/tool_use/tool_result/thinking เป็นต้น) |
| max_tokens | ✅ | จำนวนโทเค็นเอาต์พุตสูงสุด |
| system | ❌ | พรอมต์ระบบ เป็นสตริงหรือ [{"type": "text", "text": "..."}] |
| temperature / top_p / top_k | ❌ | พารามิเตอร์การสุ่มตัวอย่าง |
| tools | ❌ | คำนิยามเครื่องมือ แต่ละรายการมีรูปแบบ
{"name", "description", "input_schema", ...} |
| tool_choice | ❌ | กลยุทธ์การเลือกเครื่องมือ |
| thinking | ❌ | การตั้งค่าการคิดแบบขยาย |
| stop_sequences | ❌ | ลำดับหยุดที่กำหนดเอง |
| metadata | ❌ | ข้อมูลเมทาดาต้าเพิ่มเติม |
| anthropic_beta | ❌ | ตัวระบุฟีเจอร์เบต้าสำหรับส่วนหัว anthropic-beta |
อินพุตหลายโมดัล (text / image / video)
อินพุตภาพรองรับ source สามแบบ:
1. เข้ารหัส Base64 (หมายเหตุ: ฟิลด์ data เป็น string Base64 ล้วน
ไม่มีคำนำหน้า data:); media_type รองรับ
image/jpeg, image/png, image/gif, image/webp:
{"type": "image", "source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "<BASE64_STRING>"
}}
2. อ้างอิง URL:
{"type": "image", "source": {
"type": "url",
"url": "https://example.com/image.jpg"
}}
3. File ID (อัปโหลดภาพผ่าน Files API ด้วย purpose="vision" ก่อนเพื่อรับ
file_id):
{"type": "image", "source": {
"type": "file",
"file_id": "<file_id>"
}}
ใน array content ของข้อความหนึ่งสามารถใส่บล็อก image หลายบล็อกเพื่อส่งภาพหลายภาพ
หมายเหตุ: รูปภาพขนาดใหญ่ที่เข้ารหัส Base64 จะได้สตริงที่ยาวมาก อาจล้มเหลวเนื่องจากเนื้อความคำขอใหญ่เกินไป แนะนำให้ส่งภาพผ่าน URL
อินพุตวิดีโอ: API Anthropic Messages ไม่รองรับไฟล์วิดีโอโดยกำเนิด สำหรับเข้าใจวิดีโอ ให้สกัดคีย์เฟรมด้วย ffmpeg หรือเครื่องมือทำนองเดียวกันก่อน แล้วส่งแต่ละเฟรมเป็นบล็อกเนื้อหา image บาง gateway ที่รองรับอาจขยายรองรับ
{"type": "video", "source": {...}}
และรูปแบบทำนองเดียวกัน — ดูเอกสาร gateway ของคุณ For models supporting video input on ciyuan_market (check input_modalities via list_models), use chat_completion or create_response for native video support.
3. create_response — เข้ากันได้กับ OpenAI Responses
ใช้ input แทน messages,
instructions แทนข้อความระบบ และ text.format แทน
response_format นอกจากข้อความแล้ว ยังรับภาพเพื่อการเข้าใจภาพได้
(โมเดลต้องรองรับ vision) — ตั้ง input เป็น array ของ object ข้อความ โดย
content เป็น array ของบล็อกเนื้อหาผสมข้อความกับภาพ
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| model | ✅ | รหัสโมเดล เช่น "glm-5.2" |
| input | ✅ | string ล้วน (เป็นข้อความผู้ใช้หนึ่งข้อความ) หรือ array ของ object ข้อความ (ใช้สำหรับอินพุตหลายโมดัล ดูด้านล่าง) |
| instructions | ❌ | พรอมต์ระบบ |
| max_output_tokens | ❌ | จำนวนโทเค็นเอาต์พุตสูงสุด |
| temperature / top_p | ❌ | พารามิเตอร์การสุ่มตัวอย่าง |
| tools | ❌ | คำนิยามเครื่องมือ โครงสร้างระดับบนสุด
{"type", "name", "description", "parameters"} |
| tool_choice | ❌ | "auto" / "none" / "required" หรือ {"type", "name"} |
| text | ❌ | การตั้งค่ารูปแบบเอาต์พุต เช่น
{"format": {"type": "text" | "json_object" | "json_schema", ...}} |
| previous_response_id | ❌ | รหัสการตอบกลับก่อนหน้าสำหรับการสนทนาแบบหลายรอบ |
| parallel_tool_calls | ❌ | อนุญาตให้เรียกเครื่องมือแบบพร้อมกันหรือไม่ |
| metadata | ❌ | ข้อมูลเมทาดาต้าเพิ่มเติม |
อินพุตหลายโมดัล (text / image / video)
หมายเหตุ: Responses API ใช้ประเภทบล็อกเนื้อหา input_text /
input_image / input_video (ไม่ใช่ text / image_url / video_url
ของ Chat Completions) และ image_url / video_url เป็น string
ตรง ๆ ไม่ใช่ object ซ้อน
อินพุตภาพ (URL):
[{"role": "user", "content": [
{"type": "input_text", "text": "ในภาพนี้มีอะไร?"},
{"type": "input_image", "image_url": "https://example.com/image.jpg"}
]}]
อินพุตภาพ (Base64):
{"type": "input_image", "image_url": "data:image/jpeg;base64,<BASE64_STRING>"}
รูปแบบที่รองรับ: PNG, JPEG, GIF (เฉพาะเฟรมแรก), WebP. ขนาดรูปภาพเดียวจำกัด 20MB.
หมายเหตุ: รูปภาพขนาดใหญ่ที่เข้ารหัส Base64 จะได้สตริงที่ยาวมาก อาจล้มเหลวเนื่องจากเนื้อความคำขอใหญ่เกินไป แนะนำให้ส่งภาพผ่าน URL
อินพุตภาพ (File ID):
{"type": "input_image", "file_id": "<file_id>"}
file_id ได้จากการอัปโหลดภาพผ่าน Files API ด้วย purpose="vision"
พารามิเตอร์ detail (ไม่บังคับ ใน object input_image)
ควบคุมความละเอียดการประมวลผล: "auto" (ค่าเริ่มต้น) /
"low" (ภาพย่อ 512x512 เร็วและประหยัด) /
"high" (ความละเอียดเต็ม อ่านอักษรเล็ก/รายละเอียด) /
"original" (ความละเอียดดั้งเดิม) ใน array content
ของข้อความหนึ่งสามารถใส่บล็อก input_image หลายบล็อกเพื่อส่งภาพหลายภาพได้
Video input (URL):
[{"role": "user", "content": [
{"type": "input_text", "text": "อธิบายสิ่งที่เกิดขึ้นในวิดีโอนี้"},
{"type": "input_video", "video_url": "https://example.com/video.mp4"}
]}]
Video input (Base64):
{"type": "input_video", "video_url": "data:video/mp4;base64,<BASE64_STRING>"}
Video input (File ID):
{"type": "input_video", "file_id": "<file_id>"}
โมเดลที่รองรับการป้อนข้อมูลวิดีโอบน ciyuan_market ได้แก่ โมเดลบางรุ่นจากซีรีส์ Qwen, Doubao (dola-seed), Kimi, MiniMax — ตรวจสอบ input_modalities ที่ส่งกลับโดย list_models มาตรฐาน Responses API อย่างเป็นทางการของ OpenAI ไม่รองรับวิดีโอแบบ native แต่ ciyuan_market gateway รองรับผ่าน
{"type": "input_video", "video_url": "..."}
รูปแบบส่วนขยาย รูปแบบนี้สอดคล้องกับรูปแบบ input_video ที่ใช้โดย BytePlus/Volcengine และแพลตฟอร์มอื่น ๆ
2. โมเดลและบัญชี
4. list_models — แสดงรายการโมเดลที่พร้อมใช้งาน
ส่งคืนโมเดลที่พร้อมใช้งานสำหรับบัญชีปัจจุบัน พร้อมเมทาดาต้าผู้ให้บริการ โมดัลลิตี้
ความสามารถ และราคา ไม่มีพารามิเตอร์ แต่ละรายการในลิสต์มีช่วงราคา
price_tiers ซึ่งเป็นราคาเรียกเก็บที่มีผลของผู้เรียก ตรงกับการหักเงินจริง
(ดู คู่มือฟิลด์ช่วงราคา)
5. get_model — ดูรายละเอียดโมเดลเดียว
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| model | ✅ | รหัสโมเดล เช่น "gpt-5.5" — จะส่งคืนข้อผิดพลาดที่ชัดเจนหากไม่มีอยู่ |
ผลลัพธ์มีช่วงราคา price_tiers (ดู
คู่มือฟิลด์ช่วงราคา) เมื่อโมเดลไม่มีอยู่จะส่ง 404
โดยไม่มีฟิลด์ราคา
6. get_balance — ตรวจสอบยอดคงเหลือในบัญชี
ส่งคืนการใช้งานและยอดคงเหลือของบัญชีปัจจุบัน ไม่มีพารามิเตอร์
3. การเรียกเก็บเงิน
7. list_usage — รายละเอียดการใช้งาน/การเรียกเก็บเงินของโมเดล
รายละเอียดการเรียกเก็บเงินจากการใช้งานโมเดลแบบแบ่งหน้า เรียงตามเวลาที่สร้างคำสั่งจากใหม่ไปเก่า มีเฉพาะค่าใช้จ่ายจากการใช้งานปกติเท่านั้น — ไม่รวมการเติมเงินหรือการปรับปรุง
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| page | ❌ | หมายเลขหน้า เริ่มที่ 1 ค่าเริ่มต้น 1 |
| size | ❌ | ขนาดหน้า ค่าเริ่มต้น 20 |
| start_time | ❌ | เวลาเริ่มต้น รูปแบบ "yyyy-MM-ddTHH:mm:ss" (เช่น "2026-07-01T00:00:00") |
| end_time | ❌ | เวลาสิ้นสุด รูปแบบเดียวกัน |
8. list_transactions — ธุรกรรมการเติมเงิน/แพ็กเกจ
ธุรกรรมการเติมเงิน / การซื้อแพ็กเกจที่ชำระเงินแล้วแบบแบ่งหน้า เรียงตามเวลาที่สร้างจากใหม่ไปเก่า
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| page | ❌ | หมายเลขหน้า เริ่มที่ 1 ค่าเริ่มต้น 1 |
| size | ❌ | ขนาดหน้า ค่าเริ่มต้น 20 |
| start_time | ❌ | เวลาเริ่มต้น รูปแบบ "yyyy-MM-dd HH:mm:ss" (หมายเหตุ: เป็นเว้นวรรค ไม่ใช่ "T" ระหว่างวันที่และเวลา) |
| end_time | ❌ | เวลาสิ้นสุด รูปแบบเดียวกัน |
4. การสร้างภาพ
9. list_image_models — แสดงรายการโมเดลสร้างภาพ
ส่งคืนโมเดลสร้างภาพที่รองรับ พร้อมความละเอียด สัดส่วนภาพ จำนวนภาพสูงสุด (maxCount)
และจำนวนภาพอ้างอิงสูงสุด (fileMax) ไม่มีพารามิเตอร์ ตรวจสอบสิ่งนี้ก่อนสร้างภาพ —
คุณสามารถส่งค่าที่ระบุไว้เท่านั้น แต่ละรายการในลิสต์มีช่วงราคา
priceTiers (ดู คู่มือฟิลด์ช่วงราคา)
10. create_image_generation — ส่งงานสร้างภาพ
ส่งแบบอะซิงโครนัสและส่งคืน taskId ทันที; จะหักเครดิตของบัญชี
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| text | ✅ | พรอมต์สำหรับสร้างภาพ |
| model | ✅ | ชื่อโมเดล จาก id ที่ list_image_models ส่งคืน |
| count | ❌ | จำนวนภาพที่จะสร้าง |
| resolution | ❌ | ความละเอียด จาก resolutions ของ list_image_models |
| ratio | ❌ | สัดส่วนภาพ จาก ratios ของ list_image_models |
| image_urls | ❌ | URL ภาพอ้างอิง (ภาพเป็นภาพ) จำนวนไม่เกิน fileMax ของโมเดลนั้น |
| callback_url | ❌ | เว็บฮุกที่ถูกเรียกเมื่อเสร็จสิ้น; ไม่ระบุเพื่อใช้การโพลแทน |
11. get_image_generation — โพลงานสร้างภาพ
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| task_id | ✅ | taskId ที่ create_image_generation ส่งคืน |
ผลลัพธ์: status คือ pending / success / failed; images คืออาร์เรย์สตริง JSON ของ URL ภาพ; text ให้ข้อความเพิ่มเติมจากโมเดล (เช่น เอาต์พุตมัลติโมดัลของ Gemini)
5. การสร้างวิดีโอ
12. list_video_models — แสดงรายการโมเดลสร้างวิดีโอ
ส่งคืนโมเดลสร้างวิดีโอที่รองรับ พร้อม allowedVideoTypes ช่วงระยะเวลา
(videoDurationMin/Max) ความละเอียด สัดส่วนภาพ และขีดจำกัดสินทรัพย์อ้างอิง (fileMax)
ไม่มีพารามิเตอร์ ตรวจสอบสิ่งนี้ก่อนสร้างวิดีโอ แต่ละรายการในลิสต์มีช่วงราคา
priceTiers (ดู คู่มือฟิลด์ช่วงราคา)
13. create_video_generation — ส่งงานสร้างวิดีโอ
ส่งแบบอะซิงโครนัสและส่งคืน taskId ทันที; จะหักเครดิตของบัญชี
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| text | ✅ | พรอมต์สำหรับสร้างวิดีโอ; เมื่อ video_type=5 ให้อ้างอิงสินทรัพย์ด้วย "@Image N"/"@Video N"/"@Audio N" |
| model | ✅ | ชื่อโมเดล จาก id ที่ list_video_models ส่งคืน |
| video_type | ✅ | รหัสรูปแบบการสร้าง (1-5 ดูด้านล่าง) — ใช้ได้เฉพาะค่าที่อยู่ใน allowedVideoTypes ของโมเดลนั้นเท่านั้น |
| image_urls | ❌ | URL สินทรัพย์ภาพ; ความหมายขึ้นอยู่กับ video_type |
| video_urls | ❌ | URL สินทรัพย์วิดีโอ ใช้เฉพาะ video_type=5 |
| audio_urls | ❌ | URL สินทรัพย์เสียง ใช้เฉพาะ video_type=5 |
| resolution / ratio | ❌ | ความละเอียด / สัดส่วนภาพ จาก list_video_models |
| duration | ❌ | ความยาววิดีโอเป็นวินาที ต้องอยู่ในช่วง videoDurationMin/Max |
| callback_url | ❌ | เว็บฮุกที่ถูกเรียกเมื่อเสร็จสิ้น; ไม่ระบุเพื่อใช้การโพลแทน |
ความหมายของ video_type:
| ค่า | รูปแบบ | ข้อกำหนดสินทรัพย์ |
|---|---|---|
| 1 | ข้อความเป็นวิดีโอ | ไม่ต้องใช้สินทรัพย์ |
| 2 | ภาพเป็นวิดีโอ (เฟรมแรก) | image_urls ระบุเฟรมเริ่มต้นเพียงหนึ่งภาพ |
| 3 | ภาพเป็นวิดีโอ (เฟรมแรก/สุดท้าย) | image_urls ระบุ [เฟรมแรก, เฟรมสุดท้าย] ตามลำดับ |
| 4 | ภาพเป็นวิดีโอ (อ้างอิง) | image_urls ระบุภาพอ้างอิงสไตล์/เนื้อหาหนึ่งภาพขึ้นไป |
| 5 | อ้างอิงทั้งหมด | ผสมผสาน image_urls/video_urls/audio_urls โดยอ้างอิงตามตำแหน่งใน text |
14. get_video_generation — โพลงานสร้างวิดีโอ
| พารามิเตอร์ | จำเป็น | คำอธิบาย |
|---|---|---|
| task_id | ✅ | taskId ที่ create_video_generation ส่งคืน |
คู่มือฟิลด์ช่วงราคา
ผลลัพธ์ของเครื่องมือค้นหาโมเดล 4 ตัวนี้ — list_models,
get_model, list_image_models, list_video_models —
ส่ง ราคาเรียกเก็บที่มีผล ของผู้เรียก (ผู้ใช้ API Key)
ซึ่งตรงกับการหักเงินจริงทุกประการ และรวม ช่วงราคาทั้งหมด ของโมเดล
ความแตกต่างของชื่อ: list_models / get_model ใช้ snake_case
ของ OpenAI (price_tiers); list_image_models /
list_video_models ใช้ camelCase (priceTiers)
โครงสร้างเหมือนกัน
price_tiers / priceTiers เป็น array
แต่ละอิลิเมนต์คือหนึ่งช่วงราคา:
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
region | string | ภูมิภาคชั้น V2 ของโมเดลข้อความ เช่น GLOBAL /
NON_GLOBAL / us-central1 เป็น null
สำหรับโมเดลภาพ/วิดีโอ |
bandMin | long | ขอบล่างของช่วง input token ของโมเดลข้อความ (รวม) null = ไม่จำกัด |
bandMax | long | ขอบบนของช่วง input token ของโมเดลข้อความ (รวม) null = ไม่จำกัด |
resolution | string | ความละเอียดของภาพ/วิดีโอ เช่น 1080p / 4K เป็น null
สำหรับโมเดลข้อความ |
clarity | string | ระดับความคมชัด |
unit | string | หน่วยเรียกเก็บ: token (ข้อความ) / image (ภาพ) /
video (วิดีโอ) |
quantity | integer | จำนวนหน่วย (เช่น ต่อ 1000 token, ต่อ 1 ภาพ) |
description | string | คำอธิบายราคา |
inputPrice | decimal | ราคาหน่วยอินพุตที่มีผล ของผู้เรียก |
outputPrice | decimal | ราคาหน่วยเอาต์พุตที่มีผล ของผู้เรียก |
cachePrice | decimal | ราคาแคช (โมเดลทั่วไป, สูตรเรียกเก็บเดิม) |
cacheReadPrice | decimal | ราคาหน่วยอ่านแคช (เฉพาะ Bedrock Claude) |
cacheWritePrice | decimal | ราคาหน่วยเขียนแคช (เฉพาะ Bedrock Claude) |
ratio | decimal | ตัวคูณเรียกเก็บ เป็น 1 ในโหมด
FIXED ตัวคูณผู้ใช้/กลุ่มในโหมด RATIO |
mode | string | โหมดราคา: RATIO / FIXED |
planId | string | id แผนราคาที่ตรง อาจเป็น null |
โมเดล 3 ประเภทใช้โครงสร้างเดียวกัน ต่างเพียงฟิลด์คำอธิบาย และฟิลด์ที่ไม่ใช้จะเป็น null:
| ประเภทโมเดล | unit | ฟิลด์คำอธิบายที่มีผล |
|---|---|---|
| ข้อความ | token | region / bandMin / bandMax |
| ภาพ | image | resolution / clarity |
| วิดีโอ | video | resolution / clarity |
ความหมายของราคา: inputPrice / outputPrice /
cacheReadPrice / cacheWritePrice ฯลฯ ที่ส่งกลับ
คือราคาหน่วยเรียกเก็บสุดท้าย สำหรับผู้ใช้ API Key ปัจจุบัน ที่คำนวณผ่าน
chain → guidance → ราคาพื้นฐาน และตรงกับการหักเงินจริง
ราคาหน่วยที่ผู้เรียกเห็นจะต่างกันตาม chain ราคาของตน (reseller / distributor / องค์กร /
การตั้งค่าระดับผู้ใช้)
การหักเงินจริง = ปริมาณ ÷ quantity × ราคาหน่วย ×
ratio สำหรับเรียกเก็บวิดีโอต่อวินาที: การหักเงินจริง =
duration × outputPrice × ratio
กรณีขอบและการจัดการข้อผิดพลาด (endpoint แบบอ่านอย่างเดียวจะไม่ส่ง 500 เพราะปัญหาคอนฟิกราคา):
| สถานการณ์ | พฤติกรรม |
|---|---|
| ช่วงเดียวแก้ไขไม่สำเร็จ (นโยบายราคาปฏิเสธการเข้าถึง, ขาดคอนฟิก) | ข้ามช่วงนั้น, บันทึก warn log, แก้ไขช่วงที่เหลือต่อ |
| ช่วงทั้งหมดของโมเดลแก้ไขไม่สำเร็จ | array ว่าง [] โมเดลยังส่งกลับปกติ |
| โมเดลไม่มีคอนฟิกราคาเลย | array ว่าง [] |
| การแก้ไขราคาโยน exception ที่ไม่ถูกจับ | try-catch ทั้งหมด ส่ง array ว่าง endpoint ยัง 200 |
ตัวอย่างการตอบ (list_models, โมเดลข้อความ):
{
"object": "list",
"data": [
{
"id": "gpt-4o",
"object": "model",
"display_name": "gpt-4o",
"context_length": 128000,
"description": "...",
"price_tiers": [
{
"region": "GLOBAL",
"bandMin": null,
"bandMax": null,
"resolution": null,
"clarity": null,
"unit": "token",
"quantity": 1000,
"description": "ต่อ 1K token",
"inputPrice": 0.0025,
"outputPrice": 0.01,
"cachePrice": 0.00125,
"cacheReadPrice": 0,
"cacheWritePrice": 0,
"ratio": 1,
"mode": "RATIO",
"planId": null
}
]
}
]
}
ตัวอย่างการตอบ (list_image_models, โมเดลภาพ;
priceTiers โครงสร้างเหมือนกัน unit เป็น
image):
{
"object": "list",
"data": [
{
"id": "dall-e-3",
"object": "image_model",
"displayName": "dall-e-3",
"resolutions": ["1024x1024", "1792x1024", "1024x1792"],
"priceTiers": [
{
"region": null,
"bandMin": null,
"bandMax": null,
"resolution": "1024x1024",
"clarity": "standard",
"unit": "image",
"quantity": 1,
"description": "ต่อภาพ",
"inputPrice": 0,
"outputPrice": 0.04,
"cachePrice": 0,
"cacheReadPrice": 0,
"cacheWritePrice": 0,
"ratio": 1,
"mode": "RATIO",
"planId": null
}
]
}
]
}
ตัวอย่าง
ตัวอย่างที่ 1: คำขอแชทแบบพื้นฐาน
ถาม: "ใช้ ciyuan_market เรียก claude-sonnet-5 แล้วถามว่า GIL ของ Python คืออะไร"
AI จะเรียก chat_completion ด้วย
{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "What is Python's GIL?"}]
}
ตัวอย่างที่ 2: การใช้เครื่องมือผ่านเอนด์พอยต์ Anthropic Messages
ถาม: "ใช้เอนด์พอยต์ Messages ของ ciyuan_market แล้วให้โมเดลตัดสินใจว่าจะตรวจสอบสภาพอากาศหรือไม่"
AI จะเรียก create_message โดยส่งคำนิยามเครื่องมือและ
tool_choice; การตอบกลับจะมีบล็อกเนื้อหา
tool_use รวมอยู่ด้วย
ตัวอย่างที่ 3: แสดงรายการโมเดลที่พร้อมใช้งาน
ถาม: "แสดงรายการโมเดลในบัญชี ciyuan_market ของฉัน"
AI จะเรียก list_models ซึ่งส่งคืนรหัส ผู้ให้บริการ โมดัลลิตี้ ราคา
และข้อมูลอื่น ๆ ของโมเดลที่พร้อมใช้งานทั้งหมด
ตัวอย่างที่ 4: ตรวจสอบยอดคงเหลือและการใช้งาน
ถาม: "ตรวจสอบการใช้งาน ciyuan_market ของฉันในเดือนนี้"
AI จะเรียก get_balance เพื่อดูยอดคงเหลือ จากนั้นเรียก
list_usage (กำหนด start_time ให้อยู่ในเดือนนี้)
เพื่อดูรายละเอียดการใช้งาน
ตัวอย่างที่ 5: สร้างภาพ
ถาม: "ใช้ ciyuan_market สร้างภาพเมืองยามค่ำคืนสไตล์ไซเบอร์พังก์"
AI จะเรียก list_image_models ก่อนเพื่อตรวจสอบข้อกำหนด จากนั้นเรียก
create_image_generation เพื่อรับ taskId แล้วโพล
get_image_generation เพื่อดู URL ของภาพ
ตัวอย่างที่ 6: ข้อความเป็นวิดีโอ
ถาม: "ใช้ ciyuan_market สร้างวิดีโอ 5 วินาทีของเนบิวลาในอวกาศ"
AI จะเรียก list_video_models ก่อนเพื่อตรวจสอบข้อกำหนด จากนั้นเรียก
create_video_generation (video_type=1,
duration=5) และหลังจาก ได้ taskId แล้ว จะโพล
get_video_generation
คำถามที่พบบ่อย
การเรียกเครื่องมือล้มเหลวด้วย "missing ciyuan_market API Key"
- คุณรัน
claude mcp addโดยไม่ใส่--headerหรือคีย์ไม่ถูกต้อง - หากแก้ไขไฟล์ตั้งค่า JSON โดยตรง ชื่อฟิลด์
headersไม่ถูกต้อง (ควรเป็นX-Ciyuanmarket-Api-Key) - รันในเครื่องโดยไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อม
CIYUAN_MARKET_API_KEY
การเรียกเครื่องมือล้มเหลวด้วย "ciyuan_market returned 401 unauthorized"
คีย์ API เองไม่ถูกต้องหรือหมดอายุ — สร้างใหม่ในคอนโซล ciyuan_market
Claude ไม่เรียกเครื่องมือของ ciyuan_market — ต้องทำอย่างไร
- ยืนยันว่าการเชื่อมต่อแสดง ✓ Connected ผ่าน
claude mcp list - ตรวจสอบสถานะการเชื่อมต่อ:
claude mcp get ciyuanmarket - ลองระบุให้ชัดเจน: "ใช้เครื่องมือ
chat_completionของ ciyuan_market เรียกclaude-sonnet-5…"
การสร้างภาพ/วิดีโอค้างสถานะ pending ตลอดไป
- โพลงานภาพด้วย
get_image_generationและงานวิดีโอด้วยget_video_generation— โปรดทราบว่าสถานะของงานวิดีโอที่กำลังทำงานคือ "running" ไม่ใช่ "pending" - การสร้างใช้เวลา ปกติไม่กี่ถึงหลายสิบวินาที นานกว่านั้นสำหรับวิดีโอ
- หากคุณส่ง
callback_urlไว้ งานจะเรียกกลับเมื่อเสร็จสิ้น — ไม่ต้องโพล
list_image_models / list_video_models เกิดข้อผิดพลาด
ทั้งสองเครื่องมือนี้ไม่หักเครดิตเอง — ข้อผิดพลาดมักชี้ไปที่ปัญหาคีย์หรือเครือข่าย
ให้ยืนยันก่อนว่า list_models ทำงานได้ตามปกติ
ข้อควรทราบ
- ชื่อส่วนหัว:MCP ส่งคีย์ผ่าน
X-Ciyuanmarket-Api-Key - การหักเครดิต:
chat_completion/create_message/create_response/create_image_generation/create_video_generationทั้งหมดหักเครดิตของบัญชี — ตรวจสอบget_balanceก่อนหากต้องการรู้ยอดคงเหลือล่วงหน้า - ตรวจสอบข้อกำหนดก่อนสร้าง:พารามิเตอร์การสร้างภาพ/วิดีโอ เช่น model,
resolution, ratio, count, duration และ video_type ต้องใช้เฉพาะค่าที่ระบุโดย
list_image_models/list_video_modelsเท่านั้น ไม่เช่นนั้นการเรียกจะเกิดข้อผิดพลาด - ไม่มีการสตรีม:เอนด์พอยต์แชททั้งสามไม่รองรับการสตรีม — แต่ละเอนด์พอยต์จะส่งคืนผลลัพธ์ทั้งหมดในครั้งเดียว
- การออกแบบแบบไม่มีสถานะ:คำขอทุกครั้งเป็นอิสระจากกันและไม่มีการจัดเก็บเซสชัน สำหรับการสนทนาแบบหลายรอบ ให้ใช้
create_responseกับprevious_response_idหรือดูแลประวัติด้วยตัวเองในmessages
การสนับสนุน
รับความช่วยเหลือเกี่ยวกับ ciyuan_market
ค้นหาคำตอบสำหรับคำถามทั่วไปเกี่ยวกับ API การเรียกเก็บเงิน การกำหนดเส้นทาง และการรวมระบบ สำหรับ ปัญหาการผลิต ส่งรหัสคำขอ ป้ายกำกับคีย์ API จุดเชื่อมต่อ โมเดล และ การประทับเวลา เพื่อให้ทีมสามารถติดตามคำขอได้อย่างรวดเร็ว
คำถามที่พบบ่อย
คลิกที่คำถามเพื่อขยายคำตอบ
ติดต่อ
เลือกกล่องจดหมายที่เหมาะสมที่สุดสำหรับคำขอ
สำหรับเหตุการณ์ ขีดจำกัดอัตรา คำถามการเรียกเก็บเงิน ปัญหาการกำหนดเส้นทางการผลิต การย้าย SDK ความเข้ากันได้ของผู้ให้บริการ คำถามการออกแบบจุดเชื่อมต่อ แผนองค์กร การใช้งานที่ผูกมัด หรือข้อกำหนดการกำหนดเส้นทางผู้ให้บริการแบบกำหนดเอง












