React (캔버스 판서) → NestJS (API) → Python (LLM inference)
→ LangChain으로 “도형 의미 분석 + 이미지 추천 문장 생성”
Feature
$ pip install langchain langchain-openai pydantic
OpenAI 키 없이도 FastAPI + LangChain로 바로 쓸 수 있는 두 가지 예시
$ python -m venv .venv
. .venv/Scripts/activate # (Windows) / source .venv/bin/activate (mac/linux)
$ pip install --upgrade pip
$ pip install fastapi "uvicorn[standard]" python-dotenv \\
langchain-core langchain-community langchain-huggingface pydantic
1. ollama 다운로드

https://ollama.com/download
2. 버전 확인
$ (.venv) PS D:\\Project\\Luppy\\llm> Get-ChildItem -Path "$env:LOCALAPPDATA\\Programs" -Recurse -Filter ollama.exe -ErrorAction SilentlyContinue
디렉터리: C:\\Users\\roxie\\AppData\\Local\\Programs\\Ollama
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2025-09-26 오전 4:41 32767480 ollama.exe
$ (.venv) PS D:\\Project\\Luppy\\llm> & "C:\\Users\\roxie\\AppData\\Local\\Programs\\Ollama\\ollama.exe" --version
ollama version is 0.12.3
3. 실행
# uvicorn
$ & "C:\\Users\\roxie\\AppData\\Local\\Programs\\Ollama\\ollama.exe" serve
$ (.venv) PS D:\\Project\\Luppy\\llm> & "C:\\Users\\roxie\\AppData\\Local\\Programs\\Ollama\\ollama.exe" pull llama3.1
pulling manifest
pulling 667b0c1932bc: 100% ▕█████████████████████████████▏ 4.9 GB
pulling 948af2743fc7: 100% ▕█████████████████████████████▏ 1.5 KB
pulling 0ba8f0e314b4: 100% ▕█████████████████████████████▏ 12 KB
pulling 56bb8bd477a5: 100% ▕█████████████████████████████▏ 96 B
pulling 455f34728c9b: 100% ▕█████████████████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
$ (.venv) PS D:\\Project\\Luppy\\llm> & "C:\\Users\\roxie\\AppData\\Local\\Programs\\Ollama\\ollama.exe" run llama3.1 "hello"
Hello! How can I assist you today?
$ (.venv) PS D:\\Project\\Luppy\\llm> uvicorn app:app --reload --host 0.0.0.0 --port 8000
# powershell
PS D:\\Project\\Luppy\\llm> & D:/Project/Luppy/llm/.venv/Scripts/Activate.ps1
(.venv) PS D:\\Project\\Luppy\\llm> Invoke-RestMethod -Uri "<http://localhost:8000/analyze>" ` -Method POST ` -ContentType "application/json" ` -Body '{"shape":"rectangle","color":"blue","context":"메모 박스"}'
ok recommendations
-- ---------------
True {1. ì´ ëíì ì¬ê°íì ì미íë©°, ì¼ë°ì ì¼ë¡ ë¤ìí UI...
