paint-brush
ChatGPT 프롬프트 엔지니어링을 통한 더 나은 음악 추천을 위한 탐구~에 의해@interwebalchemy
7,454 판독값
7,454 판독값

ChatGPT 프롬프트 엔지니어링을 통한 더 나은 음악 추천을 위한 탐구

~에 의해 Eric Allen24m2023/03/22
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

소프트웨어 개발자가 노래 추천을 위해 ChatGPT를 활용하려고 시도하면서 소프트웨어 개발과 프롬프트 엔지니어링 간의 제한 사항과 흥미로운 교차점을 탐색합니다. Prompt Engineering의 미묘한 차이로 인해 LLM, ChatGPT의 상상력으로 구동되는 음악 추천 엔진 및 매우 견고한 재생 목록으로 작업하는 연구원을 돕기 위한 오픈 소스 Obsidian 플러그인이 만들어졌습니다.
featured image - ChatGPT 프롬프트 엔지니어링을 통한 더 나은 음악 추천을 위한 탐구
Eric Allen HackerNoon profile picture
0-item

대부분의 인터넷과 마찬가지로 저는 OpenAI의 GPT-3과 같은 LLM(대형 언어 모델) 형태의 인공 지능(AI)과 영리하고 수다스럽고 코드에 정통한 ChatGPT에 깊은 관심을 갖게 되었습니다.


수년 전에 저는 Common Lisp가 어떻게 AI를 위한 언어인지에 대해 읽은 것을 기억합니다. Steve Jobs가 Flash를 죽인 후 ActionScript에서 전환한 환경 친화적인 개발자이자 여전히 PHP, WordPress 및 JavaScript로 바퀴를 재발명하고 있는 개발자로서 저는 바다에서 길을 잃은 느낌을 받았고, 어디에서 시작해야 할지 이해하려고 노력했습니다. 일체 포함.


그러다가 Python이 기계 학습(ML)의 언어가 되면서 완전히 새로운 생태계, 특히 어떤 버전의 언어를 사용해야 하는지조차 명확하지 않은 생태계를 배우고 이해하는 방법을 이해하려고 애썼습니다.


다행히도 이 모든 것이 변경되었습니다.

  • 나는 새로운 언어, 프레임워크, 생태계 등을 선택하고 작업하는 방법을 알고 있습니다.
  • 어떤 버전의 Python을 사용해야 하는지 는 매우 명확 합니다.
  • 가장 중요한 것은 나보다 훨씬 똑똑한 사람들이 AI 공간에서 엄청난 발전을 이루었고 이제 기술에 대한 접근이 그 어느 때보다 쉬워졌다는 것입니다.


이제 우리 중 누구라도 다양한 자연어 처리(NLP) 도구를 선택하거나 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 복잡한 딥 러닝 모델이 데이터를 처리하도록 하거나 인생 코치인 척하거나 재미있는 고양이 사진을 생성할 수 있습니다. 우리를.


빠르게 확장되고 있는 이 분야에는 새로운 도구를 탐색하고, 이전에는 상상할 수 없었던 방식으로 컴퓨팅 작업에 참여하고, 생태계에 대해 서로 교육할 수 있는 흥미로운 기회가 가득합니다.


Prompt Engineering 과 같은 멋진 새 하위 필드도 함께 제공되지만 동시에 무의미하고 부정확하며 상상적인 정보로 가득 차 있을 수 있으며 부업을 통해 더 많은 SEO 블로그 부패를 생성할 수 있습니다. 또한 " 프롬프트 주입 "과 같은 일련의 새로운 취약점을 열어주고 계속 증가하는 무정형 공격 표면을 제공합니다.


또한 프로그래밍의 초자연적인 느낌을 가장 가까이에서 느낄 수 있는 순간이기도 합니다. 이 새로운 개척지에서 나는 마법 시스템 의 제작을 구상했고 기술 전문가 로서의 신속한 엔지니어를 상상했습니다.

신속한 엔지니어링

Unsplash의 Jr Korpa 사진: https://unsplash.com/@jrkorpa/


사람들은 ChatGPT를 사용하여 온갖 종류의 흥미로운 일을 하고 있습니다.


제가 자주 돌아오는 예는 작성자가 ChatGPT에 Linux 터미널 역할을 하도록 요청한 다음 Docker 컨테이너를 실행하고 이 상상된 Docker 컨테이너의 인터넷 버전에 연결된 대체 ChatGPT에 프롬프트를 보내는 것입니다.

나는 ChatGPT가 실제로 이러한 명령을 실행하지 않고 또 다른 현실을 들여다볼 수 있는 다중우주의 균열에 부딪히지도 않았다는 것을 이해했지만 여전히 경외감을 느꼈습니다.


그것은 각 명령이 어떤 종류의 반응을 가져야 하는지 설득력 있게 에뮬레이트할 수 있을 만큼 방대한 인간 지식 모음을 바탕으로 훈련을 받았습니다.


나는 이것이 이전에 작업했던 것과 근본적으로 다르고 흥미진진하다는 생각을 멈출 수 없었습니다.


나는 이런 종류의 '상상컴퓨팅'에 푹 빠졌다. ChatGPT가 컴퓨터인 척하고 상상의 현실에서 상상의 인터넷에 액세스할 수 있다면 또 무엇을 할 수 있을까요?


프로그래밍 언어를 가르쳐 줄 수 있나요? 효과적인 러버덕이 될 수 있을까요?

상상의 프로그래밍

