ຂ້າມໄປຫາເນື້ອຫາ
ເລີ່ມໄວ

ເລີ່ມໄວ

ສົ່ງຄຳຮ້ອງຂໍທຳອິດ: ຮັບ key, ສົ່ງໜຶ່ງຂໍ້ຄວາມ ແລະ ອ່ານຄຳຕອບ. API ໃຊ້ຮູບແບບ OpenAI ແລະ Anthropic, ດັ່ງນັ້ນ SDK ທີ່ທ່ານໃຊ້ຢູ່ແລ້ວຈະໃຊ້ໄດ້ຫຼັງຈາກປ່ຽນ base URL ແລະ key.

1. ຮັບ key ຂອງທ່ານ

ທຸກບັນຊີມີ API key ໜຶ່ງອັນ. ເຂົ້າສູ່ລະບົບ, ເປີດ Keys & usage ແລະ ຄັດລອກມັນ. key ໃຊ້ໄດ້ກັບທຸກ endpoint ແລະ ທຸກ model. Keys & usage

2. ຊີ້ client ຂອງທ່ານໄປຫາ API

ທຸກ endpoint ຢູ່ພາຍໃຕ້ base URL ດຽວ. SDK ຂອງ OpenAI ຮັບມັນພ້ອມ /v1 ທີ່ທ້າຍ; SDK ຂອງ Anthropic ຮັບມັນໂດຍບໍ່ມີ, ເພາະມັນເພີ່ມ /v1/messages ເອງ.

Client Base URL
SDK ຂອງ OpenAI ແລະ client ທີ່ເຂົ້າກັນໄດ້ກັບ OpenAI https://api.shannon-ai.com/v1
SDK ຂອງ Anthropic https://api.shannon-ai.com

ສາມ endpoint ສ້າງຂໍ້ຄວາມ. ພວກມັນເຂົ້າເຖິງ model ດຽວກັນ; ເລືອກອັນທີ່ຮູບແບບກົງກັບທີ່ໂຄ້ດຂອງທ່ານໃຊ້ຢູ່ແລ້ວ.

Endpoint ຮູບແບບ
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. ສົ່ງຄຳຮ້ອງຂໍທຳອິດ

ສົ່ງຂໍ້ຄວາມ user ໜຶ່ງອັນໄປຫາ shannon-3 ທີ່ endpoint Chat Completions. ແທນ YOUR_API_KEY ດ້ວຍ key ຂອງທ່ານ.

POST https://api.shannon-ai.com/v1/chat/completions

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)
ຟີລດ໌ ປະເພດ ຄ່າເລີ່ມຕົ້ນ ຄຳອະທິບາຍ
model string id ຂອງ model ທີ່ຕອບ. id ຖືກລາຍຊື່ໃນ Models & pricing.
messages array ການສົນທະນາມາຮອດຕອນນີ້: object ທີ່ມີ role ແລະ content. ຂໍ້ຄວາມ user ສຸດທ້າຍແມ່ນ prompt. ຈຳເປັນ.
max_tokens integer 4096 ງົບ output ຂອງຄຳຮ້ອງຂໍ, ຈາກ 1 ຫາ 65,536. ຄຳຮ້ອງຂໍກັນຈຳນວນນີ້ຈາກຍອດເງິນຂອງທ່ານ ແລະ ຖືກຄິດເງິນຕາມທີ່ໃຊ້ຈິງ.
stream boolean false true ສົ່ງຄຳຕອບເທື່ອລະສ່ວນໃນຂະນະທີ່ຖືກຂຽນ.

body ຂອງຄຳຮ້ອງຂໍເປັນ JSON ແລະ ຕ້ອງມີ header Content-Type: application/json. ລາຍຊື່ຟີລດ໌ທັງໝົດຢູ່ໃນໜ້າຂອງ endpoint. Chat Completions

ຄຳຕອບ

ການເອີ້ນທີ່ບໍ່ມີ stream ສົ່ງ object JSON ໜຶ່ງອັນກັບຄືນເມື່ອຄຳຕອບສົມບູນ. ຂໍ້ຄວາມ ແລະ ຕົວເລກຂ້າງລຸ່ມເປັນຕົວຢ່າງ.

