Swiss AI GroupDocs
ឯកសារយោង API

SwissAI API

API chat completions ដែលត្រូវគ្នានឹង OpenAI។ បង្កើតសោនៅក្នុងផតថល កំណត់ token Bearer រួចចាប់ផ្តើម — SDK OpenAI ដែលមានស្រាប់ដំណើរការដោយគ្រាន់តែប្តូរ base_url

ចាប់ផ្តើមរហ័ស

បីជំហានទៅកាន់ការឆ្លើយតបដំបូង៖

1. នៅក្នុងផ្ទាំងគ្រប់គ្រងអ្នកអភិវឌ្ឍន៍ ក្រោម API Keys បង្កើតសោមួយ។ វាបង្ហាញតែម្តងគត់ — រក្សាទុកឱ្យមានសុវត្ថិភាព។ ទម្រង់៖ sk-souheng-…

2. ផ្ញើសំណើទៅកាន់ chat endpoint៖

curlcurl -N https://api.swiss-ai.one/api/v1/external/chat/completions \
  -H "Authorization: Bearer sk-souheng-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [{ "role": "user", "content": "ស្វាគមន៍ជាភាសាអាល្លឺម៉ង់ស្វីស។" }],
    "stream": true
  }'

3. អ្នកនឹងទទួលបាន SSE stream ដែលត្រូវគ្នានឹង OpenAI (សូមមើល Streaming)។

ការផ្ទៀងផ្ទាត់

ផ្ទៀងផ្ទាត់សំណើនីមួយៗដោយប្រើសោ API របស់អ្នកនៅក្នុង header Authorization

httpAuthorization: Bearer sk-souheng-YOUR_KEY
ម៉ូដែលត្រូវបានភ្ជាប់ទៅនឹងសោ។ តើសោប្រើម៉ូដែលណា គឺកំណត់នៅក្នុងផតថល។ វាល model នៅក្នុង body សំណើត្រូវបានមិនអើពើ — អ្នកអាចផ្ញើតម្លៃណាក៏បាន (ងាយស្រួលសម្រាប់ SDK OpenAI ដែលមិនបានកែ)។

សោ API ត្រូវបានគ្រប់គ្រងតែនៅក្នុងផតថល (បង្កើត រាយ ដកហូត)។ អតិបរមា 20 សោសកម្មក្នុងមួយគណនី។

URL មូលដ្ឋាន

គោលបំណងURL
មូលដ្ឋាន APIhttps://api.swiss-ai.one
Chat Completions/api/v1/external/chat/completions
OpenAI SDK base_urlhttps://api.swiss-ai.one/api/v1/external

POST/api/v1/external/chat/completions

បង្កើតការឆ្លើយតប chat។ Streaming បើកតាមលំនាំដើម។

Body សំណើ

វាលប្រភេទលំនាំដើមការពិពណ៌នា
messages ត្រូវការarrayបញ្ជី { "role", "content" }។ តួនាទី៖ system, user, assistant, tool
streambooleantrueSSE streaming បើក/បិទ។
temperaturenumber0.70.0–2.0.
max_tokensinteger40961–128000.
toolsarraynullនិយមន័យឧបករណ៍ក្នុងទម្រង់ OpenAI។
tool_choicestringnullឧ. "auto"
ចំណាំ៖ model ត្រូវបានទទួលយក ប៉ុន្តែមិនអើពើ (ម៉ូដែលកំណត់ដោយសោ)។ វាលដែលមិនស្គាល់ត្រូវបានមិនអើពើ។

Streaming (SSE)

ជាមួយ "stream": true API បញ្ជូន text/event-stream ក្នុងទម្រង់ chunk OpenAI។ Stream បញ្ចប់ដោយ data: [DONE]

ssedata: {"id":"chatcmpl-1a2b3c4d","object":"chat.completion.chunk","created":1750000000,"model":"swissai","choices":[{"index":0,"delta":{"content":"Hallo"},"finish_reason":null}]}

data: {"id":"chatcmpl-1a2b3c4d","object":"chat.completion.chunk","created":1750000000,"model":"swissai","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}

data: {"id":"chatcmpl-1a2b3c4d","object":"chat.completion.chunk","created":1750000000,"model":"swissai","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

គ្មាន Streaming

ជាមួយ "stream": false អ្នកទទួលបានវត្ថុ chat.completion តែមួយ៖

json{
  "id": "chatcmpl-1a2b3c4d",
  "object": "chat.completion",
  "created": 1750000000,
  "model": "swissai",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "សួស្តី! តើខ្ញុំអាចជួយអ្វីបាន?" },
      "finish_reason": "stop"
    }
  ]
}

