«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Я создал приложение для проверки количества токенов с помощью Streamlit в Snowflake (SiS).

Я создал приложение для проверки количества токенов с помощью Streamlit в Snowflake (SiS).

Опубликовано 16 сентября 2024 г.
Просматривать:407

Введение

Здравствуйте, я инженер по продажам в Snowflake. Я хотел бы поделиться с вами своим опытом и экспериментами в различных постах. В этой статье я покажу вам, как создать приложение с использованием Streamlit в Snowflake для проверки количества токенов и оценки затрат на Cortex LLM.

Примечание: этот пост отражает мои личные взгляды, а не взгляды Снежинки.

Что такое Streamlit в Snowflake (SiS)?

Streamlit — это библиотека Python, которая позволяет создавать веб-интерфейсы с помощью простого кода Python, устраняя необходимость в HTML/CSS/JavaScript. Вы можете увидеть примеры в галерее приложений.

Streamlit в Snowflake позволяет разрабатывать и запускать веб-приложения Streamlit непосредственно в Snowflake. Его легко использовать, имея только учетную запись Snowflake, и он отлично подходит для интеграции данных таблиц Snowflake в веб-приложения.

О Streamlit в Snowflake (официальная документация Snowflake)

Что такое кора снежинки?

Snowflake Cortex — это набор генеративных функций искусственного интеллекта в Snowflake. Cortex LLM позволяет вызывать большие языковые модели, работающие на Snowflake, с помощью простых функций SQL или Python.

Функции большой языковой модели (LLM) (Snowflake Cortex) (официальная документация Snowflake)

Обзор функций

Изображение

I made a token count check app using Streamlit in Snowflake (SiS)

Примечание: текст на изображении взят из «Паучьей нити» Рюносукэ Акутагавы.

Функции

  • Пользователи могут выбрать модель Cortex LLM
  • Отображение количества символов и токенов для текста, вводимого пользователем
  • Показать соотношение токенов к символам
  • Расчет ориентировочной стоимости на основе цены кредита Snowflake

Примечание: таблица цен Cortex LLM (PDF)

Предварительные условия

  • Аккаунт Snowflake с доступом к Cortex LLM
  • snowflake-ml-python 1.1.2 или новее

Примечание: доступность региона Cortex LLM (официальная документация Snowflake)

Исходный код

import streamlit as st
from snowflake.snowpark.context import get_active_session
import snowflake.snowpark.functions as F

# Get current session
session = get_active_session()

# Application title
st.title("Cortex AI Token Count Checker")

# AI settings
st.sidebar.title("AI Settings")
lang_model = st.sidebar.radio("Select the language model you want to use",
                              ("snowflake-arctic", "reka-core", "reka-flash", 
                              "mistral-large2", "mistral-large", "mixtral-8x7b", "mistral-7b", 
                              "llama3.1-405b", "llama3.1-70b", "llama3.1-8b", 
                              "llama3-70b", "llama3-8b", "llama2-70b-chat", 
                              "jamba-instruct", "gemma-7b")
)

# Function to count tokens (using Cortex's token counting function)
def count_tokens(model, text):
    result = session.sql(f"SELECT SNOWFLAKE.CORTEX.COUNT_TOKENS('{model}', '{text}') as token_count").collect()
    return result[0]['TOKEN_COUNT']

# Token count check and cost calculation
st.header("Token Count Check and Cost Calculation")

input_text = st.text_area("Select a language model from the left pane and enter the text you want to check for token count:", height=200)

# Let user input the price per credit
credit_price = st.number_input("Enter the price per Snowflake credit (in dollars):", min_value=0.0, value=2.0, step=0.01)

# Credits per 1M tokens for each model (as of 2024/8/30, mistral-large2 is not supported)
model_credits = {
    "snowflake-arctic": 0.84,
    "reka-core": 5.5,
    "reka-flash": 0.45,
    "mistral-large2": 1.95,
    "mistral-large": 5.1,
    "mixtral-8x7b": 0.22,
    "mistral-7b": 0.12,
    "llama3.1-405b": 3,
    "llama3.1-70b": 1.21,
    "llama3.1-8b": 0.19,
    "llama3-70b": 1.21,
    "llama3-8b": 0.19,
    "llama2-70b-chat": 0.45,
    "jamba-instruct": 0.83,
    "gemma-7b": 0.12
}

if st.button("Calculate Token Count"):
    if input_text:
        # Calculate character count
        char_count = len(input_text)
        st.write(f"Character count of input text: {char_count}")

        if lang_model in model_credits:
            # Calculate token count
            token_count = count_tokens(lang_model, input_text)
            st.write(f"Token count of input text: {token_count}")

            # Ratio of tokens to characters
            ratio = token_count / char_count if char_count > 0 else 0
            st.write(f"Token count / Character count ratio: {ratio:.2f}")

            # Cost calculation
            credits_used = (token_count / 1000000) * model_credits[lang_model]
            cost = credits_used * credit_price

            st.write(f"Credits used: {credits_used:.6f}")
            st.write(f"Estimated cost: ${cost:.6f}")
        else:
            st.warning("The selected model is not supported by Snowflake's token counting feature.")
    else:
        st.warning("Please enter some text.")

Заключение

Это приложение упрощает оценку затрат на рабочие нагрузки LLM, особенно при работе с такими языками, как японский, где часто существует разрыв между количеством символов и количеством токенов. Надеюсь, оно окажется для вас полезным!

Объявления

Snowflake Что нового, обновления на X

Я делюсь обновлениями Snowflake «Что нового» на X. Если вам интересно, подписывайтесь!

Английская версия

Что нового в боте Snowflake (английская версия)
https://x.com/snow_new_en

Японская версия

Что нового в боте Snowflake (японская версия)
https://x.com/snow_new_jp

История изменений

(20240914) Исходное сообщение

Оригинальная японская статья

https://zenn.dev/tsubasa_tech/articles/4dd80c91508ec4

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/tsubasa_tech/i-made-a-token-count-check-app-using-streamlit-in-snowflake-sis-2440?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163 .comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3