200 JSON
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What would you like to work on?",
        "reasoning_content": "A greeting. A short, friendly reply fits."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1386,
    "completion_tokens": 74,
    "total_tokens": 1460
  }
}
ຟີລດ໌ ປະເພດ ຄຳອະທິບາຍ
id string chatcmpl- ຕາມດ້ວຍຕົວອັກສອນເລກຖານສິບຫົກ 32 ຕົວ.
object string ເປັນ chat.completion ສະເໝີ.
created integer ເວລາຂອງຄຳຕອບເປັນວິນາທີ Unix.
model string id ທີ່ເຜີຍແຜ່ຂອງ model ທີ່ຕອບ, ເຖິງແມ່ນທ່ານຈະສົ່ງ alias ຫຼື ການສະກົດອື່ນ.
choices array ມີໜຶ່ງລາຍການສະເໝີ, ດ້ວຍ index 0.
choices[0].message.role string ເປັນ assistant ສະເໝີ.
choices[0].message.content string | null ຄຳຕອບ. ມັນເປັນ null ໄດ້ເມື່ອຄຳຕອບມີ tool_calls.
choices[0].message.reasoning_content string | null reasoning ຂອງ model ກ່ອນຄຳຕອບ, ຫຼື null ເມື່ອບໍ່ມີ.
choices[0].message.tool_calls array ມີສະເພາະເມື່ອ model ເອີ້ນໜຶ່ງໃນ tool ທີ່ທ່ານປະກາດ.
choices[0].finish_reason string stop ສຳລັບຄຳຕອບ, tool_calls ເມື່ອ model ເອີ້ນ tool.
usage.prompt_tokens integer tokens ທີ່ model ອ່ານສຳລັບຄຳຕອບນີ້. ໃນ shannon-2-* ແລະ ຕະກູນ Shannon 3 ຈຳນວນນີ້ອາດຫຼາຍກວ່າຂໍ້ຄວາມທີ່ທ່ານສົ່ງ.
usage.completion_tokens integer ຈຳນວນ tokens ທີ່ model ຂຽນຂຶ້ນມາ.
usage.total_tokens integer ຍອດລວມ. ຄ່າໃຊ້ຈ່າຍຂອງ model Shannon ຖືກຄິດຈາກຕົວເລກນີ້.
  • usage ເກັບຈຳນວນ tokens, ບໍ່ແມ່ນເງິນ. ສິ່ງທີ່ການເອີ້ນຫັກຈາກຍອດເງິນຂອງທ່ານສະແດງຕໍ່ຄຳຮ້ອງຂໍໃນ Keys & usage; ວິທີຄິດຢູ່ໃນໜ້າຂີດຈຳກັດ ແລະ ຍອດເງິນ. ຂີດຈຳກັດ ແລະ ຍອດເງິນ
  • ທຸກຄຳຕອບ, ລວມທັງຂໍ້ຜິດພາດ ແລະ stream, ມີ header x-request-id. ຖ້າຄຳຮ້ອງຂໍຂອງທ່ານມີ header x-request-id, ຄ່າຂອງມັນຈະກັບມາ; ບໍ່ດັ່ງນັ້ນຄ່າແມ່ນຕົວອັກສອນເລກຖານສິບຫົກ 12 ຕົວ. ເກັບມັນໄວ້ໃນ log ຂອງທ່ານ: ມັນໃຊ້ຕັ້ງຊື່ຄຳຮ້ອງຂໍອັນດຽວນີ້.

ການເອີ້ນດຽວກັນແບບ stream

ຕັ້ງ stream ເປັນ true ເພື່ອອ່ານຄຳຕອບໃນຂະນະທີ່ມັນຖືກຂຽນ. ທຸກຢ່າງອື່ນໃນຄຳຮ້ອງຂໍຄືເກົ່າ.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

stream = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024,
    stream=True
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

ແຕ່ລະ frame ຂອງ stream ແມ່ນໜຶ່ງແຖວທີ່ເລີ່ມດ້ວຍ data: ແລະ ມີ object JSON. ໜຶ່ງ frame, ພິມເປັນຫຼາຍແຖວ:

ໜຶ່ງ frame
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Frame, ຕາມລຳດັບ delta finish_reason
ໃນຂະນະທີ່ model ຄິດຫາເຫດຜົນ. ສູນ frame ຫຼື ຫຼາຍກວ່ານັ້ນ. {"reasoning_content": "…"} null
ຄຳຕອບ, ເທື່ອລະສ່ວນ. ສູນ frame ຫຼື ຫຼາຍກວ່ານັ້ນ. {"content": "…"} null
frame JSON ສຸດທ້າຍ. ມັນຍັງມີ usage ນຳ; ທ່ານບໍ່ຕ້ອງຂໍມັນ. {} "stop"
ຈຸດຈົບຂອງ stream: ແຖວ data: [DONE].
  • ຄຳຕອບມີ status 200 ແລະ content-type: text/event-stream. ທຸກ frame ແມ່ນແຖວ data: <json> ຕາມດ້ວຍແຖວວ່າງ.
  • ແຖວ : ping ມາທຸກ 15 ວິນາທີ. ມັນເປັນ comment ທີ່ຮັກສາການເຊື່ອມຕໍ່ໃຫ້ເປີດຢູ່; client SSE ຂ້າມມັນ.
  • ຄວາມລົ້ມເຫຼວຫຼັງຈາກ stream ເປີດແລ້ວຈະມາເປັນ frame data: {"error": {…}}. status ຍັງເປັນ 200, ດັ່ງນັ້ນໃຫ້ກວດ frame.

ສະຕຣີມມິ້ງ

ຖ້າການເອີ້ນລົ້ມເຫຼວ

ຂໍ້ຜິດພາດແມ່ນ object JSON ທີ່ມີ error ເຊິ່ງເກັບ type ແລະ message. ນີ້ແມ່ນຄຳຕອບທີ່ການເອີ້ນຄັ້ງທຳອິດພົບເລື້ອຍທີ່ສຸດ.

ສະຖານະ ປະເພດ ຂໍ້ຄວາມ ຄວາມໝາຍ
401 authentication_error Missing authentication ບໍ່ມີ key ຮອດ API. ສົ່ງ Authorization: Bearer ຕາມດ້ວຍ key ຂອງທ່ານ.
401 authentication_error Invalid API key key ບໍ່ແມ່ນ key ປັດຈຸບັນຂອງບັນຊີໃດ. ຄັດລອກມັນໃໝ່ຈາກ Keys & usage.
400 invalid_request_error unknown model: <id> model ບໍ່ແມ່ນ id ທີ່ເຜີຍແຜ່. ໃຊ້ id ຈາກ Models & pricing.
422 invalid_request_error Failed to deserialize the JSON body into the target type… ຟີລດ໌ມີປະເພດ JSON ຜິດ, ຫຼື ຂາດ messages.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan ງົບ output ຂອງຄຳຮ້ອງຂໍບໍ່ພໍດີກັບຍອດເງິນຂອງທ່ານ.

ການຈັດການຂໍ້ຜິດພາດ

ໄປຕໍ່ບ່ອນໃດ