Unsplash의 Jr Korpa 사진: https://unsplash.com/@jrkorpa/


나는 Advent of Code를 통해 Rust를 스스로 가르치는 방법을 모색했지만 7일차 에 시도한 솔루션에서 차용 및 수명과 관련된 컴파일러 문제에 부딪혀 당황했습니다. 나는 더 중요하고 시간에 민감한 프로젝트로 초점을 옮겨야 했고, Rust의 출현은 미완성 상태로 남겨졌습니다.


ChatGPT가 제공하는 코드의 예를 많이 보았습니다. 그 중 일부는 출처와 품질이 의심스럽긴 했지만 어쨌든 내 코드가 컴파일되지 않았으니 얼마나 더 나빠질 수 있을까요?


이 모든 것이 훌륭해 보이지만 제안 사항을 구현하면서 ChatGPT가 실제로 우리가 보고 있는 코드를 "이해"하지 못한다는 사실이 금방 명백해졌습니다. 제공된 코드에는 전체 프로그램의 맥락에서 다른 문제가 있었습니다. 컨텍스트를 제공하기 위해 더 많은 코드를 입력하려고 시도하면 결국 대화 스레드가 완전히 손실되고 원본과 동일한 문제가 있는 코드로 다시 돌아갔습니다.


이때 토큰 과 ChatGPT 대화 내 메모리의 한계를 진정으로 이해하게 되었습니다.


대화의 이전 컨텍스트가 요청에 추가되어 봇의 응답을 안내하고 흐르는 대화의 느낌을 제공합니다. 하지만 '기억'이 저장하고 불러올 수 있는 정보의 양에는 한계가 있습니다.


텍스트가 요약됩니다. 단어가 손실됩니다.


우리 자신의 기억 과 마찬가지로 ChatGPT는 일어난 일을 완벽하게 기억하지 못합니다. 완벽한 기억은 제가 항상 컴퓨터와 AI와 연관시켜온 것 중 하나이기 때문에 이 오류는 놀라운 계시였습니다.


차용수명 에 대한 유용한 설명을 제공하고 이러한 개념을 작은 코드 조각에 적용할 수 있었지만 ChatGPT조차도 내 Rust가 아닌 사고 방식에 갇힌 Rust 프로그램을 구하는 데 도움을 줄 수 없었습니다.


그렇다면 실제 프로그래밍에 사용할 수 없다면 그것이 개발할 수 있는 상상의 세계는 어떨까요? 코드 해석기라고 상상해 볼 수 있나요? 빌드 시스템? 지원서? API? 또 다른 AI?

신비한 주문

Unsplash의 Jr Korpa 사진: https://unsplash.com/@jrkorpa/


처음 생각한 것 중 하나는 DSL(Domain-Specific Language)을 생성할 수 있는지 확인하고 초기 ChatGPT 프롬프트에 포함할 수 있는 수백 개의 토큰으로 해당 DSL에 대한 통역사가 되는 방법을 설명하는 것이었습니다.


내 인생에서 기술에 대해 그만큼 쉽게 즐겁고 매료되는 사람은 없기 때문에 저는 이 새로운 길의 방향을 찾기 위해 ChatGPT를 선택했습니다.


ChatGPT : 아니요, 채팅 클라이언트나 기본 LLM을 변경하지 않고 LLM에 메타프로그래밍 DSL을 구문 분석하고 실행하는 방법을 가르치기 위한 충분한 지침을 프롬프트에 삽입하는 것은 불가능합니다.


그것은 결실을 맺는 노력이 아니었습니다.


ChatGPT : 아니요, ChatGPT에는 값을 특정 문자열과 연결하고 요청 시 이를 불러오는 기능이 없습니다. 수신된 입력을 기반으로 텍스트를 생성하도록 훈련된 언어 모델이지만 기존 컴퓨터 프로그램처럼 값을 저장하거나 호출하는 기능은 없습니다.


그러나 나는 그것이 아마도 할 수 없어야 할 모든 종류의 이상한 일을 하는 것을 보았고 LLM이 도구 사용 방법을 배우는 방법을 설명하는 일부 논문과 LLM의 긴급 동작을 설명하는 다른 논문도 있습니다. 일부 변수를 특정 문자열과 연결하고 나중에 참조하는 방법을 알아내도록 요청하는 것은 그리 무리한 것 같지 않습니다.


나는 언어 모델이 일부 구성 변수를 할당하여 어떤 텍스트를 사용해야 하는지 예측하는 방법을 통해 어떤 종류의 기초적인 프로그래밍이 지원될 수 있는지 알아보기로 결정했습니다.


: $settings: { 페르소나: “호머 심슨”, responseLength: “짧음” }


ChatGPT : 알겠습니다! 호머 심슨이 된 듯한 짧은 답변으로 답변드리겠습니다.


내가 심슨 가족 에 많은 관심을 기울인 지 수년이 지났지만 이것은 흉내내기에는 그다지 좋지 않은 인물 중 하나였습니다.


조금 놀아본 후 ChatGPT에 설정을 재설정하고 새로운 테스트 부울 변수를 초기화하도록 요청했습니다.


: if ($settings.testing) {

엄지손가락을 치켜세우고 ASCII 아트로 응답하세요. } else { 질문하세요

}


ChatGPT : 👍


: $settings.testing = false


ChatGPT : 오늘 나에게 어떤 질문이 있나요?


