calcal / README.md
workcha's picture
Upload 19 files
61b4ff5 verified

A newer version of the Gradio SDK is available: 6.14.0

Upgrade
metadata
title: HuggingFace Calorie Counter
emoji: ๐Ÿฑ
colorFrom: pink
colorTo: yellow
sdk: gradio
sdk_version: 5.9.1
python_version: '3.11'
app_file: app.py
pinned: false
license: apache-2.0

6์ฃผ์ฐจ: HuggingFace Space ์นผ๋กœ๋ฆฌ ์นด์šดํ„ฐ

์Œ์‹ ์‚ฌ์ง„์„ ์—…๋กœ๋“œํ•˜๋ฉด HuggingFace Inference API๋กœ ์Œ์‹์„ ์ธ์‹ํ•˜๊ณ , LLM์ด 1์ธ๋ถ„ ๊ธฐ์ค€ ์นผ๋กœ๋ฆฌ/ํƒ„๋‹จ์ง€๋ฅผ ์ถ”์ •ํ•˜๋Š” Gradio ์•ฑ์ด๋‹ค. ์™„์„ฑ๋œ ์•ฑ์€ ๊ทธ๋Œ€๋กœ HuggingFace Space ์— ์˜ฌ๋ ค ๊ณต๊ฐœ URL์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

์ด ์ž๋ฃŒ์˜ ๊ธฐ์ˆ  ์ •๋ณด๋Š” 2026-04 ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ตฌ์กฐ

week06/
โ”œโ”€โ”€ app.py              # Gradio ์•ฑ ๋ณธ์ฒด (TODO 4๊ณณ์„ ์ฑ„์›Œ ์™„์„ฑ)
โ”œโ”€โ”€ model_config.py     # HF ๋ชจ๋ธ ์ด๋ฆ„ ์ƒ์ˆ˜ + InferenceClient ํŒฉํ† ๋ฆฌ
โ”œโ”€โ”€ requirements.txt    # Space๊ฐ€ ์„ค์น˜ํ•  ์˜์กด์„ฑ
โ”œโ”€โ”€ .env.example        # HF_TOKEN ํ…œํ”Œ๋ฆฟ
โ””โ”€โ”€ README.md           # ์ด ํŒŒ์ผ (์•ž์˜ YAML์ด Space ์„ค์ •)

์‹คํ–‰ ๋ฐฉ๋ฒ• (๋กœ์ปฌ)

# 1) ํ† ํฐ ๋ฐœ๊ธ‰: https://huggingface.co/settings/tokens (Read ๊ถŒํ•œ)
cp .env.example .env
# .env ํŒŒ์ผ์„ ์—ด์–ด HF_TOKEN=hf_... ๋กœ ์ˆ˜์ •

# 2) ์˜์กด์„ฑ ์„ค์น˜
uv pip install -r requirements.txt

# 3) ์‹คํ–‰
uv run python app.py
# ๋ธŒ๋ผ์šฐ์ €: http://127.0.0.1:7860

TODO (app.py ์•ˆ)

  1. SYSTEM_PROMPT โ€” ์˜์–‘์‚ฌ ์—ญํ•  + JSON ์Šคํ‚ค๋งˆ ๊ฐ•์ œ (ChatPromptTemplate ์•ˆ์— ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ์ค‘๊ด„ํ˜ธ๋Š” {{ }}๋กœ ์ด์Šค์ผ€์ดํ”„)
  2. _chain_lazy() ์•ˆ LCEL ์ฒด์ธ ์กฐ๋ฆฝ (4๋‹จ๊ณ„)
    • 2-1. HuggingFaceEndpoint ์ƒ์„ฑ (repo_id=LLM_MODEL, task="text-generation", ํ† ํฐ)
    • 2-2. ChatHuggingFace(llm=endpoint) ๋กœ ๊ฐ์‹ธ๊ธฐ
    • 2-3. ChatPromptTemplate.from_messages([("system", SYSTEM_PROMPT), ("human", "...{labels_json}")])
    • 2-4. _chain = prompt | llm | JsonOutputParser() ํŒŒ์ดํ”„ ์—ฐ๊ฒฐ
  3. classify_food() โ€” client.image_classification(tmp_path, model=VISION_MODEL) ํ˜ธ์ถœ
  4. estimate_calories() โ€” chain.invoke({"labels_json": labels_json}) ํ˜ธ์ถœ

๋„ค ๊ณณ์„ ์ฑ„์šฐ๋ฉด ์•ฑ์ด ๋™์ž‘ํ•œ๋‹ค.

HuggingFace Space ๋ฐฐํฌ ๋ฐฉ๋ฒ•

  1. https://huggingface.co/new-space ์—์„œ Gradio SDK๋กœ Space ์ƒ์„ฑ
  2. Space์˜ Settings > Variables and secrets ์— HF_TOKEN ๋“ฑ๋ก
  3. ํŒŒ์ผ ์—…๋กœ๋“œ (์›น ๋“œ๋ž˜๊ทธ or git push)
    git clone https://huggingface.co/spaces/<๋ณธ์ธ>/<space-์ด๋ฆ„>
    cd <space-์ด๋ฆ„>
    cp ../week06/{app.py,model_config.py,requirements.txt,README.md} .
    git add .
    git commit -m "init"
    git push
    
  4. ๋ช‡ ๋ถ„ ํ›„ https://huggingface.co/spaces/<๋ณธ์ธ>/<space-์ด๋ฆ„> ์ ‘์†ํ•˜์—ฌ ๋™์ž‘ ํ™•์ธ

๊ณผ์ œ

  • Space URL ์ œ์ถœ
  • title/emoji/ํ”„๋กฌํ”„ํŠธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ
  • ๊ฒฐ๊ณผ ์Šคํฌ๋ฆฐ์ƒท 1์žฅ + 2~3์ค„ ์„ค๋ช…

์‚ฌ์šฉ ๋ชจ๋ธ

์—ญํ•  ๋ชจ๋ธ
์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜ nateraw/food
์นผ๋กœ๋ฆฌ ์ถ”์ • LLM meta-llama/Meta-Llama-3-8B-Instruct