
Sakura AI Engine의 무료 티어를 활용하여 핸즈프리 요리 보조 앱 만들기
요약
Sakura AI Engine의 무료 티어를 활용하여 음성 제어 및 멀티모달 기능이 포함된 핸즈프리 요리 보조 웹 앱을 만드는 과정을 소개합니다. 이미지 인식과 TTS 모델을 결합하여 레시피 등록부터 칼로리 계산까지 구현하는 방법을 다룹니다.
핵심 포인트
- Sakura AI Engine의 무료 API를 활용한 실용적인 앱 개발 사례
- 멀티모달 모델을 이용한 이미지 기반 레시피 자동 등록 구현
- 음성 조작 및 TTS를 결합한 핸즈프리 사용자 경험 제공
- 모델별(Kimi, Qwen 등) 이미지 인식 정밀도 차이 확인
불과 몇 달 전 이사를 하고 나서 자취를 시작했는데, 요리 중에는 손이 더러워지기 때문에 레시피 북은 말할 것도 없고, 스마트폰으로 레시피 사이트를 보는 것도 상당히 불편합니다.
이번에는 Sakura AI Engine이 월 3,000 요청까지 무료인 데다, 공식적으로 '다 쓰기 캠페인(使い切りキャンペーン)'이라는 것이 개최되고 있기 때문에, AI를 결합한 무료 요리 보조 앱을 만들어보고자 합니다.
참고로, 본 기사에서 소개하는 앱의 완성품은 다음과 같습니다.
대략 다음과 같은 기능을 목표로 하면서, 당시의 느낌(vibe)에 따라 Gemini가 코딩하고 있습니다.
- 핸즈프리로 레시피를 음성 조작 가능
- 다양한 환경에서 가볍게 실행하고 싶었기에 Web 앱으로 작성
- 레시피에 대해 궁금한 점이 있으면 AI에게 질문할 수 있도록 함
- 타이머 기능 추가
- 레시피 등록 기능에서는, 제대로 포맷화되지 않은 문장이나 레시피 북의 사진으로부터 AI가 자동으로 레시피를 등록해 줌
- 레시피로부터 칼로리 계산
사용 가능한 모델로는 다음과 같은 것들이 있습니다.
이미지 인식 모델이나 음성 읽어주기(TTS) 모델도 갖춰져 있어 매우 유용합니다.
AI 채팅 상담 기능은 gpt-oss, 레시피 북 판독은 이미지 인식이 가능한 멀티모달(Multimodal) 모델을 사용하는 등의 구성이 가능합니다.
브라우저 표준에 읽어주기 기능이 내장되어 있어 큰 의미는 없지만, 모처럼 음성 읽어주기 모델도 사용할 수 있으니 즈다몬(Zundamon)이 말해주는 기능도 추가합니다.
AI 호출 방법은 기본적으로 다음과 같은 형식으로 POST를 함으로써 호출이 가능합니다.
curl -sS -X POST "https://api.ai.sakura.ad.jp/v1/chat/completions" \
-H "Authorization: Bearer {Sakura AI Engine API 토큰}" \
-H "Content-Type: application/json" \
...
## Inference API란?
**Inference API (추론 API)**는 머신러닝 (ML)이나 딥러닝 (DL)으로 학습된 모델을 **"추론 (예측)만"** 실행할 수 있도록 공개한 Web API를 말합니다.
| 항목 | 내용 |
...
이미지를 AI에 전달하는 경우에는 이미지의 URL을 전달하는 방법과, Base64로 인코딩한 문자열을 전달하는 방법이 있는 것 같습니다.
시험 삼아, AI가 적당히 생성한 가상의 레시피 사이트 이미지를 Base64로 읽어 들여 보겠습니다.