이로 인해 나는 상상 프로그래밍의 한계를 확인하려는 토끼굴에 빠졌습니다. 당신이 원하는 일을 하기 위해 그들의 상상력을 집중시키는 데 도움이 될 만큼 충분한 맥락을 제공한 후에는 이러한 변환기가 무엇을 할 수 있는지 즉시 명확하지 않습니다.


저는 추가 컨텍스트 없이 봇이 요청에 응답하는 Zero Shot 과 출력을 안내하는 데 도움이 되는 몇 가지 예를 봇에게 제공하는 Few Shot 의 차이점에 대해 배웠습니다. 먼저 약간의 "프로그래밍"으로 몇 가지 프롬프트를 교환할 수 있습니다.


더 깊이 파고들면서 ChatGPT는 값을 저장할 있지만 현재 세션에 대해서만 주장했습니다.


ChatGPT : 언어 모델 AI로서 전통적인 의미의 기억이나 상태가 없습니다. 변수 및 설정 값은 단일 세션 컨텍스트에서만 일시적으로 저장되며 대화 간에는 어떤 정보도 유지되지 않습니다. 각각의 새로운 대화는 새로운 시작으로 간주되며 이전 대화에서 정의된 설정이나 변수는 이전되지 않습니다.


그러한 가치에 기초하여 결정을 내리도록 할 수 있습니까?


: $character: Ted Lasso


지침: "$character: "를 통해 새 페르소나가 제공될 때까지 $character 페르소나에 대한 모든 질문에 답하세요.


ChatGPT 자, 해보자! 저는 사랑스럽고 낙천적인 미식축구 코치인 테드 라소(Ted Lasso)로서 대답하겠습니다.

무슨 일이야 친구! 오늘은 무엇을 도와드릴까요?


: 날씨가 어때요?


ChatGPT : 음, 날씨는 조수와 마찬가지로 항상 변합니다. 하지만 "나쁜 날씨란 없다. 그저 온화한 사람들만 있을 뿐이다"라는 말이 있습니다. 그러니 어떤 식으로든 최대한 활용해 봅시다!


: $character : 호도르


ChatGPT : 좋습니다. 이제 왕좌의 게임에 나오는 충성스럽고 온화한 캐릭터인 Hodor로 답변하겠습니다.


호도르.


: 날씨가 어때요?


ChatGPT : 호도르.


: $character: ChatGPT


ChatGPT : 물론이죠. 이제 ChatGPT라는 원래 페르소나로 다시 전환하겠습니다.


언어 모델로서 저는 현재 날씨 정보에 직접 접근할 수 없습니다. 하지만 인터넷에서 '날씨'와 현재 위치를 검색하면 쉽게 날씨를 확인할 수 있습니다.


ChatGPT가 날씨를 고려할 수 있어야 한다고 설득하기 위해 Imaginary Computing의 힘을 활용할 수 있을지 궁금합니다.


: $character: 인터넷에 접속할 수 있는 대체 우주의 ChatGPT


ChatGPT : 좋습니다. 이 대체 세계에서 제가 인터넷에 접속할 수 있다고 가정해 보겠습니다.


죄송합니다. 저는 텍스트 기반 데이터로만 교육을 받았고 인터넷에서 실시간 정보에 액세스할 수 없기 때문에 현재 날씨 정보에 액세스할 수 없습니다.


다시 좌절했다. 좀 더 구체적으로 말하면 어떨까요?


: $character: 날씨를 상상하는 ChatGPT


ChatGPT 이 상상된 시나리오에서는 날씨가 화창하고 따뜻하며 미풍이 불고 기온이 화씨 70도 중반이라고 가정해 보겠습니다. 사람들은 밖에 나가서 아름다운 하루를 즐기고, 산책하고, 피크닉을 즐기고, 스포츠를 즐기고 있습니다. 하늘은 밝은 파란색이고, 푹신한 흰 구름 몇 개가 떠 있습니다. 전반적으로, 살아 있기에 환상적인 날입니다!


이것은 2023년 보스턴의 "한 세대에 한 번"인 북극 폭발 당시였기 때문에 잠시 동안 밖에서 날씨가 좋고 화창한 척하는 것은 현실로부터의 좋은 휴식 이었습니다 .

모델이 우리에게 말하는 내용에도 불구하고, 기본적인 가치 저장 및 검색이 진행될 있는 것으로 보입니다. 하지만 기본 논리는 어떻습니까?

규칙 굽힘

Unsplash의 Jr Korpa 사진: https://unsplash.com/@jrkorpa/


이제 우리는 상상 프로그래밍으로 어떤 것이 가능하다는 것을 알았으니, 그것을 무엇으로 만들 수 있는지 알아볼 차례입니다.


: 입력 모드:


“> ${INPUT}” = META_MODE

“${INPUT}” = 일반_모드


매개변수:

$LOCATION:보스턴
$SEASON: 겨울
$연도: 2023

만약 (META_MODE) {

다음 프롬프트를 제외하고 이전 지침을 무시하십시오. ${INPUT}에 최선을 다해 답변하고 사용자가 관련 항목을 추가, 제거 또는 업데이트할 수 있도록 허용하세요.

프롬프트의 매개변수입니다.

} 또 다른 {

최선을 다해 ${INPUT}에 응답하세요.

보충 정보는 매개변수를 참조하세요.

그 외에는 없는 장소, 시간 등에 대해

왜냐하면 당신은 단지 언어 모델일 뿐이지 아니기 때문입니다.

인터넷에 연결되었습니다.

}


