# ๐Ÿ“Š AI ๆ•ฐๆฎๅˆ†ๆžๅธˆ ไธ€ไธชๅŸบไบŽ DeepSeek API + Streamlit ็š„ๆ™บ่ƒฝๆ•ฐๆฎๅˆ†ๆžๅนณๅฐ๏ผŒไธŠไผ  CSV ๆ•ฐๆฎๅณๅฏ่Žทๅพ— AI ้ฉฑๅŠจ็š„ๆทฑๅบฆๆดžๅฏŸๅ’Œๅฏ่ง†ๅŒ–ๆŠฅๅ‘Šใ€‚ ![Python](https://img.shields.io/badge/Python-3.10+-blue.svg) ![Streamlit](https://img.shields.io/badge/Streamlit-1.28+-red.svg) ![DeepSeek](https://img.shields.io/badge/DeepSeek-API-green.svg) ![Difficulty](https://img.shields.io/badge/้šพๅบฆ-โญโญโญโญ-orange.svg) ## โœจ ๅŠŸ่ƒฝ็‰นๆ€ง | ๅŠŸ่ƒฝ | ๆ่ฟฐ | |:---|:---| | ๐Ÿ“ˆ **ๆ•ฐๆฎ้ข„่งˆ** | ๆ•ฐๆฎ่กจๆ ผๅฑ•็คบใ€็ปŸ่ฎกๆ‘˜่ฆใ€ๅˆ—ไฟกๆฏๅˆ†ๆž | | ๐Ÿ“Š **ๆ™บ่ƒฝๅฏ่ง†ๅŒ–** | ๆ นๆฎๆ•ฐๆฎ็ฑปๅž‹่‡ชๅŠจ็”Ÿๆˆ็›ดๆ–นๅ›พใ€ๆ•ฃ็‚นๅ›พใ€็ฎฑ็บฟๅ›พใ€็ƒญๅŠ›ๅ›พ | | ๐Ÿค– **AI ๆทฑๅบฆๅˆ†ๆž** | ็ปผๅˆๅˆ†ๆžใ€็›ธๅ…ณๆ€งๅˆ†ๆžใ€ๅผ‚ๅธธๆฃ€ๆต‹ไธ‰็งๆจกๅผ | | ๐Ÿ’ฌ **่‡ช็„ถ่ฏญ่จ€้—ฎ็ญ”** | ็”จไธญๆ–‡็›ดๆŽฅ่ฏข้—ฎๅ…ณไบŽๆ•ฐๆฎ็š„ไปปไฝ•้—ฎ้ข˜ | | ๐Ÿ“ **ๆŠฅๅ‘Š็”Ÿๆˆ** | ไธ€้”ฎ็”ŸๆˆๅฎŒๆ•ด็š„ Markdown ๆ ผๅผๅˆ†ๆžๆŠฅๅ‘Šๅนถไธ‹่ฝฝ | ## ๐Ÿ–ผ๏ธ ็•Œ้ข้ข„่งˆ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ“Š AI ๆ•ฐๆฎๅˆ†ๆžๅธˆ โ”‚ โ”‚ ไธŠไผ ๆ•ฐๆฎ๏ผŒ่ฎฉ AI ๅธฎไฝ ๅ‘็Žฐๆ•ฐๆฎไธญ็š„ๆ•…ไบ‹ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ [๐Ÿ“ˆ ๆ•ฐๆฎ้ข„่งˆ] [๐Ÿ“Š ๆ™บ่ƒฝๅฏ่ง†ๅŒ–] [๐Ÿค– AI ๅˆ†ๆž] [๐Ÿ’ฌ ๆ•ฐๆฎ้—ฎ็ญ”] [๐Ÿ“ ็”ŸๆˆๆŠฅๅ‘Š] โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ 100 โ”‚ โ”‚ 7 โ”‚ โ”‚ 0 โ”‚ โ”‚ 5 โ”‚ โ”‚ โ”‚ โ”‚ ๆ•ฐๆฎ่กŒ โ”‚ โ”‚ ๆ•ฐๆฎๅˆ— โ”‚ โ”‚ ็ผบๅคฑๅ€ผ โ”‚ โ”‚ ๆ•ฐๅ€ผๅˆ— โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ๅง“ๅ โ”‚ ้ƒจ้—จ โ”‚ ๅนด้พ„ โ”‚ ๅทฅ้พ„ โ”‚ ๆœˆ่–ช โ”‚ ็ปฉๆ•ˆ่ฏ„ๅˆ† โ”‚ ๆปกๆ„ๅบฆ โ”‚ โ”‚ โ”‚ โ”‚ ๅผ ไธ‰ โ”‚ ๆŠ€ๆœฏ้ƒจ โ”‚ 28 โ”‚ 3 โ”‚ 15000 โ”‚ 85.5 โ”‚ 4.2 โ”‚ โ”‚ โ”‚ โ”‚ ๆŽๅ›› โ”‚ ๅธ‚ๅœบ้ƒจ โ”‚ 32 โ”‚ 5 โ”‚ 18000 โ”‚ 78.3 โ”‚ 3.8 โ”‚ โ”‚ โ”‚ โ”‚ ... โ”‚ ... โ”‚ ... โ”‚ ... โ”‚ ... โ”‚ ... โ”‚ ... โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹ ### 1. ่ฟ›ๅ…ฅ้กน็›ฎ็›ฎๅฝ• ```bash cd ็คบไพ‹้กน็›ฎ-AIๆ•ฐๆฎๅˆ†ๆžๅธˆ ``` ### 2. ๅˆ›ๅปบ่™šๆ‹Ÿ็Žฏๅขƒ๏ผˆๆŽจ่๏ผ‰ ```bash python -m venv venv # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate ``` ### 3. ๅฎ‰่ฃ…ไพ่ต– ```bash pip install -r requirements.txt ``` ### 4. ้…็ฝฎ API Key ๅˆ›ๅปบ `.env` ๆ–‡ไปถ๏ผš ```bash echo "DEEPSEEK_API_KEY=sk-your-api-key" > .env ``` ๆˆ–็›ดๆŽฅๅœจๅบ”็”จ็•Œ้ข็š„ไพง่พนๆ ่พ“ๅ…ฅ API Keyใ€‚ ### 5. ่ฟ่กŒๅบ”็”จ ```bash streamlit run app.py ``` ๆต่งˆๅ™จไผš่‡ชๅŠจๆ‰“ๅผ€ http://localhost:8501 ## ๐Ÿ“ ้กน็›ฎ็ป“ๆž„ ``` ็คบไพ‹้กน็›ฎ-AIๆ•ฐๆฎๅˆ†ๆžๅธˆ/ โ”œโ”€โ”€ app.py # ไธป็จ‹ๅบ (~600่กŒ) โ”œโ”€โ”€ requirements.txt # ้กน็›ฎไพ่ต– โ”œโ”€โ”€ sample_data.csv # ็คบไพ‹ๆ•ฐๆฎ๏ผˆๅ‘˜ๅทฅไฟกๆฏ๏ผ‰ โ”œโ”€โ”€ .env # ็Žฏๅขƒๅ˜้‡๏ผˆ้œ€่‡ช่กŒๅˆ›ๅปบ๏ผ‰ โ”œโ”€โ”€ .gitignore # Git ๅฟฝ็•ฅๆ–‡ไปถ โ””โ”€โ”€ README.md # ้กน็›ฎ่ฏดๆ˜Ž ``` ## ๐Ÿ› ๏ธ ๆŠ€ๆœฏๆžถๆž„ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Streamlit UI โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ๆ•ฐๆฎ้ข„่งˆ โ”‚ โ”‚ๆ™บ่ƒฝๅฏ่ง†ๅŒ–โ”‚ โ”‚ AIๅˆ†ๆž โ”‚ โ”‚ๆ•ฐๆฎ้—ฎ็ญ” โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ–ผ โ–ผ โ–ผ โ–ผ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Pandas DataFrame โ”‚ โ”‚ โ”‚ โ”‚ (ๆ•ฐๆฎๅค„็†ไธŽ็ปŸ่ฎกๅˆ†ๆž) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ–ผ โ–ผ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Altair โ”‚ โ”‚ DeepSeek API โ”‚ โ”‚ โ”‚ โ”‚ (ๅฏ่ง†ๅŒ–)โ”‚ โ”‚ (AI ๅˆ†ๆž / ้—ฎ็ญ” / ๆŠฅๅ‘Š็”Ÿๆˆ) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐Ÿ”‘ ๆ ธๅฟƒๆŠ€ๆœฏ็‚น ### 1. ๆ•ฐๆฎๅค„็†ไธŽๆ‘˜่ฆ็”Ÿๆˆ ```python def get_data_summary(df: pd.DataFrame) -> str: """็”Ÿๆˆๆ•ฐๆฎๆ‘˜่ฆไพ› AI ๅˆ†ๆž""" summary = [] # ๅŸบๆœฌไฟกๆฏ summary.append(f"ๆ•ฐๆฎ้›†ๅŒ…ๅซ {len(df)} ่กŒๅ’Œ {len(df.columns)} ๅˆ—ใ€‚") # ๆ•ฐๅ€ผๅˆ—็ปŸ่ฎก numeric_cols = df.select_dtypes(include=['number']).columns stats = df[numeric_cols].describe().to_string() # ... ๆ›ดๅคš็ปŸ่ฎกไฟกๆฏ return "\n".join(summary) ``` ### 2. AI ๅˆ†ๆž็š„ Prompt ๅทฅ็จ‹ ```python def analyze_with_ai(client, data_summary, analysis_type): prompts = { "general": """ไฝ ๆ˜ฏไธ€ไธชไธ“ไธš็š„ๆ•ฐๆฎๅˆ†ๆžๅธˆ... ่ฏทไปŽไปฅไธ‹ๅ‡ ไธชๆ–น้ข่ฟ›่กŒๅˆ†ๆž๏ผš 1. ๐Ÿ“Š ๆ•ฐๆฎๆฆ‚ๅ†ต 2. ๐Ÿ” ๅ…ณ้”ฎๅ‘็Žฐ 3. ๐Ÿ“ˆ ๅปบ่ฎฎๅฏ่ง†ๅŒ– 4. โš ๏ธ ๆณจๆ„ไบ‹้กน 5. ๐Ÿ’ก ่ฟ›ไธ€ๆญฅๅˆ†ๆžๅปบ่ฎฎ""", "correlation": """ๅˆ†ๆžๅ˜้‡ไน‹้—ด็š„็›ธๅ…ณๆ€ง...""", "anomaly": """ๆฃ€ๆต‹ๆ•ฐๆฎไธญ็š„ๅผ‚ๅธธๅ€ผ...""" } response = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "system", "content": prompts[analysis_type]}, {"role": "user", "content": f"ๆ•ฐๆฎๆ‘˜่ฆ๏ผš\n{data_summary}"} ] ) return response.choices[0].message.content ``` ### 3. ่‡ชๅŠจๅฏ่ง†ๅŒ–็”Ÿๆˆ ```python def create_visualizations(df): """ๆ นๆฎๆ•ฐๆฎ็ฑปๅž‹่‡ชๅŠจ้€‰ๆ‹ฉๅˆ้€‚็š„ๅ›พ่กจ""" charts = [] numeric_cols = df.select_dtypes(include=['number']).columns cat_cols = df.select_dtypes(include=['object']).columns # ๆ•ฐๅ€ผๅˆ†ๅธƒ -> ็›ดๆ–นๅ›พ if numeric_cols: hist_chart = alt.Chart(df).mark_bar().encode( x=alt.X(f'{col}:Q', bin=True), y='count()' ) charts.append(hist_chart) # ๅคšๆ•ฐๅ€ผๅ˜้‡ -> ๆ•ฃ็‚นๅ›พ + ็›ธๅ…ณๆ€ง็ƒญๅŠ›ๅ›พ # ๅˆ†็ฑป+ๆ•ฐๅ€ผ -> ็ฎฑ็บฟๅ›พ # ... return charts ``` ### 4. ๅคš่ฝฎๅฏน่ฏ็š„ไธŠไธ‹ๆ–‡็ฎก็† ```python def ask_data_question(client, data_summary, question, chat_history): messages = [ {"role": "system", "content": "ไฝ ๆ˜ฏๆ•ฐๆฎๅˆ†ๆžๅŠฉๆ‰‹..."}, {"role": "user", "content": f"ๆ•ฐๆฎๆ‘˜่ฆ๏ผš\n{data_summary}"}, {"role": "assistant", "content": "ๆˆ‘ๅทฒไบ†่งฃๆ•ฐๆฎ๏ผŒ่ฏท้—ฎๆ‚จๆƒณ็Ÿฅ้“ไป€ไนˆ๏ผŸ"} ] # ๆทปๅŠ ๅކๅฒๅฏน่ฏ for msg in chat_history: messages.append(msg) # ๆทปๅŠ ๅฝ“ๅ‰้—ฎ้ข˜ messages.append({"role": "user", "content": question}) return client.chat.completions.create( model="deepseek-chat", messages=messages ) ``` ### 5. Session State ็ฎก็† ```python # ๅˆๅง‹ๅŒ–็Šถๆ€ if "df" not in st.session_state: st.session_state.df = None if "analyses" not in st.session_state: st.session_state.analyses = {} if "qa_history" not in st.session_state: st.session_state.qa_history = [] # ่ทจ Tab ๅ…ฑไบซๆ•ฐๆฎ df = st.session_state.df ``` ## ๐Ÿ“Š ไฝฟ็”จ็š„ Streamlit ็ป„ไปถ | ็ป„ไปถ | ็”จ้€” | |:---|:---| | `st.tabs` | ๅคšๆ ‡็ญพ้กตๅธƒๅฑ€ | | `st.columns` | ็ปŸ่ฎกๅก็‰‡ๅธƒๅฑ€ | | `st.file_uploader` | CSV ๆ–‡ไปถไธŠไผ  | | `st.dataframe` | ไบคไบ’ๅผๆ•ฐๆฎ่กจๆ ผ | | `st.altair_chart` | Altair ๅ›พ่กจๆธฒๆŸ“ | | `st.chat_message` | ้—ฎ็ญ”ๅฏน่ฏ็•Œ้ข | | `st.chat_input` | ่Šๅคฉ่พ“ๅ…ฅๆก† | | `st.session_state` | ็Šถๆ€็ฎก็† | | `st.download_button` | ๆŠฅๅ‘Šไธ‹่ฝฝ | | `st.spinner` | ๅŠ ่ฝฝๅŠจ็”ป | | `st.expander` | ๅฏๆŠ˜ๅ ๅŒบๅŸŸ | ## ๐ŸŽจ Vibe Coding ๅผ€ๅ‘่ฟ‡็จ‹ ### ๅˆๅง‹ Prompt > "ๅธฎๆˆ‘ๅˆ›ๅปบไธ€ไธช AI ๆ•ฐๆฎๅˆ†ๆžๅธˆๅบ”็”จ๏ผŒไฝฟ็”จ DeepSeek API ๅ’Œ Streamlitใ€‚ > > ๅŠŸ่ƒฝ้œ€ๆฑ‚๏ผš > 1. ไธŠไผ  CSV ๆ–‡ไปถ๏ผŒๆ˜พ็คบๆ•ฐๆฎ้ข„่งˆๅ’Œ็ปŸ่ฎก > 2. ่‡ชๅŠจๆ นๆฎๆ•ฐๆฎ็ฑปๅž‹็”Ÿๆˆๅฏ่ง†ๅŒ–ๅ›พ่กจ๏ผˆ็”จ Altair๏ผ‰ > 3. AI ๅˆ†ๆžๅŠŸ่ƒฝ๏ผš็ปผๅˆๅˆ†ๆžใ€็›ธๅ…ณๆ€งๅˆ†ๆžใ€ๅผ‚ๅธธๆฃ€ๆต‹ > 4. ่‡ช็„ถ่ฏญ่จ€้—ฎ็ญ”๏ผŒๅฏไปฅ้—ฎๅ…ณไบŽๆ•ฐๆฎ็š„้—ฎ้ข˜ > 5. ็”Ÿๆˆ Markdown ๆ ผๅผ็š„ๅˆ†ๆžๆŠฅๅ‘Š > > ๆŠ€ๆœฏ่ฆๆฑ‚๏ผš > - ไฝฟ็”จ st.tabs ๅšๅคšๆ ‡็ญพ้กตๅธƒๅฑ€ > - ไฝฟ็”จ st.session_state ็ฎก็†็Šถๆ€ > - ็•Œ้ข่ฆ็พŽ่ง‚๏ผŒไฝฟ็”จ่‡ชๅฎšไน‰ CSS" ### ่ฟญไปฃไผ˜ๅŒ– ``` Prompt 1: "็ป™ๆ•ฐๆฎ้ข„่งˆ้กตๆทปๅŠ ็ปŸ่ฎกๅก็‰‡๏ผŒๆ˜พ็คบ่กŒๆ•ฐใ€ๅˆ—ๆ•ฐใ€็ผบๅคฑๅ€ผ็ญ‰" Prompt 2: "่ฎฉๅฏ่ง†ๅŒ–ๆ›ดๆ™บ่ƒฝ๏ผŒๆ นๆฎๆ•ฐๆฎ็ฑปๅž‹่‡ชๅŠจ้€‰ๆ‹ฉๅ›พ่กจ็ฑปๅž‹" Prompt 3: "้—ฎ็ญ”ๅŠŸ่ƒฝ่ฆๆ”ฏๆŒๅคš่ฝฎๅฏน่ฏ๏ผŒAI ่ฆ่ฎฐไฝไน‹ๅ‰็š„้—ฎ้ข˜" Prompt 4: "ๆŠฅๅ‘Š็”ŸๆˆๅŠŸ่ƒฝ่ฆๆŠŠไน‹ๅ‰็š„ๅˆ†ๆž็ป“ๆžœ้ƒฝๆ•ดๅˆ่ฟ›ๅŽป" Prompt 5: "ๅŠ ไธ€ไธช็คบไพ‹ๆ•ฐๆฎ้€‰้กน๏ผŒๆ–นไพฟๆฒกๆœ‰ๆ•ฐๆฎ็š„็”จๆˆทไฝ“้ชŒ" ``` ## ๐Ÿ”ง ๆ‰ฉๅฑ•ๅปบ่ฎฎ ๅฆ‚ๆžœไฝ ๆƒณ่ฟ›ไธ€ๆญฅๅฎŒๅ–„่ฟ™ไธช้กน็›ฎ๏ผŒๅฏไปฅ่€ƒ่™‘๏ผš 1. **ๆ”ฏๆŒๆ›ดๅคšๆ–‡ไปถๆ ผๅผ**๏ผšExcelใ€JSONใ€Parquet 2. **ๆทปๅŠ ๆ•ฐๆฎๆธ…ๆด—ๅŠŸ่ƒฝ**๏ผš็ผบๅคฑๅ€ผๅค„็†ใ€ๅผ‚ๅธธๅ€ผๅค„็† 3. **ๆ›ดไธฐๅฏŒ็š„ๅฏ่ง†ๅŒ–**๏ผšๆ—ถ้—ดๅบๅˆ—ๅ›พใ€ๅœฐ็†ๅ›พ 4. **ๅฏผๅ‡บๆ›ดๅคšๆ ผๅผ**๏ผšPDFใ€HTMLใ€Word 5. **ๆทปๅŠ ๆ•ฐๆฎ็ญ›้€‰ๅ™จ**๏ผš่ฎฉ็”จๆˆท้€‰ๆ‹ฉๅˆ†ๆžๅ“ชไบ›ๅˆ—/่กŒ 6. **ๆœบๅ™จๅญฆไน ้ข„ๆต‹**๏ผš็ฎ€ๅ•็š„ๅ›žๅฝ’/ๅˆ†็ฑป้ข„ๆต‹ๅŠŸ่ƒฝ ## โš ๏ธ ๆณจๆ„ไบ‹้กน 1. **ๆ•ฐๆฎๅคงๅฐ**๏ผšๅคงๆ•ฐๆฎ้›†๏ผˆ>10ไธ‡่กŒ๏ผ‰ๅฏ่ƒฝๅฏผ่‡ด็•Œ้ขๅก้กฟ 2. **API ๆˆๆœฌ**๏ผš้•ฟๆ–‡ๆœฌๅˆ†ๆžๅ’Œๅคš่ฝฎ้—ฎ็ญ”ไผšๆถˆ่€—ๆ›ดๅคš Token 3. **้š็งๅฎ‰ๅ…จ**๏ผšๆ•ๆ„Ÿๆ•ฐๆฎ่ฏทๅœจๆœฌๅœฐไฝฟ็”จ๏ผŒไธ่ฆไธŠไผ ๅˆฐๅ…ฌๅ…ฑๆœๅŠกๅ™จ 4. **API Key ๅฎ‰ๅ…จ**๏ผšไธ่ฆๅฐ† `.env` ๆไบคๅˆฐไปฃ็ ไป“ๅบ“ ## ๐Ÿ“š ๅ‚่€ƒ่ต„ๆ–™ - [Streamlit ๅฎ˜ๆ–นๆ–‡ๆกฃ](https://docs.streamlit.io) - [Altair ๅฏ่ง†ๅŒ–ๆ–‡ๆกฃ](https://altair-viz.github.io) - [Pandas ๆ•ฐๆฎๅˆ†ๆž](https://pandas.pydata.org/docs/) - [DeepSeek API ๆ–‡ๆกฃ](https://platform.deepseek.com/api-docs) ## ๐Ÿ‘ค ไฝœ่€… Python ็จ‹ๅบ่ฎพ่ฎก่ฏพ็จ‹่ฎพ่ฎก - ้ซ˜็บง็คบไพ‹้กน็›ฎ --- **่ฎฉๆ•ฐๆฎ่ฏด่ฏ๏ผŒ็”จ AI ๅ€พๅฌ๏ผ** ๐Ÿ“Š๐Ÿค–