기분에 어울리는 음식을 연결해 주는 생성형 AI ‘Food Coach’

5월 16, 2023
Avneet Singh Product Manager Google Partner Innovation

구글의 파트너 혁신(Partner Innovation) 팀은 대규모 언어 모델(LLM)과 기존 Google API 및 기술과 결합하여 특정 산업 사용 사례의 해법이 될 수 있는 생성형 AI 템플릿 시리즈를 개발하고 있습니다.

generativeAIRecipe1

개요

우리는 모두 음식의 레시피가 궁금할 때는 물론이고 인생에서 새로운 도전에 맞닥뜨려 조언이 필요할 때도 답을 찾기 위해 으레 인터넷을 검색합니다. 그러나 생성형 AI를 사용해 이를 인터넷의 엄청난 능력과 결합시켜, 여러분의 오늘 하루는 어땠는지, 지금 기분은 어떤지, 무슨 생각을 하고 있는지 주절주절 늘어놓는 이야기를 들어준 다음 여러분의 기분에 맞는 독특한 재료로 새롭고 창의적인 요리를 만들어주는 별난 개인 셰프를 창조할 수 있다면 어떨까요?

generativeAIRecipe2

MoodFood는 전통적인 레시피 파인더에 유쾌함을 더해 푸드테라피 전문가처럼 사용자에게 지금 기분이 어떤지 또는 어떤 기분을 느끼고 싶은지 물어보고, ‘가슴이 미어지는 수프’나 ‘월요병 라자냐’ 같은 유머러스한 레시피부터 예비 시어머니를 감동시키기 위한 진정한 인생의 조언이 담긴 ‘레시피’까지 다양한 조리법을 생성합니다.

위의 예에서는 사용자가 예비 시어머니를 감동시켜야 하는데 어떻게 해야 할지 걱정된다는 내용을 입력하면, 이에 MoodFood는 다양한 경험에서 얻은 인사이트를 통해 ‘예비 시어머니를 위한 닭죽‘을 추천합니다. 이는 사용자가 입력한 정보만을 기반으로 MoodFood가 생성한 새로운 레시피와 요리 이름입니다. 그런 다음 MoodFood는 그래픽 레시피 ‘카드’ 와 형식대로 정리된 재료/레시피 목록을 생성합니다. 이 목록은 파트너 사이트에 전달되어 필요한 식재료 주문까지 처리할 수 있습니다.

잠재적 사용 사례는 제품 발견에 대한 새로운 관점에 뿌리를 두고 있습니다. 사용자에게 기분을 물어 음악 앱에서는 곡 추천을, 관광업 제휴사에는 여행지를, 또는 음식 배달 앱에서는 주문할 수 있는 실제 레시피를 나타낼 수 있습니다. 이 템플릿을 전자 상거래 및 소매업 사용 사례의 검색 메커니즘으로 사용할 수도 있습니다. LLM은 탐색과 가능성의 새로운 세계를 열어가고 있습니다. 알려진 재료를 결합하고, 사용자의 기분 등 완전히 다른 맥락에서 분석하고, 사용자가 시도해 볼 수 있는 새로운 것을 발명하는 LLM의 힘을 사용자들이 직접 지켜볼 수 있기를 바랍니다!

구현

경험 전반에서 다양한 방식으로 PaLM API를 활용할 방법을 모색하기 위해 저희는 다양한 목적, 예컨대 유머러스한 응답 생성, 레시피 생성, 구조화된 형식 생성, 보호 등의 목적으로 API를 여러 번 사용해 봤습니다.

generativeAIRecipe3

현재 데모에서는 LLM을 네 번 사용합니다. 첫 번째 프롬프트에서는 LLM이 창의성을 발휘해 사용자 입력과 컨텍스트를 기반으로 사용자를 위한 레시피를 발명하도록 합니다. 두 번째 프롬프트에서는 응답 json의 형식을 지정합니다. 세 번째 프롬프트는 안전장치로서 레시피의 이름이 적절히 지정되도록 합니다. 마지막 프롬프트에서는 구조화되지 않은 레시피를 형식을 갖춘 JSON 레시피로 바꿉니다.

LLM이 개발자에게 도움을 줄 수 있는 작업 중 하나는 데이터 형식 지정입니다. 어떤 텍스트 소스가 주어져도 개발자는 PaLM API를 사용하여 텍스트 데이터를 JSON, Markdown 등 원하는 형식으로 구성할 수 있습니다.

저희가 원했던 형식을 유지하면서도 유머러스한 응답을 생성하고자 PaLM API를 여러 번 호출했습니다. 더 무작위 입력을 위해서는 모델에 대한 더 높은 '온도'를 사용했고, 응답의 형식을 강조할 때에는 모델에 대한 '온도'를 낮췄습니다.

이 데모에서 저희는 PaLM API가 JSON 형식으로 레시피를 반환하기를 원하므로 요청에 대해 형식이 지정된 응답의 예를 첨부합니다. 이는 정확한 형식으로 답변하는 방법에 있어 LLM에 대한 작은 가이드일 뿐입니다. 그러나 레시피의 JSON 형식 지정은 시간이 꽤 걸리므로 사용자 경험에 직면할 때에는 문제가 될 수 있습니다. 이를 처리하기 위해 JSON 레시피 생성과 병행하여 반응 메시지(더 짧은 시간 소요)만 생성하는 유머러스한 응답을 선택합니다. JSON 레시피 응답을 기다리는 동안 먼저 문자 단위로 받은 후 반응 응답을 렌더링합니다. 이는 시간이 많이 걸리는 응답을 기다린다는 느낌을 줄이기 위한 것입니다.

