გადასვლა შინაარსზე
მსჯელობის effort

მსჯელობის effort

ახალი

მოდელი, რომელიც მსჯელობს, თავის მსჯელობის ტექსტს პასუხის გვერდით, ცალკე ველში აბრუნებს. hosted open-weight მოდელებზე ერთი მოთხოვნის ველი განსაზღვრავს, რამდენად ღრმად მსჯელობს მოდელი პასუხამდე.

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="Kimi-K3-3BIT-REAP",
    reasoning_effort="low",
    messages=[{"role": "user", "content": "Is 221 a prime number?"}],
)

message = response.choices[0].message
print("Reasoning:", getattr(message, "reasoning_content", None))
print("Answer:", message.content)
print("Reasoning tokens:", response.usage.completion_tokens_details.reasoning_tokens)

პასუხი მსჯელობის ტექსტს reasoning_content-ში შეიცავს, პასუხს content-ში, ხოლო მსჯელობის ტოკენებს usage-ში:

200 JSON
{
  "id": "chatcmpl-2a6c8e0b4d1f4a3c9e7b5d3f1a8c6e4b",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "Kimi-K3-3BIT-REAP",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "No. 221 = 13 x 17, so it is not prime.",
        "reasoning_content": "Try small primes. 221 / 13 = 17, so 221 = 13 x 17."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 43,
    "total_tokens": 57,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens_details": {"reasoning_tokens": 27}
  }
}

რომელი მოდელები მსჯელობენ

მოდელი აბრუნებს მსჯელობის ტექსტს იყენებს effort ველს
shannon-1.6-lite — —
shannon-1.6-pro, shannon-2-lite, shannon-2-pro, shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro, shannon-coder-1 დიახ —
ყველა hosted open-weight მოდელი დიახ დიახ

ეს არის ნიშნულები capabilities.reasoning და capabilities.reasoning_effort, რომლებსაც GET /v1/models ყოველი id-ისთვის აბრუნებს. პასუხი მსჯელობის ტექსტს შეიცავს მხოლოდ მაშინ, როცა მოდელმა ის შექმნა. მოდელები და ფასები

Effort-ის დაყენება

თითოეულ endpoint-ს effort-ის საკუთარი დაწერილობა აქვს. ყველა მათგანი ერთსა და იმავე ოთხ დონეს შორის ირჩევს.

ველი ტიპი ნაგულისხმევი აღწერა მოქმედებს
reasoning_effort string high /v1/chat/completions. რამდენად ღრმად მსჯელობს მოდელი პასუხამდე: off, low, medium ან high. Hosted open-weight მოდელები
reasoning object | string /v1/chat/completions. იგივე მნიშვნელობა, როგორც {"effort": "low"}, ან უბრალო სტრიქონის სახით. თუ ორივე ველი გაიგზავნა, ძალაშია reasoning_effort. Hosted open-weight მოდელები
reasoning.effort string high /v1/responses. იწერება ობიექტის სახით {"effort": "low"}. Hosted open-weight მოდელები
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} ან {"type": "disabled"}. ბიუჯეტი ერთ-ერთ დონეს ირჩევს; იხილეთ ქვემოთ მოცემული ცხრილი. Hosted open-weight მოდელები
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
მნიშვნელობა ასევე მიიღება ეფექტი
off none, minimal მსჯელობის გარეშე. პასუხი მსჯელობის ტექსტს არ შეიცავს.
low მოკლე მსჯელობა.
medium default საშუალო სიღრმე.
high max ყველაზე ღრმა დონე. ეს არის იმ მოთხოვნის დონე, რომელიც მნიშვნელობას არ აგზავნის.
  • მნიშვნელობები იკითხება დიდი და პატარა ასოების გარჩევის გარეშე.
  • მნიშვნელობა default ნიშნავს medium-ს. ველის გამოტოვება ნიშნავს high-ს.
  • Shannon მოდელები (shannon-*) სიღრმეს ყოველ მოთხოვნაში თავად ადგენენ; GET /v1/models მათთვის აბრუნებს reasoning_effort: false.

thinking ბიუჯეტი /v1/messages-ზე

/v1/messages-ზე დონეს ველი thinking ირჩევს. budget_tokens ზემოთ მოცემული დონეებიდან ერთს ირჩევს; ის ტოკენების ცალკე ლიმიტი არ არის. adaptive იკითხება როგორც enabled.

თქვენ აგზავნით დონე
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n}, სადაც n არის 2,048-მდე low
n 2,049-დან 8,192-მდე medium
უფრო დიდი n, ან enabled budget_tokens-ის გარეშე high
thinking ველის გარეშე high

სად მოდის მსჯელობის ტექსტი

მსჯელობის ტექსტი პასუხისგან ყოველთვის გამოყოფილია. თითოეულ ფორმატს მისთვის საკუთარი ადგილი აქვს:

Endpoint სტრიმის გარეშე სტრიმით
/v1/chat/completions choices[0].message.reasoning_content: სტრიქონი, ან null, თუ მოდელმა არაფერი შექმნა. ნაწილები choices[0].delta.reasoning_content-ით, delta.content-იანი ნაწილებამდე.
/v1/responses output ელემენტი {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} message ელემენტამდე. მსჯელობის არარსებობისას ელემენტი არ არის. response.output_item.added reasoning ელემენტით, შემდეგ response.reasoning_summary_text.delta მოვლენები და ერთი response.reasoning_summary_text.done.
/v1/messages პირველი content ბლოკი {"type": "thinking", "thinking": "…"}, შემდეგ text ბლოკი. მსჯელობის არარსებობისას thinking ბლოკი არ არის. thinking content ბლოკი: content_block_start, content_block_delta მოვლენები thinking_delta-ით, content_block_stop. შემდეგ მოდის text ბლოკი.
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "No. 221 = 13 x 17, so it is not prime.",
        "reasoning_content": "Try small primes. 221 / 13 = 17, so 221 = 13 x 17."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 43,
    "total_tokens": 57,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens_details": {"reasoning_tokens": 27}
  }
}

სად ვეძებოთ, მოდელების მიხედვით:

მოდელები სად მოდის ტექსტი
Hosted open-weight მოდელები ყველა endpoint-ზე, სტრიმით თუ სტრიმის გარეშე. მოთხოვნას effort-ით off, ან response_format / text.format-ით, პასუხი მსჯელობის ტექსტის გარეშე მოდის.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro ყველა endpoint-ზე, სტრიმით თუ სტრიმის გარეშე, როცა მოდელმა მსჯელობის ტექსტი შექმნა.
shannon-2-lite, shannon-2-pro /v1/chat/completions, სტრიმის გარეშე: message.reasoning_content-ში. სტრიმით, მოთხოვნაში tools-ისა და response_format-ის გარეშე: სანამ მოდელი მსჯელობს, სტრიმი კომენტარის ხაზებს : thinking შეიცავს, შემდეგ მოდის პასუხის ნაწილები. /v1/messages, სტრიმით: thinking ბლოკი text ბლოკამდე.
shannon-1.6-pro, shannon-coder-1 სტრიმით მიღებულ პასუხებში და იმ მოთხოვნების პასუხებში, რომლებიც tools-ს შეიცავენ, როცა მოდელმა მსჯელობის ტექსტი შექმნა.

/v1/responses-ზე სტრიმის გარეშე მიღებული პასუხი Shannon 3-ის ოჯახისა და hosted open-weight მოდელებისთვის reasoning ელემენტს შეიცავს.

სტრიმის წაკითხვა

სტრიმში მსჯელობის ტექსტი პირველი მოდის, საკუთარ დელტებში, და პასუხი მას მოჰყვება. დაბეჭდეთ ან შეინახეთ ისინი ცალ-ცალკე:

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="Kimi-K3-3BIT-REAP",
    reasoning_effort="medium",
    stream=True,
    messages=[{"role": "user", "content": "Is 221 a prime number?"}],
)

for chunk in stream:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta
    reasoning = getattr(delta, "reasoning_content", None)
    if reasoning:
        print(reasoning, end="", flush=True)      # the reasoning text comes first
    if delta.content:
        print(delta.content, end="", flush=True)  # then the answer

hosted open-weight მოდელის პირველი ნაწილი, მსჯელობისა იქნება თუ პასუხის, ასევე შეიცავს delta.role: "assistant". სტრიმინგი

მსჯელობის ტოკენები და ბილინგი

hosted open-weight მოდელებზე მსჯელობის ტოკენები გამოტანის ტოკენებია: ისინი მოდელის გამოტანის ფასით იანგარიშება და გამოტანის რაოდენობა მათ უკვე შეიცავს. usage აქ მსჯელობის წილს აჩვენებს:

Endpoint ველი შენიშვნა
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens უკვე შედის completion_tokens-ში.
/v1/responses usage.output_tokens_details.reasoning_tokens უკვე შედის output_tokens-ში.
/v1/messages usage.output_tokens მსჯელობა და პასუხი ერთად. ამ ფორმატში ცალკე რაოდენობა არ არის.
  • hosted open-weight მოდელებზე max_tokens პასუხის ტექსტს ზღუდავს. მსჯელობის ტოკენები მასში არ ითვლება.
  • რადგან მსჯელობა გამოტანის სახით იანგარიშება, effort-ის დონე ასევე ღირებულების პარამეტრია: off მსჯელობის ტოკენებს არ ქმნის.
  • Shannon მოდელები აბრუნებენ prompt_tokens-ს, completion_tokens-სა და total_tokens-ს (/v1/messages-ზე input_tokens-სა და output_tokens-ს) მსჯელობის წილის გარეშე და ერთ ერთგვაროვან ფასს იანგარიშებენ თითო ტოკენზე. მოდელები და ფასები

მსჯელობა შემდეგ მოთხოვნაში

მსჯელობის უკან გაგზავნა საჭირო არ არის. თქვენ მიერ გაგზავნილ საუბარში thinking ბლოკი ან reasoning ელემენტი მოდელს არ გადაეცემა, ამიტომ assistant-ის ბიჯის დაბრუნება შეიძლება მასთან ერთადაც და მის გარეშეც. thinking ბლოკს ორი ველი აქვს: type და thinking; signature არ აქვს.

შეცდომები

სტატუსი ტიპი შეტყობინება როდის
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Hosted open-weight მოდელმა მიიღო სიის გარეთ მყოფი მნიშვნელობა, მაგალითად xhigh. თქვენი ბალანსიდან არაფერი იკრიფება.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort სტრიქონი არ არის.

ავთენტიკაციის, ბალანსისა და სერვერის შეცდომები იგივეა, რაც ყველა მოთხოვნისთვის. შეცდომების დამუშავება