ឧបករណ៍ / function calling

បញ្ជូនឧបករណ៍ក្នុងទម្រង់ OpenAI។ ពេលម៉ូដែលហៅឧបករណ៍ tool_calls ត្រឡប់មកវិញ (ទាំង streaming និងមិន streaming)។ បញ្ជូនលទ្ធផលត្រឡប់ជាសារ tool ជាមួយ tool_call_id ដែលត្រូវគ្នា។

json{
  "messages": [{ "role": "user", "content": "អាកាសធាតុនៅ Zürich យ៉ាងណា?" }],
  "stream": false,
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "អាកាសធាតុបច្ចុប្បន្នសម្រាប់ទីក្រុង",
      "parameters": {
        "type": "object",
        "properties": { "city": { "type": "string" } },
        "required": ["city"]
      }
    }
  }],
  "tool_choice": "auto"
}

Python

requests (streaming)

pythonimport json, requests

resp = requests.post(
    "https://api.swiss-ai.one/api/v1/external/chat/completions",
    headers={"Authorization": "Bearer sk-souheng-YOUR_KEY"},
    json={"messages": [{"role": "user", "content": "សួស្តី"}], "stream": True},
    stream=True,
)
for line in resp.iter_lines():
    if not line:
        continue
    line = line.decode()
    if line.startswith("data: "):
        data = line[6:]
        if data == "[DONE]":
            break
        delta = json.loads(data)["choices"][0]["delta"]
        print(delta.get("content", ""), end="", flush=True)

JavaScript / Node

javascriptconst res = await fetch(
  "https://api.swiss-ai.one/api/v1/external/chat/completions",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer sk-souheng-YOUR_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      messages: [{ role: "user", content: "សួស្តី" }],
      stream: true,
    }),
  }
);

const reader = res.body.getReader();
const decoder = new TextDecoder();
let buffer = "";
for (;;) {
  const { done, value } = await reader.read();
  if (done) break;
  buffer += decoder.decode(value, { stream: true });
  const lines = buffer.split("\n");
  buffer = lines.pop();
  for (const line of lines) {
    if (!line.startsWith("data: ")) continue;
    const data = line.slice(6);
    if (data === "[DONE]") { reader.cancel(); break; }
    const delta = JSON.parse(data).choices[0].delta;
    if (delta.content) process.stdout.write(delta.content);
  }
}

OpenAI SDK

SDK OpenAI ដែលមានស្រាប់ដំណើរការដោយកំណត់ base_url និង api_keymodel គឺជាវាលចាំបាច់របស់ SDK ប៉ុន្តែត្រូវបានមិនអើពើនៅផ្នែកម៉ាស៊ីនមេ។

pythonfrom openai import OpenAI

client = OpenAI(
    api_key="sk-souheng-YOUR_KEY",
    base_url="https://api.swiss-ai.one/api/v1/external",
)

stream = client.chat.completions.create(
    model="swissai",  # តម្លៃណាក៏បាន — មិនអើពើ
    messages=[{"role": "user", "content": "សួស្តី"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")
javascriptimport OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-souheng-YOUR_KEY",
  baseURL: "https://api.swiss-ai.one/api/v1/external",
});

const stream = await client.chat.completions.create({
  model: "swissai",            // តម្លៃណាក៏បាន — មិនអើពើ
  messages: [{ role: "user", content: "សួស្តី" }],
  stream: true,
});
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

វិក្កយបត្រ និងដែនកំណត់

  • សំណើត្រូវបានគិតប្រាក់តាម token ពីសមតុល្យ (wallet) របស់អ្នក។
  • សមតុល្យ និងការប្រើប្រាស់អាចមើលនៅផ្ទាំងគ្រប់គ្រង ហើយអ្នកក៏អាចបញ្ចូលប្រាក់នៅទីនោះដែរ។
  • អតិបរមា 20 សោ API សកម្មក្នុងមួយគណនី។

លេខកូដកំហុស

ស្ថានភាពអត្ថន័យ
401សោ API បាត់ មិនត្រឹមត្រូវ ឬអសកម្ម។
402សមតុល្យអស់ — បញ្ចូលប្រាក់នៅផ្ទាំងគ្រប់គ្រង។
404ផ្លូវ / endpoint មិនស្គាល់។
429លើសដែនកំណត់អត្រា — សូមព្យាយាមម្តងទៀតពេលក្រោយ។
5xxបញ្ហាម៉ាស៊ីនមេ / upstream បណ្តោះអាសន្ន។