generativeAIRecipe4

응답을 미리 정의된 형식으로 유지하면서 조금 더 창의성을 발휘해야 하는 작업의 경우 개발자는 이 주요 작업을 두 개의 하위 작업으로 구분하는 것이 좋습니다. 하나는 온도 설정이 더 높은 크리에이티브 응답용이고, 다른 하나는 낮은 온도 설정으로 원하는 형식을 정의하여 결과물의 균형을 맞춥니다.

프롬프트

프롬프팅은 대형 언어 모델(LLM)이 특정 작업을 수행하도록 지시하는 데 사용되는 기술입니다. 여기에는 LLM이 해당 작업을 완료하는 데 필요할 수 있는 관련 정보와 더불어 작업을 설명하는 짧은 텍스트를 LLM에 제공하는 것이 포함됩니다. PaLM API 사용 시, 프롬프팅은 컨텍스트, 메시지, 온도, candidate_count의 4가지 필드를 매개변수로 사용합니다.

  • 컨텍스트는 대화의 맥락입니다. LLM이 대화를 더 잘 이해할 수 있도록 하는 데 사용됩니다.
  • 메시지는 과거부터 현재까지 사용자(author=0)와 LLM(author=1) 사이에서 이루어진 채팅 메시지의 나열입니다. 첫 번째 메시지는 항상 사용자가 보낸 것입니다.
  • 온도는 0과 1 사이의 부동 소수점 숫자입니다. 온도가 높을수록 더 창의적인 응답이 제시됩니다. 온도가 낮을수록 적절한 응답일 가능성이 큽니다.
  • candidate_count는 LLM이 반환할 응답의 수입니다.

Mood Food에서는 프롬프팅을 사용하여 PaLM API에 지시했습니다. 이 API에 창의적이고 재미있는 셰프 역할을 하고, 사용자의 메시지를 기반으로 상상할 수 없을 정도로 기발한 레시피를 반환하라고 명령했습니다. 또한 반환하는 응답을 반응, 이름, 재료, 안내 및 설명의 4가지 부분의 형식을 갖추도록 요청했습니다.

  • 반응은 사용자의 메시지에 대해 예의 바르지만 재미있는 방식으로 직접 유머러스하게 응답하는 것입니다.
  • 이름: 레시피의 이름입니다. PaLM API에 예의를 지킨 언어유희를 사용해 레시피 이름을 생성하고 더 기분을 상하게 하지는 말라고 지시합니다.
  • 재료: 측정 분량과 함께 표시된 재료의 목록
  • 설명: PaLM API에 의해 생성된 요리 설명

generativeAIRecipe5

3자 업체와의 통합

PaLM API는 고객 데이터와의 원활한 통합을 용이하게 하는 임베딩 서비스를 제공합니다. PaLM API 임베딩 서비스를 이용하여 파트너의 데이터에 대한 임베딩 데이터베이스를 설정하기만 하면 바로 시작할 수 있습니다.

generativeAIRecipe6

통합된 후에는 사용자가 음식 또는 레시피 관련 정보를 검색하면 PaLM API가 사용자의 쿼리와 일치하는 이상적인 결과를 찾기 위해 삽입 공간에서 검색을 합니다. 또한 파트너가 제공하는 쇼핑 API와 통합하여 사용자가 채팅 인터페이스를 통해 파트너 웹사이트에서 재료를 직접 구매하도록 할 수도 있습니다.

파트너십

인도의 온라인 음식 주문 및 배달 플랫폼인 Swiggy는 MoodFood처럼 경험을 통해 가능해진 사용 사례를 보며 기대감을 드러냈습니다.

“저희는 저희 플랫폼에서 고객 및 판매자와 상호 작용하는 방식을 변화시키는 생성형 AI의 잠재력에 큰 기대를 걸고 있습니다. Moodfood는 저희가 제공하는 제품과 서비스에 재미있고 매력적인 방식으로 더 깊이 접근할 수 있는 잠재력을 지니고 있습니다." - Madhusudhan Rao, Swiggy CTO

Mood Food는 오픈 소스로 제공될 것이므로, 개발자와 스타트업은 저희가 만든 경험을 기반으로 한 걸음 더 나아갈 수 있습니다. Google의 파트너 혁신 팀은 이미 진행 중인 R&D를 확장하기 위해 현지 시장과 협력하여 다양한 기능과 도구를 계속해서 개발할 것입니다. GitHub 프로젝트는 여기에서 확인할 수 있습니다.

감사의 말

이 프로젝트에 귀한 도움을 주신 KC Chung, Edwina Priest, Joe Fry, Bryan Tanaka, Sisi Jin, Agata Dondzik, Sachin Kamaladharan, Boon Panichprecha, Miguel de Andres-Clavera께 진심을 담아 감사 인사를 전합니다.