หน้านี้อธิบายรูปแบบการเชื่อมต่อมาตรฐานของ Fortune API จาก YlanAI
อินเทอร์เฟซปัจจุบันเป็นไปตามโปรโตคอลที่เข้ากันได้กับ OpenAI และเหมาะสำหรับไคลเอนต์ที่ใช้ chat/completions และ completions
| รายการ | รายละเอียด |
|---|---|
| Base URL ที่แนะนำ | https://ylan.ai/api/openai |
| Base URL เพื่อความเข้ากันได้ | https://ylan.ai/api/openai/v1 |
| วิธีเรียกหลัก | POST |
| รายการโมเดล | GET /models |
| รายละเอียดโมเดล | GET /models/{id} |
| ปลายทางสนทนา | POST /chat/completions |
ปลายทาง completions แบบเดิม | POST /completions |
สำหรับไคลเอนต์ภายนอกที่ต่อท้าย /v1 โดยอัตโนมัติ แนะนำให้ตั้งค่า Base URL เป็น https://ylan.ai/api/openai
ทุกคำขอต้องส่ง header ต่อไปนี้:
Authorization: Bearer sk-...
API Key ผูกกับบัญชีผู้ใช้ปัจจุบัน และการใช้งานจะถูกหักจากเครดิตแบบชำระเงินของบัญชีนั้น
สำหรับไคลเอนต์ภายนอกที่ไม่สามารถตั้งค่า Authorization ได้ ปัจจุบันยังรองรับ api-key: sk-... และ x-api-key: sk-...
รองรับการสนทนาแบบหลายรอบ โดยผู้เรียกสามารถส่งประวัติข้อความผ่านอาร์เรย์ messages เพื่อรักษาบริบทต่อเนื่อง
| ขอบเขต | รายละเอียด |
|---|---|
| ความสามารถที่เปิดให้ใช้ | เปิดให้ใช้เฉพาะ Fortune API |
| แชตทั่วไป | ไม่เปิดใช้งาน |
| สถานการณ์ที่รองรับ | รองรับทั้งการวิเคราะห์บุคคลเดียวและการวิเคราะห์คู่ |
| มาตรฐานผลลัพธ์ | สอดคล้องกับประสบการณ์ภายในเว็บไซต์ |
ให้ยึดผลลัพธ์แบบเรียลไทม์จาก GET /models เป็นหลัก รายการโมเดลอาจมีการปรับตามแผนความสามารถของแพลตฟอร์ม
| โมเดล | รายละเอียด |
|---|---|
openai/gpt-5.4 | เหมาะกับงานวิเคราะห์เชิงลึกที่ต้องการคุณภาพสูง |
openai/gpt-5.3-chat | เหมาะกับการตีความทั่วไปและการสนทนาแบบหลายรอบ |
deepseek/deepseek-v3.2 | เหมาะกับการวิเคราะห์หลากหลายรูปแบบและการสนทนาแบบหลายรอบ |
| กรณี | รูปแบบการตอบกลับ |
|---|---|
stream=true | ส่ง SSE ที่เข้ากันได้กับ OpenAI โดยใช้ payload แบบ chat.completion.chunk และจบด้วย data: [DONE] |
stream=false | ส่ง JSON มาตรฐานแบบ chat.completion |
POST /completions | ส่ง JSON แบบ text_completion หรือ SSE ที่เข้ากันได้กับ OpenAI |
| Header ของ non-stream ที่สำเร็จ | ส่ง x-ylan-charged-credits และ x-ylan-remaining-paid-credits |
| พารามิเตอร์ | ประเภท | รายละเอียด |
|---|---|---|
model | string | ชื่อโมเดลที่ได้จาก GET /models |
messages | array | อาร์เรย์ข้อความแบบ OpenAI-compatible และต้องมีข้อความ user อย่างน้อย 1 รายการ |
prompt | string | ฟิลด์อินพุตแบบเดิมสำหรับ completions ใช้ได้เมื่อไม่ได้ส่ง messages |
input | string | ฟิลด์อินพุตเพื่อความเข้ากันได้กับไคลเอนต์บางประเภท เมื่อไม่ได้ส่ง messages |
stream | boolean | ใช้การตอบกลับแบบสตรีมหรือไม่ ค่าเริ่มต้นคือ false |
locale | string | ภาษาของผลลัพธ์ เช่น th, zh, en |
topic | string | หัวข้อการวิเคราะห์ เช่น wealth_pattern หรือ marriage_status |
subject_mode | string | โหมดการวิเคราะห์ single หรือ pair |
method | string | วิธีการวิเคราะห์ที่ระบบปัจจุบันใช้ตีความ |
birth_profile | object | ข้อมูลวันเวลาเกิดสำหรับการวิเคราะห์บุคคลเดียว |
chart_input | object | ข้อมูลดวงแบบโครงสร้างสำหรับกรณีที่มีการเตรียมดวงไว้แล้ว |
pair_state | object | ข้อมูลสำหรับการวิเคราะห์คู่ |
metadata | object | เมตาดาต้าเพิ่มเติม เช่น topic, locale, birthProfile, pairState |
curl -N https://ylan.ai/api/openai/chat/completions \
-H 'Authorization: Bearer sk-your-api-key' \
-H 'Content-Type: application/json' \
-d '{
"model": "openai/gpt-5.4",
"stream": true,
"locale": "th",
"topic": "wealth_pattern",
"subject_mode": "single",
"birth_profile": {
"calendar": "solar",
"birthDate": "1992-08-15",
"birthTime": "09:30",
"gender": "male",
"location": "Shenzhen"
},
"messages": [
{
"role": "user",
"content": "ช่วยวิเคราะห์แนวโน้มการเงินของฉันในปีนี้"
}
]
}'curl -N https://ylan.ai/api/openai/chat/completions \
-H 'Authorization: Bearer sk-your-api-key' \
-H 'Content-Type: application/json' \
-d '{
"model": "deepseek/deepseek-v3.2",
"stream": true,
"locale": "th",
"topic": "marriage_status",
"subject_mode": "pair",
"pair_state": {
"subjects": [
{
"birthProfile": {
"calendar": "solar",
"birthDate": "1992-08-15",
"birthTime": "09:30",
"gender": "male",
"location": "Shenzhen"
}
},
{
"birthProfile": {
"calendar": "solar",
"birthDate": "1995-03-08",
"birthTime": "22:15",
"gender": "female",
"location": "Guangzhou"
}
}
]
},
"messages": [
{
"role": "user",
"content": "ช่วยวิเคราะห์ทิศทางระยะยาวของความสัมพันธ์นี้และประเด็นสำคัญด้านความเข้ากันได้"
}
]
}'| กรณี | กฎ |
|---|---|
| การวิเคราะห์บุคคลเดียว | 100 เครดิตต่อคำตอบที่สำเร็จ |
| การวิเคราะห์คู่ | 200 เครดิตต่อคำตอบที่สำเร็จ |
need_input | ไม่คิดเครดิต |
| ช่วงเครดิตที่ใช้ได้ | ใช้ได้เฉพาะเครดิตแบบชำระเงิน โบนัสสมัครสมาชิกและเครดิตที่มอบให้ไม่สามารถนำมาใช้ได้ |
stream=true | ยืนยันการหักเมื่อมีเนื้อหาที่มองเห็นได้และใช้ได้ส่งกลับเป็นครั้งแรก |
stream=false | ยืนยันการหักเมื่อคำตอบสมบูรณ์ถูกส่งกลับสำเร็จ |
| หมดเวลา ล้มเหลว หรือไม่มีเนื้อหา | การหักจะไม่ถูกยืนยันหรือคืนกลับตามกฎปัจจุบัน |
| HTTP Status | Error Code | รายละเอียด |
|---|---|---|
400 | invalid_messages | ไม่มีข้อความที่ถูกต้องหรือไม่มีข้อความ user |
400 | invalid_prompt | คำขอไม่มีทั้ง messages prompt และ input |
400 | invalid_model | โมเดลที่ร้องขอไม่ได้อยู่ใน allowlist ปัจจุบัน |
401 | invalid_api_key | API Key ไม่ถูกต้องหรือไม่ได้ส่งมา |
402 | insufficient_paid_credits | เครดิตแบบชำระเงินไม่เพียงพอ |
500 | request_timeout | คำขอหมดเวลา |
500 | request_failed | คำขอล้มเหลว |
500 | internal_error | ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
502 | empty_response | โมเดลไม่ส่งคืนเนื้อหาที่มองเห็นได้และใช้ได้ |
เมื่อข้อมูลวันเกิด ข้อมูลหัวข้อ หรือข้อมูลสำหรับการวิเคราะห์คู่ยังไม่ครบ API อาจส่งคำตอบแบบ need_input เพื่อให้ผู้เรียกเติมข้อมูลที่จำเป็น การตอบกลับประเภทนี้ไม่คิดเครดิต