OpenAI
ეს გვერდი მანქანური თარგმანის მეშვეობით ითარგმნა. სტატიის ინგლისური დედნის ნახვა.

რა არის token-ები და როგორ დავითვალოთ ისინი?

განახლებულია: 8 days ago

რა არის token-ები?

token-ები ტექსტის სამშენებლო ბლოკებია, რომლებსაც OpenAI-ის მოდელები ამუშავებს. ისინი შეიძლება იყოს ერთი სიმბოლოსავით მოკლე ან სრული სიტყვის სიგრძის, ენისა და კონტექსტის მიხედვით. ჰარები, პუნქტუაცია და სიტყვების ნაწილებიც token-ების რაოდენობაში შედის. ასე ყოფს API თქვენს ტექსტს შიდა დონეზე პასუხის გენერირებამდე.

სასარგებლო მიახლოებითი წესები ინგლისურისთვის:

  • 1 token ≈ 4 სიმბოლო

  • 1 token ≈ სიტყვის ¾

  • 100 token ≈ 75 სიტყვა

  • 1–2 წინადადება ≈ 30 token

  • 1 აბზაცი ≈ 100 token

  • ~1,500 სიტყვა ≈ 2,048 token

ტოკენიზაცია განსხვავდება მოდელისა და კოდირების მიხედვით. თქვენი სამიზნე მოდელისთვის ზუსტი რაოდენობის მისაღებად გამოიყენეთ Tokenizer-ის ხელსაწყო ან tiktoken.encoding_for_model(model).

მაგალითები

აქ მოცემულია რეალური ტექსტების ნიმუშები მათი მიახლოებითი token-ების რაოდენობით:

  • უეინ გრეცკის ციტატა „თქვენ აცდენთ იმ დარტყმების 100%-ს, რომლებსაც არ ასრულებთ“ = 11 token

  • OpenAI-ის ქარტია = 476 token

  • აშშ-ის დამოუკიდებლობის დეკლარაცია = 1,695 token

როგორ გამოითვლება token-ების რაოდენობა

როდესაც ტექსტს API-ში აგზავნით:

  1. ტექსტი token-ებად იყოფა.

  2. მოდელი ამ token-ებს ამუშავებს.

  3. პასუხი გენერირდება token-ების მიმდევრობად, შემდეგ კი ისევ ტექსტად გარდაიქმნება.

token-ების გამოყენება რამდენიმე კატეგორიაში აღირიცხება:

  • შეყვანის token-ები – token-ები თქვენს მოთხოვნაში.

  • გამოტანის token-ები – პასუხში გენერირებული token-ები.

  • ქეშირებული token-ები – საუბრის ისტორიაში ხელახლა გამოყენებული token-ები (ხშირად შემცირებული ტარიფით ანგარიშდება).

  • მსჯელობის token-ები – ზოგიერთ მოწინავე მოდელში საბოლოო შედეგის შექმნამდე შიგნით დამატებითი „აზროვნების ნაბიჯები“ შედის.

ეს რაოდენობები ჩანს თქვენი API პასუხის მეტამონაცემებში და გამოიყენება ბილინგისა და გამოყენების თვალყურის დევნებისთვის.

ტოკენიზაციის უკეთ შესასწავლად შეგიძლიათ გამოიყენოთ ჩვენი ინტერაქტიული Tokenizer-ის ხელსაწყო, რომელიც token-ების რაოდენობის გამოთვლასა და ტექსტის token-ებად დაყოფის ნახვას გაძლევთ.

ან, თუ გსურთ ტექსტის პროგრამულად ტოკენებად დაყოფა, გამოიყენეთ Tiktoken, როგორც სწრაფი BPE ტოკენიზატორი, რომელიც სპეციალურად OpenAI-ის მოდელებისთვის გამოიყენება.

token-ების ლიმიტები

