Моделът Text Bison Foundation във Vertex AI, както се посочва в документацията, е фино настроен да следва инструкциите на естествен език и е подходящ за различни езикови задачи, като например:

  • Класификация
  • Анализ на настроението
  • Извличане на обект
  • Екстрактен отговор на въпрос
  • Обобщаване
  • Пренаписване на текст в различен стил
  • Генериране на рекламно копие
  • Концептуална идея

Няколко демонстрации и уроци показват колко лесно е да започнете да използвате този модел на основата. Като пример, аз съм в Vertex AI Generative Studio и съм изпълнил примерна подкана I have a day to spare in Mumbai. Give me a day long itenary with places to visitсрещу модела, както е показано по-долу:

Отидох с настройките по подразбиране за модела и в момента съм избрал модела text-bison@001. text-bison@001 model, както се посочва в документацията, има следните възможности:

Еквивалентната команда curl на

За напр. ето и командата curl за извикване на модела също е проста:

API_ENDPOINT="us-central1-aiplatform.googleapis.com"
PROJECT_ID="YOUR_GCP_PROJECT_ID"
MODEL_ID="text-bison@001"

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${API_ENDPOINT}/v1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:predict" -d \
$'{
    "instances": [
        {
            "content": "I have a day to spare in Mumbai. Give me a day long itenary with places to visit?"
        }
    ],
    "parameters": {
        "candidateCount": 1,
        "maxOutputTokens": 256,
        "temperature": 0.2,
        "topP": 0.8,
        "topK": 40
    }
}'

Дотук добре.

Нека поговорим за ценообразуването

Важно е да разбирате както възможностите на модела, така и ценообразуването. Що се отнася до възможностите, ще поддържаме нещата прости по отношение на модела.

Към момента на писане на тази публикация в блога документацията гласи следното:

Max input token: 8192
Max output tokens: 1024
Training data: Up to Feb 2023

Обикновено се счита, че токенът съдържа около 4 знака. Нека запазим тази информация с него.

И така, колко ще бъдете таксувани за вашето запитване. В заявката предоставихте следната подкана:

Имам един свободен ден в Мумбай. Дайте ми еднодневен маршрут с места за посещение?

Може да опитате да направите някакво токенизиране грубо на горните твърдения и да преброите броя на думите и след това броя на знаците и т.н.

Има ли по-добър начин да направите това? Предоставя ли ни Vertex AI метод за определяне на това за нашия анализ? Да, така е. Въведете Получаване на брой символи и таксувани знаци.

Вземете брой токени и таксувани знаци

Тази функция е достъпна в Preview и е добре документирана. В момента тази функция се поддържа в следните модели:

  • text-bison
  • chat-bison
  • textembedding-gecko

Можем да направим бързо изпълнение (и предлагам да направите същото за подканата, която ви интересува). Ще разгледаме следната сложна подкана:

Имам един свободен ден в Мумбай. Бихте ли изготвили маршрут за еднодневно пътуване в Мумбай за някой, който е нов в града. Бих искал да използвам обществен транспорт колкото е възможно повече.

Ако приемем, че имате цялата среда gcloud настроена на вашата машина или още по-добре, използвайте Cloud Shell, това е командата, която ще изпълним, за да получим токена и броя на знаците.

export GCP_PROJECT="Your GCP PROJECT ID"
export MODEL_ID="text-bison"


curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/$GCP_PROJECT/locations/us-central1/publishers/google/models/$MODEL_ID:countTokens"

request.json, който ще предадем в горната команда curl, е показан по-долу:

{
 "instances": [
 { "prompt": "I have a day to spare in Mumbai. Could you build out an itenary for a single day trip in Mumbai for someone who is new to the city. I would like to use public transport as much as possible."}
 ],
}

Получаваме следния изход:

{
  "totalTokens": 45,
  "totalBillableCharacters": 150
}

Ако стартирам горната подкана в инструмента Open AI tokenizer, мога да направя приблизително същото нещо:

хубаво ! Това е добър начин да разберете totalTokens и totalBillableCharacters, за които в крайна сметка ще бъдете таксувани.

Това не е краят, тъй като се таксувате и за изходните жетони. Така че за горната подкана ми върна следния отговор:

**Day 1:**

* Morning:
    * Start your day with a visit to the Chhatrapati Shivaji Maharaj Terminus (CST), a UNESCO World Heritage Site and one of the busiest railway stations in the world. Take some time to explore the station's beautiful architecture, including its soaring dome and intricate carvings.
    * After visiting the CST, head to the nearby Haji Ali Dargah, a Muslim shrine that is one of the most popular tourist destinations in Mumbai. Take a walk along the seashore and enjoy the views of the Arabian Sea.