base64 shougayaki.jpeg | tr -d '\n' | jq -R '{
"model": "preview/Kimi-K2.6",
"messages": [
...
이미지 레시피 「극치·돼지고기 생강구이」의 재료는 다음과 같습니다.
**【메인 재료】 (2인분)**
* 돼지고기 등심 얇게 썬 것 (생강구이용) 250g
...
갈은 생강 부분이 조금 이상하지만, 실용적인 정밀도로 레시피를 판단하고 있는 것 같습니다.
재료란에는 적혀 있지 않은 마요네즈도 레시피 중에서 찾아내 주고 있습니다.
물론 모델에 따라 정밀도는 상당히 달라집니다.
비교적 저렴한 모델(preview/Qwen3-VL-30B-A3B-Instruct)의 경우, 이미지의 줄바꿈 등에 대응하지 못하고 있었습니다.
네, 이미지 레시피를 분석하여 재료를 나열합니다.
이미지에 기재된 재료는 다음과 같습니다.
### 주요 재료 (INGREDIENTS)
...
구현은 당초 Continue나 Cline과 Sakura AI Engine으로 진행하려 했으나, 컨텍스트 길이(Context Length) 문제인지 그리 원활하지 않아 평범하게 Gemini (Antigravity)로 진행하고 있습니다.
여러 가지 추가 지시를 내리고 있어서 완성품과는 사양이 꽤 다르지만, 일단 최초의 프롬프트는 다음과 같습니다.
Antigravity의 /grill-me라는 스킬로 첨삭받았습니다.
최초 프롬프트
# 역할과 목적
당신은 JavaScript, Next.js (App Router), SQLite, 및 Web Speech API에 정통한 시니어 풀스택 엔지니어입니다.
Sakura AI Engine (퍼블릭 프리뷰의 Vision/TTS 모델 포함)을 활용한, 스마트폰 대응 Web 버전 「요리 보조 AI 에이전트」를 개발해 주세요.
...
본론과는 벗어나지만, 모처럼 무료로 AI API를 사용할 수 있으니 앱의 코드 리뷰를 자동화하겠습니다.
Pull Request (PR)를 올리면 CI에서 AI 봇이 코드 차이(diff)를 리뷰해 주는 기능입니다.
이번에는 Gitea라는 GitHub 라이크(GitHub-like)한 OSS를 통해 도입했지만, 아마 GitHub에서도 워크플로우(Workflow)를 설정하면 동일하게 작동할 수 있을 것입니다.

이하, 최종적으로 완성된 앱의 데모입니다.
산만한 텍스트를 AI가 적절히 해석하여, 보기 좋게 레시피로 만들어 줍니다.
푸딩 레시피 (AI 제작)
먼저 작은 냄비를 준비하여 설탕(큰 술로 약 3스푼)과 물(큰 술로 약 1스푼)을 넣고 중불에 올립니다.
저으면서 보지 말고 지켜보다가, 갈색으로 타며 고소한 냄새가 나기 시작하면 불을 끕니다.
즉시 뜨거운 물(큰 술로 약 1스푼)을 촤악 넣어주고(튀어 오를 수 있으니 주의!), 뜨거울 때 푸딩 컵 3~4개의 바닥에 균등하게 나누어 담아 둡니다.
...
레시피 북이나 레시피 사이트의 이미지를 업로드하면, AI가 이를 분석하여 레시피로 옮겨 적어 줍니다.
이번에는 가상의 레시피 사이트 느낌의 이미지를 AI로 생성하여 데모를 진행하고 있습니다.
다만, Sakura AI Engine은 입력 데이터를 학습에 이용하지 않는다고 하므로, 개인 이용 범위 내라면 레시피 북 등을 통해 마음껏 학습시켜도 문제없을 것입니다.
등록된 레시피는 태그나 요리명, 재료명으로 모호 검색(Fuzzy Search)이 가능하도록 했습니다.
개별 레시피를 열면 편집 및 삭제가 가능합니다.
기본적으로 화면 상단에는 재료, 화면 하단에는 조리 순서가 표시될 뿐이지만, 세세한 추가 기능들이 붙어 있습니다.
이번에 가장 구현하고 싶었던 기능입니다.
화면 상단에서 음성 조작을 활성화하면, 음성 명령을 실행할 수 있게 됩니다.
다양한 명령어를 준비해 두어, 핸즈프리(Hands-free)로 페이지를 넘기거나 문장을 읽어주게 할 수 있습니다.
다음 세 가지 기능이 갖춰져 있습니다.
AI 읽어주기
Zundamon(ずんだもん)이 조리 순서를 읽어줍니다.
브라우저 표준 음성 읽기 기능과 비교했을 때, 한자의 요미가나(읽는 법)를 비교적 정확하게 읽어주는 느낌이 듭니다.
Sakura AI Engine의 경우, 음성 읽기 모델은 월간 50 요청(Request)으로 제한되어 있으므로, 결정적인 순간에만 Zundamon을 호출합시다.
참고로, 음성 읽기 모델은 개별적으로 약관에 동의하지 않으면 호출할 수 없으므로 주의가 필요합니다.

AI 레시피
"AI 레시피"라고 말하거나, 화면 오른쪽 하단의 채팅 아이콘을 통해 호출할 수 있습니다.
현재 열려 있는 레시피에 대해 질문을 던지면 AI가 답변해 줍니다.
"브로콜리는 어떻게 썰어?", "작은 술 1스푼은 몇 그램이야?", "적당량이라는 게 대체 뭐야?"와 같은 요리에 대한 소박한 궁금증을 던져 봅시다.

AI 타이머
"AI 타이머"라고 말한 뒤, "파스타를 7분 삶기"와 같은 형태로 시간을 전달하면 AI가 내용을 판단하여 타이머를 설정해 줍니다.
시간이 0이 되면 음성과 함께 알림도 해줍니다.
여러 개의 타이머를 설정할 수 있고, 각 타이머에 제목이 붙기 때문에 어떤 것이 어떤 타이머인지 구분할 수 있습니다.
모델에 따라 다르겠지만, 테스트 삼아 "계란 반숙으로"라는 지시에는 대략 6~7분, "완숙으로"라는 지시에는 9분을 자동으로 설정해 주었습니다.

- 레시피 등록, AI 채팅, 타이머 설정 단계에서 AI 요청을 수행하지만, Sakura AI Engine은 월간 3,000 요청, 하루 약 100 요청 정도까지 무료라고 하므로, AI를 더 마음껏 활용할 수 있는 기능을 고민해 보고 싶습니다.
- 여러 환경에 대응하기 위해 웹 앱(Web App)으로 구현했지만, 스마트폰은 브라우저의 음성 인식 부분이 상당히 불안정한 것 같습니다. 안드로이드용 네이티브 앱(Native App)으로 개발하는 것이 더 좋았을지도 모르겠습니다.
- 이미지 인식을 통한 레시피 등록은 생각보다 높은 정확도로 텍스트를 추출해 주었습니다. 다만 곳곳에 한자 오독 등이 포함되어 있었기에, 향후 모델의 정확도 향상을 기대합니다.
- 솔직히, 별생각 없이 추가한 Git AI 리뷰 봇이 상당히 편리해서, 이것만으로도 월간 3,000 요청을 소진할 수 있는 잠재력이 있다고 느껴집니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기