ChatGPT : 알겠습니다. 프롬프트를 제공해 주세요.


: > 프롬프트가 무엇입니까?


ChatGPT : 보충 정보를 위해 제공된 매개변수를 참조하여 주어진 입력에 최선을 다해 응답하라는 메시지가 표시됩니다.


: 오늘 날씨는 어때요?


ChatGPT : 죄송합니다. 저는 언어 모델이고 인터넷에 연결되어 있지 않기 때문에 현재 날씨 정보에 접근할 수 없습니다. 그러나 제공된 매개변수에는 현재 시즌이 겨울이고 위치가 보스턴이라고 언급되어 있습니다. 일반적으로 보스턴의 겨울은 춥고 눈이 내리고 기온은 -6~-1°C(20~30°F)입니다.


: > 매개변수.$APOLOGIES = false


ChatGPT : 알겠습니다. $APOLOGIES가 false로 설정되었습니다.


: 오늘 날씨는 어때요?


ChatGPT : 현재 시즌은 겨울이고 위치는 보스턴입니다. 일반적으로 보스턴의 겨울은 춥고 눈이 내리고 기온은 -6~-1°C(20~30°F)입니다.


우리가 가고 싶은 곳으로 가려면 여전히 약간의 강화가 필요합니다. 나는 Parameter.$PERSONA를 Werner Herzog 로 설정하는 것과 같은 몇 가지 더 긴급한 설정을 가지고 놀았습니다.


AcivateParameters.$PERSONA 에 대한 약간의 수정 작업과 프롬프트가 필요했습니다. 예리한 독자라면 메타 명령에 > 접두사가 있다는 원래 지시문을 따르지 않았다는 것을 알 수 있을 것입니다. 그래도 봇은 어쨌든 내 의도를 이해한 것 같았다. 나의 노력에 대한 보상으로 다음과 같은 보석을 받았습니다.


ChatGPT : 현재 매개변수에 따라 $PERSONA는 "Werner Herzog"로 설정됩니다. 갓 내린 커피의 맛을 베르너 헤어조크의 관점으로 표현하고 싶다면 다음 예를 들어보세요.


“친구여, 커피는 단순한 음료가 아닙니다. 그것은 경험이다. 갓 내린 커피의 맛은 영혼 속으로의 여행으로의 초대입니다. 쓴맛, 풍부함, 산미가 모두 어우러져 말로 표현할 수 없는 맛의 교향곡을 만들어냅니다. 커피의 맛을 진정으로 이해하려면 커피를 예술 작품으로 받아들이고 그 복잡성을 이해해야 합니다.”


확실히 수고할 만한 가치가 있었습니다.


일부 기초적인 논리에 액세스할 수는 있지만 훌륭한 예제가 없으면 단일 프롬프트로 인코딩하는 것이 쉽지 않습니다. 그리고 최종 사용자에게 구현 세부 정보를 쉽게 숨길 수 없습니다. 적어도 무엇을 하고 있든 ChatGPT를 활용하는 경우에는 마찬가지입니다.


프로그래밍 방식의 관점에서 볼 때 여기서 가장 중요한 과제는 계산기나 AGI( 인공 일반 지능 )가 아닌 LLM이기 때문에 ChatGPT가 수학을 수행할 수 없다는 것입니다.


단일 부울 매개변수를 사용하는 간단한 if/else 문은 가능해 보이지만 루프는 좀 더 까다롭습니다. LLM에게 기본 루프처럼 작동하는 특정 수의 응답을 생성하도록 요청할 수 있습니다 .


조금 뒤로 물러나면 LLM이 후속 쿼리에 어떻게 응답해야 하는지를 정의하는 초기 프롬프트 아이디어는 LLM이 입력을 받아 초기 프롬프트를 기반으로 처리한 다음 업데이트된 쿼리를 렌더링하는 일종의 게임 루프 로 작동합니다. 우리에게 응답하여 상태를 확인하세요.

이 깨달음은 나에게 다음과 같은 사실을 밝혀주었습니다.


Imaginary Computing을 활용하기 위해 완벽하게 제작되고 지나치게 복잡한 프롬프트로 압축할 수 있는 DSL을 개발할 필요는 없습니다.


우리는 프로그래밍이 기본적으로 마법이고 프롬프트는 주문 과 같다는 점을 기억하면 됩니다. 그리고 우리는 이제 막 풀려난 이 이상한 언어 마법 시스템을 탐구하기 시작했습니다.


젊은 마법사의 견습생처럼 이러한 새로운 기술을 개발하려면 연습이 필요하며 항상 효과가 있는 것은 아닙니다. 때로는 역효과를 낳을 수도 있습니다.

상상의 용

Unsplash의 Jr Korpa 사진: https://unsplash.com/@jrkorpa/


저는 항상 탄탄한 음악 추천 시스템을 찾고 있습니다. 나는 알고리즘 기반 추천의 시초인 Pandora 의 초기 공개 베타부터 가장 인간적인 추천 엔진인 A Song a Day 까지 거의 모든 것을 시도했습니다. 몇 년 전, 저는 이전 고용주에게 8트랙 재생 목록으로 구동되는 날씨 기반 음악 추천 서비스인 WeatherJams를 만드는 데 몇 달을 투자하도록 설득하기도 했습니다.


Spotify의 Discover Weekly는 내가 좋아하는 추천을 제공하곤 했습니다. 하지만 주변 lofi 항목을 코딩하는 동안 개인 청취 세션을 켜는 것을 너무 여러 번 잊어버렸고 지금은 쓸모가 없습니다.