* Afternoon:
    * In the afternoon, visit the Dharavi slum, the largest slum in Asia. Learn about the lives of the people who live in Dharavi and see how they have made a home for themselves in this challenging environment.
    * After visiting Dharavi, take a rickshaw ride through the city's streets. This is a great way to get a feel for the city and see some of its most iconic landmarks, such as the Gateway of India and the Taj Mahal Palace Hotel.
* Evening:
    * In the evening, head to the Colaba Causeway, a popular shopping street. Browse the stalls for souvenirs and gifts, or grab a bite to eat at one of the many restaurants.
    * After dinner, catch a Bollywood movie at a local theater. This is a great way to experience Indian culture and see some of the country's most popular films.

This is just a suggested itinerary, of course, and you can customize it to fit your interests and time constraints. But no matter how you spend your day in Mumbai, you're sure to have a memorable experience.

Използвайки инструмента Open AI, всичко се свежда до следното:

Ценообразуване на Vertex AI

Трябва да маркирате страницата Цени за поддръжка на Generative AI на Vertex AI.

Преди да стигнем до спецификата на режима Text Bison, няколко общи бележки, както е споменато в документацията:

  • Вие се таксувате за всеки 1000 знака на вход (подкана) и на всеки 1000 знака на изход (отговор).
  • Знаците се броят по UTF-8 кодови точки и празното пространство се изключва от броя.
  • Заявките за предвиждане, които водят до филтрирани отговори, се таксуват само за въвеждането.

Сега, нека да разгледаме ценообразуването за модела Text Bison и ще забележите, че ценообразуването е дадено за 1000 знака ($0,0010 към момента на тази публикация в блога).

Нека да разгледаме предишния ни пример и върнатите входни/изходни токени/символи:

Вход: ~ 150 знака
Изход: ~ 1500 знака

Ако приемем, че са направени 10 обаждания, разглеждаме следния общ брой знаци (като вземем помощ от шаблона, предоставен от официалната документация):

Input cost:
150 input characters x 10 prompts = 1,500 total input characters;
1,500 total input characters x ($0.001 / 1000) = $0.0015 input cost.

Output cost:
1500 output characters x 10 prompts = 15,000 total output characters;
15,000 total output characters x ($0.001 / 1000) = $0.015 output cost.

Total cost:
$0.0015 input cost + $0.015 output cost = $0.0165 total cost.

Надяваме се, че това ви помага да разберете ценообразуването на модела Text Bison. Целта на статията е да гарантира, че сте напълно наясно как ценообразуването може да се увеличи, в случай че това е мащаб на 100 потребители, извършващи 100 заявки на час/ден.

Малко съображения

Тук е важно да разберете няколко точки. Първо е как токенът и знаците могат да варират, ако не са английски. За напр. същата подкана, ако предам на хинди и получа изхода на език на хинди, разглеждаме следните числа:

Подканата на хинди е следната:

मुंबई में मेरे पास एक दिन खाली है। क्या आप किसी ऐसे व्यक्ति के लिए मुंबई की एक दिवसीय यात्रा की योजना बना सकते हैं जो शहर में नया है। मैं यथासंभव सार्वजनिक परिवहन का उपयोग करना चाहूँगा।

Крайната точка за броене на токени на Vertex AI ми връща следния изход:

{
 “totalTokens”: 62,
 “totalBillableCharacters”: 148
}

Опитайте с различни езици и ще откриете, че totalTokens и totalBillableCharacters ще се различават на различните езици (поради гъстотата на езика и други фактори). Това също повдига интересен момент дали таксуването чрез токени или чрез символи е по-полезно, но това е съвсем различна дискусия и ви препоръчвам да експериментирате с него, особено ако трябва да поддържате няколко езика.

Следващият е да разгледаме току-що обявения модел Text Bison 32K. Свойствата на този модел са както следва:

Виждате огромен скок в поддържаните ограничения на токените. Общо 32K в токени (като входните и изходните токени се броят към общ максимум от 32K). Важното тук е следното:

  1. Страхотна демонстрация е да вмъкнете целия документ от 40–50 страници в самия Prompt и директно да направите заявка към документа.
  2. Ако възнамерявате да направите това — обмислете първо да измерите каква ще бъде вашата цена на обаждане. Хиляди знаци в стотици потребители може да се съберат бързо.

Надявам се това да помогне за изясняване на модела на ценообразуване. Горното е само моето виждане като разработчик за това как разбрах цените за модела Text Bison. Не съм експерт по ценообразуването и ще се радвам да чуя вашите отзиви и други точки, които биха могли да представляват интерес за всички нас.

Препратки