您好,我是 Snowflake 的銷售工程師。我想透過各種貼文與大家分享我的一些經驗和實驗。在本文中,我將向您展示如何使用 Snowflake 中的 Streamlit 建立應用程式來檢查令牌計數並估算 Cortex LLM 的成本。
註:本文僅代表個人觀點,不代表Snowflake的觀點。
Streamlit 是一個 Python 函式庫,可讓您使用簡單的 Python 程式碼建立 Web UI,無需 HTML/CSS/JavaScript。您可以在應用程式庫中查看範例。
Snowflake 中的 Streamlit 使您能夠直接在 Snowflake 上開發和運行 Streamlit Web 應用程式。只需一個 Snowflake 帳戶即可輕鬆使用,非常適合將 Snowflake 表資料整合到 Web 應用程式中。
關於 Snowflake 中的 Streamlit(官方 Snowflake 文件)
Snowflake Cortex 是 Snowflake 中的一套生成式 AI 功能。 Cortex LLM 允許您使用 SQL 或 Python 中的簡單函數呼叫在 Snowflake 上執行的大型語言模型。
大語言模型 (LLM) 函數 (Snowflake Cortex)(官方 Snowflake 文件)
註:圖中文字來自芥川龍之介的《蜘蛛絲》。
附註:Cortex LLM 定價表 (PDF)
注意: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 What's New Bot (英文版)
https://x.com/snow_new_en
Snowflake What's New Bot(日文版)
https://x.com/snow_new_jp
(20240914) 初始貼文
https://zenn.dev/tsubasa_tech/articles/4dd80c91508ec4
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3