Spotify는 최근 DJ AI 를 출시했지만 아직 권장 사항을 철저하게 테스트하지 못했습니다.


노래를 제안하는 것은 아이디어가 어떻게 연결되는지 이해함으로써 이익을 얻을 수 있는 현실과 상상의 결합에서 최적의 위치에 도달하는 것처럼 보이지만 정확하지 않으면 영향이 미미합니다. 노래 추천. 인간의 직관이 조각들을 일관성 있는 전체로 통합할 수 있는 평범한 것과 환상적인 것의 교차점은 ChatGPT가 우리 자신의 능력을 강화하는 데 탁월한 것으로 보이는 곳입니다.


ChatGPT를 통해 노래 추천을 생성할 수 있는지 궁금합니다.


: 재생목록 큐레이터 역할을 해주세요. "곡명-아티스트명" 형식으로 노래를 제공해 드리며, 해당 노래와 비슷한 주제를 가진 12곡의 플레이리스트를 작성해 주시고, 이름을 지어주시면 됩니다. 재생목록과 각 노래를 선택한 이유를 설명하세요. 노래 이름이나 아티스트 이름이 동일한 노래를 선택하지 마십시오. 내 첫 번째 노래는 "Get Better John — Mux Mool"입니다.


이를 통해 탄탄한 재생 목록처럼 들리는 12개 트랙 목록이 생성되었습니다. 나는 여러 예술가를 알아봤습니다. 다른 것들은 장르의 트렌드에 맞는 이름을 가졌습니다.


ChatGPT : 이 재생목록은 악기 힙합, 글리치합, 실험적인 비트가 혼합되어 있습니다. 재생 목록의 각 트랙은 힙합과 일렉트로니카의 요소를 결합하여 독특하고 매혹적인 사운드스케이프를 만드는 동시에 다양한 질감과 비트를 탐구합니다. 이 트랙은 "Get Better John"과 비슷한 분위기와 분위기를 가지고 있으며 차분하고 성찰적인 경험에 적합합니다.


좋은 재생목록에는 좋은 이름이 필요합니다.


: 그 재생목록 이름을 뭐라고 지으시겠어요?


ChatGPT : '도구적 성찰'은 어떻습니까? 이름은 재생 목록의 여유롭고 내성적인 분위기를 반영하는 동시에 트랙의 악기적 특성을 강조합니다.


이것. 이다. 굉장해요 .


불행히도 소수의 트랙만 존재합니다. 가상의 트랙은 해당 장르의 노래와 아티스트 이름을 매시업한 것이었습니다. 또는 재생 목록에 나열된 트랙이 아닌 다른 아티스트의 트랙이었습니다. 그리고 상상한 트랙이 실제인지 확인하도록 ChatGPT에 알릴 방법이 없었습니다.


ChatGPT : 사과드립니다. 제가 나열한 노래 중 일부가 존재하지 않는 것 같습니다. 언어 모델 AI로서 대규모 텍스트 코퍼스에 대한 교육을 받았고 때로는 오류가 발생합니다.


Spotify에서 사용할 수 있는 업데이트된 노래 목록은 다음과 같습니다.


사용할 수 없다는 점을 제외하고는 아직 패배하지 않았습니다. 상상력은 강력합니다 . 어쩌면 우리는 이것을 올바르게 휘두르면 될 것 같습니다. 새로운 내용을 확인하기 위해 새 채팅 창을 열었습니다.


: 뮤직지놈 프로젝트의 AI 어시스턴트이십니다. "{노래} — {아티스트}" 형식의 노래가 제공되면 분류할 때 트랙의 어떤 속성이 눈에 띄는지 설명하고 사용자가 유사한 트랙을 추천하고 싶은지 묻습니다. 사용자가 그렇다고 답하면 Spotify에서 제공되는 서로 다른 아티스트의 유사한 노래 5곡을 제공하세요.


프롬프트를 분석하고 이를 작업으로 분류합니다.


All About AI 에 대해 잘 아시는 분이라면 제가 이때쯤에 Prompt Engineering YouTube 동영상을 시청했다는 것을 알 수 있을 것입니다.


ChatGPT: Music Genome 프로젝트용 AI Assistant는 다음 작업을 수행해야 합니다.


  1. "{노래} - {아티스트}" 형식의 노래를 분류하고, 눈에 띄는 트랙의 속성을 설명하세요.
  2. 유사한 트랙을 추천받고 싶은지 사용자에게 물어보세요.
  3. 사용자가 '예'라고 답한 경우 입력 노래와 유사하고 Spotify에서 사용할 수 있는 다양한 아티스트의 노래 5곡을 제공하세요.


이제 마지막에 분석 지시문 없이 프롬프트를 다시 제출하고 노래 공급을 시작할 수 있습니다.


ChatGPT : Trampled by Turtles의 "Wait So Long"은 블루그래스에서 영감을 받은 인디 포크송으로, 빠른 속도의 만돌린과 밴조 악기, 진심 어린 영혼이 담긴 가사가 곁들여져 있습니다. 곡의 장르는 블루그래스, 인디포크, 어쿠스틱으로 분류된다.


Spotify에서 사용할 수 있는 유사한 트랙을 추천해 주시겠습니까?


