เอกสารอ้างอิง API
OpenTyphoon.ai API ได้รับการออกแบบให้เข้ากันได้กับ API ของ OpenAI ทำให้ง่ายต่อการผสานรวมหากคุณคุ้นเคยกับ OpenAI อยู่แล้ว เอกสารอ้างอิงนี้ครอบคลุมถึง endpoints ที่มีทั้งหมด, พารามิเตอร์ที่จำเป็นและไม่จำเป็น และตัวอย่างรูปแบบการตอบกลับ
การยืนยันตัวตน
การร้องขอ API ทั้งหมดต้องมีการยืนยันตัวตนโดยใช้ API key ของคุณ โดยรวม API key ของคุณไว้ในส่วนหัว Authorization
:
Authorization: Bearer <YOUR_API_KEY>
URL พื้นฐาน
การร้องขอ API ทั้งหมดควรทำไปยัง:
https://api.opentyphoon.ai/v1
Endpoints
Chat Completions
สร้างการตอบกลับสำหรับการสนทนา
Endpoint: POST /v1/chat/completions
พารามิเตอร์ในส่วนเนื้อหาของคำขอ
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
model | string | ใช่ | ID ของโมเดลที่จะใช้ (เช่น “typhoon-v2-70b-instruct”) |
messages | array | ใช่ | อาร์เรย์ของออบเจ็กต์ข้อความที่แสดงถึงประวัติการสนทนา |
max_tokens | integer | ไม่ | จำนวนโทเค็นสูงสุดที่จะสร้าง ค่าเริ่มต้นคือ 150 สูงสุดคือ 8192 โทเค็นที่แบ่งปันระหว่างคำถามและคำตอบ |
temperature | float | ไม่ | อุณหภูมิการสุ่มตัวอย่างระหว่าง 0 และ 2 ค่าที่สูงกว่าเช่น 0.8 จะทำให้เอาต์พุตมีความสุ่มมากขึ้น ในขณะที่ค่าที่ต่ำกว่าเช่น 0.2 จะทำให้มีความเน้นและแน่นอนมากขึ้น ค่าเริ่มต้นคือ 0.7 |
top_p | float | ไม่ | ทางเลือกในการสุ่มตัวอย่างด้วยอุณหภูมิ เรียกว่า nucleus sampling เราแนะนำให้ปรับแต่งค่านี้หรืออุณหภูมิ แต่ไม่ควรปรับทั้งสองค่า ค่าเริ่มต้นคือ 1 |
n | integer | ไม่ | จำนวนตัวเลือกการตอบกลับของการสนทนาที่จะสร้างสำหรับแต่ละข้อความที่ป้อนเข้ามา ค่าเริ่มต้นคือ 1 |
stream | boolean | ไม่ | หากตั้งค่าเป็น true ข้อความบางส่วนจะถูกส่งเป็นเหตุการณ์ที่เซิร์ฟเวอร์ส่งเฉพาะข้อมูล ค่าเริ่มต้นคือ false |
stop | string หรือ array | ไม่ | ลำดับสูงสุด 4 ลำดับที่ API จะหยุดสร้างโทเค็นเพิ่มเติม |
presence_penalty | float | ไม่ | ตัวเลขระหว่าง -2.0 และ 2.0 ค่าบวกจะลงโทษโทเค็นใหม่ตามที่ปรากฏในข้อความจนถึงตอนนี้ ค่าเริ่มต้นคือ 0 |
frequency_penalty | float | ไม่ | ตัวเลขระหว่าง -2.0 และ 2.0 ค่าบวกจะลงโทษโทเค็นใหม่ตามความถี่ที่มีอยู่ในข้อความจนถึงตอนนี้ ค่าเริ่มต้นคือ 0 |
repetition_penalty | float | ไม่ | ตัวเลขระหว่าง 1.0 และ 2.0 ลงโทษโทเค็นที่ซ้ำกัน ค่าเริ่มต้นคือ 1.0 เราแนะนำ 1.05 สำหรับผลลัพธ์ที่ดี |
user | string | ไม่ | ตัวระบุเฉพาะที่แสดงถึงผู้ใช้ปลายทางของคุณ ซึ่งสามารถช่วยในการตรวจสอบและตรวจจับการใช้งานที่ไม่เหมาะสม |
รูปแบบอาร์เรย์ Messages
แต่ละข้อความในอาร์เรย์ messages ควรมี role
และ content
:
{ "role": "system" | "user" | "assistant", "content": "เนื้อหาข้อความ"}
system
: กำหนดพฤติกรรมของผู้ช่วยuser
: ข้อความของผู้ใช้assistant
: ข้อความจากผู้ช่วย
ตัวอย่างคำขอ
curl --location 'https://api.opentyphoon.ai/v1/chat/completions' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <YOUR_API_KEY>' \ --data '{ "model": "typhoon-v2-70b-instruct", "messages": [ { "role": "system", "content": "You are a helpful assistant that translates English to Thai." }, { "role": "user", "content": "Translate the following: Hello, how are you?" } ], "temperature": 0.7, "max_tokens": 256 }'
import openai
client = openai.OpenAI( api_key="<YOUR_API_KEY>", base_url="https://api.opentyphoon.ai/v1")
response = client.chat.completions.create( model="typhoon-v2-70b-instruct", messages=[ {"role": "system", "content": "You are a helpful assistant that translates English to Thai."}, {"role": "user", "content": "Translate the following: Hello, how are you?"} ], temperature=0.7, max_tokens=256)
print(response.choices[0].message.content)
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: '<YOUR_API_KEY>', baseURL: 'https://api.opentyphoon.ai/v1',});
async function translate() { const response = await openai.chat.completions.create({ model: 'typhoon-v2-70b-instruct', messages: [ { role: 'system', content: 'You are a helpful assistant that translates English to Thai.' }, { role: 'user', content: 'Translate the following: Hello, how are you?' } ], temperature: 0.7, max_tokens: 256 });
console.log(response.choices[0].message.content);}
translate();
รูปแบบการตอบกลับ
{ "id": "cmpl-abc123", "object": "chat.completion", "created": 1677858242, "model": "typhoon-v2-70b-instruct", "usage": { "prompt_tokens": 25, "completion_tokens": 12, "total_tokens": 37 }, "choices": [ { "message": { "role": "assistant", "content": "สวัสดี คุณสบายดีไหม?" }, "finish_reason": "stop", "index": 0 } ]}
การตอบกลับแบบสตรีมมิ่ง
เมื่อตั้งค่า stream
เป็น true
API จะส่งการตอบกลับบางส่วนในขณะที่กำลังสร้าง โดยแต่ละชิ้นส่วนจะมีเนื้อหาที่สร้างขึ้นใหม่:
data: {"id":"cmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"typhoon-v2-70b-instruct","choices":[{"index":0,"delta":{"role":"assistant","content":"สวัสดี"},"finish_reason":null}]}
data: {"id":"cmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"typhoon-v2-70b-instruct","choices":[{"index":0,"delta":{"content":" คุณ"},"finish_reason":null}]}
data: {"id":"cmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"typhoon-v2-70b-instruct","choices":[{"index":0,"delta":{"content":"สบายดี"},"finish_reason":null}]}
data: {"id":"cmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"typhoon-v2-70b-instruct","choices":[{"index":0,"delta":{"content":"ไหม?"},"finish_reason":null}]}
data: {"id":"cmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"typhoon-v2-70b-instruct","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
from openai import OpenAI
client = OpenAI( api_key="<YOUR_API_KEY>", base_url="https://api.opentyphoon.ai/v1")
stream = client.chat.completions.create( model="typhoon-v2-70b-instruct", messages=[ {"role": "user", "content": "เล่าเรื่องตำนานไทยสั้นๆ"} ], stream=True)
# ประมวลผลการตอบกลับแบบสตรีมมิ่งfor chunk in stream: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end="", flush=True)print() # เพิ่มการขึ้นบรรทัดใหม่ที่ตอนจบ
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: '<YOUR_API_KEY>', baseURL: 'https://api.opentyphoon.ai/v1',});
async function streamCompletion() { const stream = await openai.chat.completions.create({ model: 'typhoon-v2-70b-instruct', messages: [ { role: 'user', content: 'เล่าเรื่องตำนานไทยสั้นๆ' } ], stream: true, });
for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content || ''); } console.log(); // เพิ่มการขึ้นบรรทัดใหม่ที่ตอนจบ}
streamCompletion();
การจัดการข้อผิดพลาด
API ส่งคืนรหัสสถานะ HTTP มาตรฐานเพื่อแสดงความสำเร็จหรือความล้มเหลวของคำขอ
รหัสสถานะ | คำอธิบาย |
---|---|
200 | OK - คำขอสำเร็จ |
400 | Bad Request - คำขอไม่ถูกต้องหรือไม่ถูกรูปแบบ |
401 | Unauthorized - API key ไม่ถูกต้อง |
403 | Forbidden - API key ไม่มีสิทธิ์ในการดำเนินการตามคำขอ |
404 | Not Found - ไม่พบทรัพยากรที่ร้องขอ |
429 | Too Many Requests - เกินขีดจำกัดอัตราการใช้งาน |
500 | Internal Server Error - เกิดข้อผิดพลาดบนเซิร์ฟเวอร์ |
รูปแบบการตอบกลับข้อผิดพลาด
{ "error": { "message": "คำอธิบายของข้อผิดพลาด", "type": "invalid_request_error", "param": null, "code": null }}