თითოეულ მოდელს აქვს token-ების მაქსიმალური კომბინირებული ლიმიტი (შეყვანა + გამოტანა). ამჟამინდელი მაღალი ტევადობის მოდელები კონტექსტში ასიათასობით token-ს უჭერს მხარს, თუმცა პრაქტიკული ლიმიტები შეიძლება განსხვავდებოდეს მოდელის ვერსიისა და თქვენი გამოყენების დონის მიხედვით.

თუ ლიმიტს გადააჭარბებთ, შეგიძლიათ:

  • შეამოკლოთ ან სხვაგვარად ჩამოაყალიბოთ მოთხოვნები.

  • დიდი ტექსტი უფრო მცირე ნაწილებად დაყოთ.

  • გაგზავნამდე შეაჯამოთ ან წინასწარ დაამუშაოთ შეყვანები.

token-ების ფასები

API-ის გამოყენების ფასი განისაზღვრება თითო token-ზე და იცვლება მოდელისა და იმის მიხედვით, token-ები შეყვანისაა, გამოტანის თუ ქეშირებული. მიმდინარე ტარიფებისთვის იხილეთ OpenAI-ის ფასების გვერდი. ზოგიერთმა მსჯელობის მოდელმა შეიძლება შიდა დონეზე მეტი token გამოიყენოს, თუმცა მიზნად ისახავს ეფექტიანობის გაუმჯობესებას თითო დასრულებული ამოცანისთვის საჭირო token-ების რაოდენობის შემცირებით.

token-ების შესწავლა

API სიტყვებს კორპუსის მონაცემებში მათი კონტექსტის მიხედვით ამუშავებს. მოდელები იღებენ მოთხოვნას, შეყვანას token-ების სიად გარდაქმნიან, მოთხოვნას ამუშავებენ და პროგნოზირებულ token-ებს ისევ იმ სიტყვებად გარდაქმნიან, რომლებსაც პასუხში ვხედავთ.

ის, რაც ჩვენთვის ორ იდენტურ სიტყვად ჩანს, შეიძლება სხვადასხვა token-ად გენერირდეს იმის მიხედვით, როგორ არის ტექსტში სტრუქტურირებული. განვიხილოთ, როგორ აგენერირებს API token-ის მნიშვნელობებს სიტყვა „red“-ისთვის ტექსტში მისი კონტექსტის მიხედვით:

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

ზემოთ პირველ მაგალითში token „2266“ ‘ red’-ისთვის მოიცავს ბოლოში მდგომ ჰარს (შენიშვნა: ეს token ID-ები მხოლოდ საჩვენებელი მიზნებისთვისაა).

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

token „2296“ ‘ Red’-ისთვის (წინ მდგომი ჰარით და დიდი ასოთი დაწყებული) განსხვავდება token „2266“-ისგან, რომელიც ‘ red’-ს შეესაბამება პატარა ასოთი.

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

როდესაც ‘Red’ წინადადების დასაწყისში გამოიყენება, გენერირებული token წინ მდგომ ჰარს არ შეიცავს. token „7738“ განსხვავდება ამ სიტყვის წინა ორი მაგალითისგან.

დაკვირვებები:

რაც უფრო მოსალოდნელი/ხშირია token, მით უფრო დაბალი ნომერი ენიჭება მას:

  • წერტილისთვის გენერირებული token ყველა 3 წინადადებაში ერთნაირია („13“). ეს იმიტომ ხდება, რომ კონტექსტურად წერტილი კორპუსის მონაცემებში საკმაოდ მსგავსად გამოიყენება.

  • ‘red’-ისთვის გენერირებული token იცვლება წინადადებაში მისი მდებარეობის მიხედვით:

    • პატარა ასოთი წინადადების შუაში: ‘ red’ - (token: „2266“)

    • დიდი ასოთი წინადადების შუაში: ‘ Red’ - (token: „2297“)

    • დიდი ასოთი წინადადების დასაწყისში: ‘Red’ - (token: „7738“)

სასარგებლო იყო ეს სტატია?