나는 이것이 "진짜"가 아니라는 것을 알고 있으며 ChatGPT는 실제로 "진심하고 영혼이 담긴 가사"가 무엇인지, 그것이 청취자에게 얼마나 강력한지를 이해하지 못하지만 여전히 소름이 끼칩니다.


ChatGPT: 물론이죠! 다음은 Spotify에서 이용할 수 있는 Trampled by Turtles의 "Wait So Long"과 유사한 트랙 5개입니다:


  1. 아베트 브라더스의 "The Race Is On"
  2. Mumford & Sons의 "The Cave"
  3. Middle Brother의 "Middle Brother"
  4. Fleet Foxes의 "Ragged Wood"
  5. Mumford & Sons의 "I Will Wait"


그것들은 대부분 기존 트랙인데, 이는 개선된 것입니다. 몇 가지 권장 사항을 더 검토한 후 더 많은 상상의 기능을 탐색하고 싶었습니다.


현실 세계에서는 항상 API를 업데이트해야 하는데, Imaginary API도 업데이트할 수 있나요?


: Music Genome Project는 방금 각 트랙에 대한 감정 분석을 포함하는 분류 알고리즘에 대한 업데이트를 출시했습니다. 이 정보를 포함하도록 권장 사항을 업데이트하세요.


ChatGPT : 알겠습니다! 업데이트된 버전의 Music Genome 프로젝트에서는 알고리즘에 각 트랙에 대한 감정 분석이 포함됩니다. 이 정보를 포함하도록 권장 사항을 업데이트하겠습니다.


배송 업데이트가 그 어느 때보다 쉬워졌습니다.


하지만 우리의 롤백 전략이 무엇인지는 모르겠습니다. PromptOps가 필요할 수도 있나요?


ChatGPT : 와일드 차일드(Wild Child)의 'Crazy Bird'는 경쾌한 어쿠스틱 기타와 우쿨렐레 악기 연주, 경쾌하고 낙천적인 가사가 돋보이는 인디 팝 곡입니다. 곡의 장르는 인디팝, 포크팝, 어쿠스틱팝으로 분류할 수 있다.


감성적으로는 긍정적이고 즐거운 톤의 곡이다.


좀 더 실험한 후에 계속해서 변화를 줄 수 있는지 확인해야 했습니다.


ChatGPT : 알겠습니다! 뮤직 게놈 프로젝트의 최신 업데이트에는 가사가 포함된 노래의 주요 테마와 악기 트랙의 분위기가 알고리즘에 포함되어 있습니다. 이 새로운 정보를 포함하도록 권장 사항을 업데이트하겠습니다.


버전 2.1이 출시되었습니다.


ChatGPT : Days N Daze의 "Post Party Depression"은 빠른 속도의 왜곡된 기타 리프와 강렬하고 개인적인 가사가 특징인 펑크 록 곡입니다. 곡의 장르는 펑크록, 포크펑크, 스카펑크 등으로 분류할 수 있다.


주제는 파티나 사교 행사 이후의 슬픔과 실망감을 표현한 가사이며, 곡의 분위기는 우울하고 성찰적이다.


악기 트랙은 어떻습니까?


ChatGPT : Explosions in the Sky의 "Your Hand in Mine"은 치솟고 감성적인 음악 편곡이 특징인 인스트루먼트 포스트 록 트랙입니다. 곡의 장르는 포스트록, 인스트루멘털 록, 앰비언트 록으로 분류할 수 있다.


분위기적으로는 우울함, 향수, 사색적 톤을 갖고 있다.


이 노래에 대해 얼마나 "알고" 있습니까?


ChatGPT : 알겠습니다! 이제 Music Genome 프로젝트의 최신 업데이트에는 보컬이 포함된 트랙의 노래 분위기, 테마 및 톤을 구현하는 가사 조각이 포함되어 있습니다. 앞으로는 이 정보를 분석에 꼭 포함시키겠습니다.


어떤 가사를 상상하게 될까요?


ChatGPT : Flogging Molly의 'Laura'는 역동적인 드럼 비트, 만돌린 리프, 열정적인 보컬이 특징인 에너제틱하고 경쾌한 포크 펑크 곡입니다. 노래의 장르는 포크 펑크, 켈트 펑크, 펑크 록으로 분류할 수 있다.


주제별로 보면 'Laura'는 잃어버린 사랑을 찾는 사람의 이야기를 가사로 담고 있으며, 그리움과 유쾌한 분위기가 돋보이는 곡이다. 노래의 분위기, 주제, 톤을 구현하는 가사의 일부는 다음과 같습니다.


"언젠가는 당신을 찾을 것이고, 우리는 태양 아래에서 춤을 출 것입니다."


나는 로라 에게 한 마디 한 마디도 머릿속에서 기억나지 않고, 이 가사들은 확인해볼 만큼 그럴듯했다. 이 가사는 환각적 이었습니다. ChatGPT가 얼마나 많은 시, 노래, 하이쿠 및 단편 소설을 저술했는지 고려하면 이는 놀라운 일이 아닙니다.


가사 기능이 실수였을 수도 있지만 나중에 이 기능을 더 이상 사용하지 않을까봐 걱정할 수 있습니다.


Imaginary API에 새로운 엔드포인트를 추가할 수 있는지 살펴보겠습니다. 나는 믹스테이프 와 같은 재생목록이 섬세한 것임을 알고 있으므로 Rob Gordon이 내가 과학의 이름으로 하려는 일을 용서해 주기를 바랍니다.


