"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لقد قمت بإنشاء تطبيق للتحقق من عدد الرموز باستخدام Streamlit في Snowflake (SiS)

لقد قمت بإنشاء تطبيق للتحقق من عدد الرموز باستخدام Streamlit في Snowflake (SiS)

تم النشر بتاريخ 2024-11-08
تصفح:726

مقدمة

مرحبًا، أنا مهندس مبيعات في Snowflake. أود أن أشارككم بعض تجاربي وتجاربي من خلال منشورات متنوعة. في هذه المقالة، سأوضح لك كيفية إنشاء تطبيق باستخدام Streamlit في Snowflake للتحقق من عدد الرموز المميزة وتقدير التكاليف لـ Cortex LLM.

ملاحظة: هذا المنشور يمثل وجهات نظري الشخصية وليس آراء Snowflake.

ما هو Streamlit في ندفة الثلج (SiS)؟

Streamlit هي مكتبة Python تتيح لك إنشاء واجهات مستخدم ويب باستخدام كود Python البسيط، مما يلغي الحاجة إلى HTML/CSS/JavaScript. يمكنك مشاهدة الأمثلة في معرض التطبيقات.

يمكّنك Streamlit in Snowflake من تطوير تطبيقات الويب Streamlit وتشغيلها مباشرةً على Snowflake. إنه سهل الاستخدام من خلال حساب Snowflake فقط وهو رائع لدمج بيانات جدول Snowflake في تطبيقات الويب.

حول Streamlit in Snowflake (التوثيق الرسمي لـ Snowflake)

ما هي قشرة ندفة الثلج؟

Snowflake Cortex عبارة عن مجموعة من ميزات الذكاء الاصطناعي التوليدية في Snowflake. يتيح لك Cortex LLM استدعاء نماذج اللغات الكبيرة التي تعمل على Snowflake باستخدام وظائف بسيطة في SQL أو Python.

وظائف نموذج اللغة الكبيرة (LLM) (قشرة ندفة الثلج) (التوثيق الرسمي لندفة الثلج)

نظرة عامة على الميزات

صورة

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

ملاحظة: النص الموجود في الصورة مأخوذ من "The Spider's Thread" بقلم ريونوسوكي أكوتاجاوا.

سمات

  • يمكن للمستخدمين تحديد نموذج Cortex LLM
  • عرض عدد الأحرف والرموز المميزة للنص الذي يدخله المستخدم
  • إظهار نسبة الرموز المميزة إلى الأحرف
  • حساب التكلفة المقدرة بناءً على تسعير رصيد Snowflake

ملاحظة: جدول تسعير Cortex LLM (PDF)

المتطلبات الأساسية

  • حساب Snowflake مع إمكانية الوصول إلى Cortex LLM
  • Snowflake-ml-python 1.1.2 أو الأحدث

ملاحظة: توفر منطقة Cortex LLM (التوثيق الرسمي لندفة الثلج)

كود المصدر

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. فلا تتردد في المتابعة إذا كنت مهتمًا!

النسخة الانجليزية

الروبوت الجديد لندفة الثلج (النسخة الإنجليزية)
https://x.com/snow_new_en

النسخة اليابانية

الروبوت الجديد لندفة الثلج (النسخة اليابانية)
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 إذا كان هناك أي انتهاك، من فضلك اتصل بـ [email protected]
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3