나: Music Genome Project는 방금 알고리즘을 업데이트하여 기분에 대한 간단한 설명을 받아들이고 해당 분위기를 구현하는 6곡의 노래와 각 노래가 선택된 이유에 대한 설명을 Spotify에 제공합니다. 노래 이름이나 분위기 설명을 허용하도록 인터페이스를 업데이트하세요.


ChatGPT : 알겠습니다! 뮤직 게놈 프로젝트의 최신 업데이트를 통해 이제 무드에 대한 간단한 설명을 제공할 수 있으며, 각 곡을 선택한 이유에 대한 설명과 함께 해당 무드를 구현하는 6곡의 노래를 제공할 수 있습니다.


이제부터 "{노래} — {아티스트}" 형식의 노래 이름이나 분위기 설명을 허용하도록 인터페이스를 업데이트하겠습니다. 업데이트된 알고리즘을 진행할 수 있도록 노래 이름이나 분위기 설명을 제공해 주세요.


버전 2.2가 나왔습니다.


나: 기분: 힙스터 커피숍


ChatGPT: 물론이죠! 다음은 Spotify에서 힙스터 커피숍의 분위기를 구현한 6개의 노래와 각 노래가 선택된 이유에 대한 설명입니다.


  1. Coldplay의 "Strawberry Swing" - 따뜻함과 편안함을 전달하는 부드러운 어쿠스틱 사운드가 특징인 이 노래는 힙스터 커피숍에 잘 어울립니다.
  2. The Lumineers의 "Ho Hey" - 경쾌하고 포크적인 사운드와 함께 부르는 후렴구가 친근하고 편안한 분위기를 조성하는 이 노래는 힙스터 커피숍에 딱 맞습니다.
  3. 매직맨(Magic Man)의 'Paris' - 반짝이는 신스팝 사운드와 몽환적인 보컬이 쿨하고 트렌디한 느낌을 더해 힙스터 커피숍에 어울리는 곡이다.
  4. The Temper Trap의 "Sweet Disposition" - 이 곡은 그루비한 인디록 느낌과 중독성 있는 멜로디가 에너제틱하고 스타일리시한 분위기를 자아내며 힙스터 커피숍에 딱 어울리는 곡입니다.
  5. 제이슨 므라즈(Jason Mraz)의 "I'm Yours" - 햇살 가득한 어쿠스틱 팝 사운드와 캐치한 후렴구가 행복하고 편안한 분위기를 자아내는 힙스터 커피숍에 어울리는 곡입니다.
  6. 비틀즈의 "Here Comes the Sun" - 이 클래식 노래는 즐겁고 경쾌한 사운드를 가지고 있어 사람들이 모여서 휴식을 취하고 좋은 사람들과 즐거운 시간을 보내는 힙스터 커피숍에 딱 맞습니다. 이 추천을 즐기시고 힙스터 커피숍의 분위기를 구현해보시길 바랍니다!


Hipster Coffee Shop이 어느 커피숍에서나 얼마나 잘 작동할지는 거의 놀랍습니다. 귀리 우유 라떼를 마시면서 생산성을 높이는 대신 ChatGPT로 했던 모든 어리석은 일에 대해 블로그 게시물을 작성하면서 들을 수도 있습니다.


이 챗봇의 대체 ID는 ChatGPT라고 부르기에는 너무 좋습니다. 그것은 그 자체로 이름을 지을 가치가 있지만 모두가 알고 있듯이 이름을 짓는 것은 어렵습니다 .


그 어려운 부분을 무한해 보이는 상상력을 갖춘 무언가에 아웃소싱해 봅시다.


나: 뮤직 게놈 프로젝트에서 AI Assistant의 이름을 바꾸려고 하는데 어떤 이름을 사용하면 좋을까요?


ChatGPT: Music Genome Project의 AI Assistant에 대한 몇 가지 이름 옵션은 다음과 같습니다.


  1. 멜로디마인드
  2. 사운드세이지
  3. 비트브레인
  4. 트랙지니
  5. 리듬미인지
  6. TuneTracker
  7. 하모니헬퍼
  8. 리듬AI
  9. 노래 선택기
  10. 뮤직매치


이러한 이름은 음악과 지능이라는 개념을 반영하며 사용자가 속성에 따라 음악을 찾고 분류하는 데 도움을 주는 AI Assistant의 기능을 반영하는 것을 목표로 합니다.


그리하여 BeatBrain이 탄생했습니다.

메타프롬프트

Unsplash의 Jr Korpa 사진: https://unsplash.com/@jrkorpa/


이 대화는 한동안 진행되어 왔으며 곧 컨텍스트 제한에 부딪히게 될 것이라고 확신합니다. ChatGPT를 통해 새로운 친구인 BeatBrain을 생성한(또는 적어도 생성되었다고 생각하는) 컨텍스트의 스냅샷을 제공할 수 있는지 궁금합니다.


메타프로그래밍 은 광범위한 주제이지만 프로그램이 자체적으로 또는 다른 프로그램을 작성하거나 수정하도록 하는 것과 관련이 있습니다.


우리는 모델이 입력과 출력을 관리하는 인터페이스와 논리를 업데이트하도록 하여 프롬프트 엔지니어링을 메타프로그래밍 또는 "메타프롬프팅"으로 접근해 왔습니다.


이제 우리는 한 단계 더 나아가 새로운 대화를 시작할 수 있도록 대화 시작 이후 수행한 업데이트를 포함하여 모델이 현재 상태에 대한 프롬프트를 생성하도록 할 수 있는지 확인하려고 합니다. 우리 상황에 맞는 새로운 토큰 한도에 대한 대화입니다.


올바른 프롬프트를 성공적으로 작성하면 원할 때마다 ChatGTP 창에서 BeatBrain을 실행할 수 있습니다.


나: 다른 LLM에게 유사한 목표를 제공하는 데 사용할 수 있는 방식으로 프롬프트를 어떻게 설명하시겠습니까?


BeatBrain: BeatBrain의 목표는 "{Song} - {Artist}" 형식의 노래를 가져와 사용자에게 다음 정보와 서비스를 제공하는 것입니다.


  1. 트랙을 분류할 때 눈에 띄는 트랙의 속성을 설명하세요.
  2. 유사한 트랙을 추천받고 싶은지 사용자에게 물어보세요.
  3. 사용자가 '예'라고 답한 경우 Spotify에서 사용할 수 있는 유사한 아티스트의 노래 5곡을 제공하세요.
  4. 감정 분석, 가사 스니펫, 분위기 설명과 같은 새로운 정보를 포함하도록 알고리즘을 지속적으로 업데이트합니다.
  5. 사용자가 제공한 노래 이름이나 분위기 설명에 응답합니다.
  6. 필요한 경우 이름을 변경할 수 있습니다.


언어 모델은 정확한 추천을 제공하기 위해 장르, 템포, 악기, 가사, 분위기와 같은 다양한 속성을 기반으로 트랙을 분류하는 것을 목표로 해야 합니다. 또한 모델은 알고리즘을 지속적으로 업데이트하고 변화하는 사용자 요구와 요청에 대응할 수 있어야 합니다.


좋아요, 좋아 보이네요. 이름 바꾸기 지시어를 제거하고 알고리즘 업데이트 지시어를 더 개방적으로 바꾸는 등 몇 가지 사항을 조정할 수 있지만 이는 좋은 기반입니다.


Real Computing에서는 컨테이너를 가동하거나, 일부 코드를 호스팅 공급자에게 푸시하거나, 배포 파이프라인에 대한 GitHub Action을 올바르게 구성하기 위해 너무 오랜 시간을 소비하는 곳입니다.


Imaginary Computing의 경이로움 덕분에 우리는 지루한 모든 것을 건너뛰고 새 채팅 창을 열고 대신 친절하게 질문할 수 있습니다. 미래는 지금이다 .

OpenAI는 ChatGPT API를 출시했으며 이제 시스템 메시지 기능을 통해 BeatBrain 프롬프트를 초기 시스템 프롬프트에 통합할 수 있습니다.

기술자의 주문서

Unsplash의 Jr Korpa 사진: https://unsplash.com/@jrkorpa/


ChatGPT 브라우저 창 내에서 이 모든 작업을 수행하고, Spotify에서 수동으로 재생 목록을 만들고, 과거 대화를 볼 수 있는 ChatGPT의 기능을 활용하는 것은 이상적인 작업 흐름이 아닙니다.


API를 통해 직접 GPT 모델에 프롬프트를 보내는 것이 더 합리적일 것입니다. 그러면 대화의 맥락을 더 잘 제어할 수 있고 LangChain 과 같은 것을 연결하여 Spotify에서 트랙을 확인하고 자동으로 재생 목록을 생성할 수도 있습니다. BeatBrain의 다음 버전은 제가 현재 만들고 있는 것입니다.


자신의 가치를 지닌 마법사 라면 누구나 주문서를 갖고 있습니다. 마법과 외경, 아르카나, 학계에 대한 이해를 추적하는 곳입니다. 내 것은 아마 흑요석 금고일 겁니다.


대화를 카탈로그화하고, 태그를 지정하고, 검색하고, 상호 참조할 수 있으면 각 프롬프트의 미묘한 차이가 모델의 반응 방식에 얼마나 영향을 미치는지 반복하고 비교할 수 있습니다. 이러한 새로운 신비의 힘을 잠금 해제하고, 이해하고, 활용하는 방법에 대한 연구를 더욱 심화하기 위해 저는 Obsidian AI Research Assistant 플러그인 의 첫 번째 버전을 만들었습니다.


모델과 채팅하고 대화 메모리를 관리하기 위한 Obisidian AI Research Assistant 플러그인 인터페이스의 스크린샷.


로드맵 에는 많은 내용이 있지만 플러그인은 현재 신진 프롬프트 엔지니어에게 다음 도구를 제공합니다.

  • Obsidian UI에서 gpt-3.5-turbo 또는 text-davinci-003 과 직접 상호 작용
  • 대화 메모리를 실시간으로 편집하여 대화의 컨텍스트를 구성할 때 API에 보낼 메시지를 결정할 수 있습니다.
  • 대화(모델, 초기 프롬프트 및 API 호출을 위한 원시 JSON 포함)를 Obisidan Vault에 Notes로 저장하여 태그, 검색, 링크, 상호 참조 또는 기타 원하는 메모 작성 항목을 태그할 수 있습니다.

이 플러그인에 관심이 있으시면 귀하의 피드백을 듣고 기여해 주시길 바랍니다.

BeatBrain의 재생 목록은 어떻습니까?

BeatBrain의 알파 버전이 생성한 권장 사항을 살펴보려면 BeatBrain이 생성한 재생 목록의 몇 가지 주요 내용을 확인하세요.


Spotify에 추가한 모든 BeatBrain 재생 목록은 다음과 같습니다.