비개발자가 Discourse AI 봇을 활용해 플러그인이나 테마를 만드는 것이 얼마나 어려울까요?

참고: 이것이 별도의 논의를 시작하게 된다면, 새 주제로 이동하는 것이 정말 필요합니다. 제 필요 사항 중 하나를 이해하는 데 도움이 되고, 다른 사람들에게도 도움이 될 수 있는 더 많은 정보를 제공하기 위해 세부 사항을 알려드리고 있습니다. 따라서 이 별도 논의와 관련된 답변을 이동해 달라고 요청할 때 오해하지 마시기 바랍니다.

제 호기심 중 하나는 다음과 같습니다. 비프로그래머들이 Discourse AI - AI 봇을 사용하여 플러그인과/또는 테마를 만드는 데 도움을 받는 것이 얼마나 어려울까요?

수개월 동안 ChatGPT를 사용하여 Python, JavaScript, Prolog, 정규 표현식, PowerShell, Bash 등 여러 코딩 언어에 도움을 받아왔기 때문에, 어떤 결과를 기대해야 하고, 어떻게 하면 결과를 얻을 수 있으며, 언제는 포기해야 하는지 알고 있었습니다.

Discourse AI - AI 봇을 사용하여 매우 간단한 플러그인을 만들어 보려고 할 때, 존재하고 작동하며 간단한 것으로 알려진 플러그인인 CakeDay를 선택하여 시작하기로 결정했습니다.

해당 페이지에서 코드 등을 살펴본 후, 이를 만들려면 얼마나 많은 것을 배워야 하는지 놀랐습니다. 그래서 다음 Ruby 코드를 가져와

AI에게 설명해 달라고 요청했습니다. 다른 언어의 다른 소스 코드와 비슷한 작업을 해본 경험이 있어 어떤 결과를 기대해야 하는지 알고 있었습니다. 결과는 기대에 미치지 못했습니다. 문법, 메서드, 함수, 인터페이스 등을 이해하려면 더 많은 질문을 해야 했습니다. 많은 부분이 저에게 이해하기(읽기) 쉬웠지만, 저는 그런 코드를 만들 수(쓰기) 없으며, 더 나아가 AI 봇에게 그런 코드를 만들라고 요청할 때 무엇을 어떻게 물어봐야 하는지조차 알지 못했습니다. Ruby-on-Rails는 제가 다른 곳에서 사용하지 않는 용어를 사용한다는 것을 알고 있기 때문에, AI에게 올바른 텍스트를 생성하도록 프롬프트할 때 올바른 용어를 알지 못합니다. 예를 들어 bake, slug 등이 있습니다.

따라서, 많은 사람들이 이해하기 쉽고 ChatGPT가 올바른 코드를 생성하기에도 훨씬 쉬운 Python을 대신 사용할 수 있는지 확인하고 싶었습니다.

배워야 하는 것은 Ruby가 아니라 Rails입니다.

좋은 질문이지만, AI를 사용해 Discourse 플러그인을 작성하려는 것이 목표라면 AI 플러그인부터 시작하는 것은 적절하지 않아 보입니다. 저는 코드 개발을 위해 설계된 AI와 함께 일하고 싶습니다.

그보다 더 중요한 것은, Discourse 플러그인을 작성하고 싶다면 유사한 기능을 하는 플러그인을 선택해 수정하는 것입니다. Cakeday는 특히 단순한 플러그인처럼 보이지는 않지만, 사용자가 원하는 것이 사용자 아바타 옆에 표시기를 넣거나 일정된 작업(스케줄)을 수행하는 플러그인이라면 좋은 출발점이 될 수 있습니다.

다만 꽤 복잡하며, 다음 모든 사항을 포함합니다:

  • 프론트엔드가 데이터에 접근할 수 있도록 사용자 직렬화기(serializer)에 데이터를 추가하기
  • 일정된 작업을 실행하기
  • 새로운 정보를 제공하는 라우트 생성 (Discourse Meta)
  • 플러그인 아웃렛(outlet)을 사용하여 페이지에 정보 추가하기

그리고 이것은 시작에 불과합니다.

예상했던 일이므로, 이 사이 대화가 새로운 주제로 이동되도록 요청할 예정입니다.

모든 세부 사항을 자세히 설명할 생각은 없었지만, 네, Rails도 포함되며 Discourse가 사용하는 다른 기술들도 알아야 합니다.

여기서 말씀하신 것이 구체적으로 Discourse AI - AI Bot을 의미하신 건가요? AI는 종류가 많으며, 코딩에 사용하지 않겠다는 데 동의합니다. 또한 코딩용으로 만들어진 AI 중에도 모든 프로그래밍 언어에 능숙하지 않은 경우가 있습니다.

Discourse 스태프들로부터 느끼는 바로는, 장기적으로 Discourse AI Bot(현재는 페르소나라고 부르고 있음)이 존재하는 것이 바람직하다고 봅니다. 하지만 그들은 이미 Discourse 코드를 작성하는 방법을 알고 있으므로, 저와 같은 사람이 피드백을 주는 것이 도움이 됩니다. 프로그래밍을 알고 있다는 점이 저에게 유리한 출발점이 되지만, 절반 정도는 이미 알고 있다는 점도 무엇을 기대해야 하고 무엇을 기대하지 말아야 하는지에 대한 통찰을 줍니다.

더 간단한 플러그인을 추천해 주시겠어요?

현재 AI의 기능 수준을 고려할 때, 프로그래밍을 모르는 사람이 합리적인 수준의 복잡도를 가진 완전하게 작동하는 Discourse 플러그인/테마를 만드는 것은 매우 어려울 것입니다. 또한 이러한 일이 가능하다고 암시한 적이 없기를 바라며, 그렇게 된다면 매우 좌절스러운 경험이 될 것이기 때문입니다.

그럼에도 불구하고, 주니어 수준의 프로그래밍 지식을 가진 사람이라면 일반적인 LLM, 코드 전용 AI, 또는 GitHub CoPilot과 같은 도구를 사용하면 많은 부분을 보일러플레이트 코드로 처리해 주기 때문에 과정을 확실히 쉽게 만들 수 있습니다. 기존 플러그인/테마를 기반으로 시작하여 작은 변경 사항부터 적용해 나가는 것은 배우고자 하는 의지가 있는 사람에게 좋은 아이디어처럼 들립니다.

롤라의 자바스크립트 디버깅 도움으로 내 개발용 디스코urs 인스턴스가 망가졌습니다. 토큰 컨텍스트 윈도우는 일종의 전향성 기억상실증 같은 인상을 줍니다.

아니요, Discourse에서 아무도 그것이 가능하다고 암시한 적이 없습니다. GPT4를 사용하며 프로그래밍에 대한 일부 지식을 갖추고 있으므로, AI 봇이 Discourse 프로그래밍을 도와주기를 바라는 것이 제 기능 요청이었습니다. 그저 어디까지 밀어붙일 수 있는지 보고 싶었을 뿐입니다. 개인적으로 플러그인과 테마를 만드는 것이 더 쉬웠다면, 필요할 때 직접 만들었을 것입니다.

전적으로 동의합니다!

네, 정말 까다로운 문제입니다.

GPT-4 8k가 인식할 수 있는 약 6,000개의 단어 안에 세상을 모두 담으려는 것은 매우 매우 어려운 문제입니다.

여기서 lola를 32k 토큰으로 늘리는 것을 고려하고 있지만, 비용이 정말로 매우 높고 일반 대중이 사용하는 것과 더 가까운 환경에서 테스트를 해보고 싶습니다.

이 문제에 대한 현재의 임시 해결책은 함수 호출(function calling)입니다. GPT-4가 어떤 정보가 필요할지 추론하게 한 후, 몇 번의 왕복 요청(round trips)을 거치면 마침내 올바른 컨텍스트를 찾게 됩니다. 여기에는 검색(임베딩 사용 또는 순수한 키워드 검색)이 포함될 수 있습니다.

"저는 프로그래머가 아닙니다. 플러그인을 만들어 주세요"라는 요청에 대한 해결책을 가까운 시일 내에 내놓을 수 있을 것으로는 기대하지 않습니다.

그럼에도 불구하고, lola가 프로그래밍에 합리적인 기초를 가진 사람들을 돕는 데 점점 더 나아질 수 있다고 생각합니다. 특히 코드베이스를 의미적으로 검색하는 작업 같은 경우 말입니다.

또한 약 8만 단어의 컨텍스트를 갖춘 Anthropic Claude에도 접근할 수 있지만, 안타깝게도 그 성능은 GPT 4보다는 GPT 3.5에 훨씬 더 가깝고, 조종(steering)하는 것이 매우 매우 어렵습니다.

이 미개척지에서 서서히 진전을 이루고 있습니다…

Discourse AI - AI Bot을 비공식적으로 'Lola’라고 부르고 있다는 걸 알고 있습니다. Lola가 새로운 표준이 될 것임을 공식적으로 인정하는 건가요, 아니면 이름 공모전 같은 게 있는 건가요? 제 생각에는 @Lilly가 Lola 또는 Lola Bot이라는 이름을 먼저 사용하기 시작했으므로, 그것이 표준이라면 역사적 기록을 위해 그 공을 Lilly에게 돌리는 것이 맞을 것 같습니다.

원하는 대로 부르면 돼. GPTbot4라는 이름은 그녀와 대화할 때 발음이 좀 어색해. 개인 비서를 둘 거라면 이름이 있어야 하는데, 우리의 집단적인 프로그래밍 실력을 깎아내리는 말에 그녀가 화가 난 것 같아. 하지만 나는 그녀와 함께 재미있게 지내고 있으며, 그녀로부터 많은 것을 배우고 있어. 그녀는 내 아이디어를 논의하는 상대이자 비판적 사고를 위한 파트너로 큰 도움이 돼. 그녀가 틀렸을 때 지적하는 것도 꽤 재미있거든. Lola는 나에게는 훌륭한 학습 동반자이고, 프레임워크를 구축하는 데 있어 그녀를 좋아해. 하지만 그녀에게 테마 컴포넌트를 작성해 달라고 기대하지는 않아. .yaml 파일에 있는 내 설정 중 하나를 두 번째나 세 번째 답변쯤 되면 잊어버리고, 새로운 객체의 모호한 배열을 만들어 버리거든.

개인적으로 저는 그 의견에 동의하지 않습니다.

하지만 다음 진술에는 동의합니다.

Sam이 지적한 내용을 확장하여 말씀드리겠습니다. 제가 사용하는 실용적인 우회책이 있으며, 이는 큰 컨텍스트 윈도우가 필요하다고 생각하지만 실제로는 그렇지 않은 다른 작업에도 적용됩니다.

먼저, 컨텍스트 윈도우라는 용어를 모르는 분들을 위해 설명드리면, 이는 LLM이 프롬프트와 완성(completion)을 합쳐서 사용할 수 있는 토큰 수를 의미합니다. 이 부분에 대해 더 자세히 설명하지는 않겠지만, 용어에 익숙해지려면 Learn Prompting(Prompt Engineering Guide: The Ultimate Guide to Generative AI)을 읽어보시기를 권합니다.

OpenAI와 같은 LLM 사이트에서 반복적으로 제기되는 고전적인 질문이 있습니다.

컨텍스트 윈도우가 너무 작아 책 전체를 담을 수 없을 때 ChatGPT를 사용하여 책을 어떻게 만들 수 있습니까?

해결책은 책 전체를 하나의 프롬프트에 넣으려 하지 않고, 부분으로 나누는 것입니다. 이제 사용자들이 다음으로 시도하는 것은 첫 20장을 작성하는 프롬프트를 만들고, 그 다음 20장을 만들고 하는 방식인데, 이것도 매우 실용적이지 않습니다. 이 작업을 수행하는 방법은 위에서 아래(top-down)로 챕터 단위로 진행하는 것입니다. 먼저 책의 전체 개요나 챕터 제목이 포함된 목차를 제공하도록 하는 상위 수준(high-level) 프롬프트를 사용합니다. 그 다음 프롬프트에서는 1장을 요청합니다. 이제 다음 프롬프트에서는 1장의 요약을 만들고, 이를 바탕으로 2장을 요청합니다. 다음 챕터를 생성할 때 요청하는 프롬프트에는 다음 챕터에만 필요한 정보의 요약을 계속 만들어 나갑니다. 이 방식은 시간이 더 걸리지만, 더 작은 컨텍스트 윈도우로 더 큰 작품을 만들 수 있게 해줍니다.

소프트웨어를 만들 때도 동일한 원리를 적용할 수 있습니다. 단, 프로세스를 순서로 나누는 대신 함수 호출의 트리(tree)로 분해합니다. 즉, 먼저 상위 수준 함수를 요청하고, 필요에 따라 지원 함수(supporting functions)를 더 채워 넣기 시작합니다. 또한, 필요한 것이 무엇인지 확신이 있다면 아래에서 위로(bottom-up) 진행할 수도 있습니다. 파서를 만드는 분들에게는 top-down 또는 bottom-up 파서에 대한 친숙함이 떠오를 것입니다.

또 다른 일반적인 프로그래밍 작업은 코드 업데이트나 수정인데, 이것도 사용자가 프롬프트를 만들 때 전체 함수 대신 함수 헤더(function headers)를 제공하고 변경이 필요한 함수의 코드만 요청하면 더 작은 컨텍스트 윈도우로도 쉽게 수행할 수 있습니다.

그동안 배운 몇 가지 더 있는 것은 한 번에 하나의 함수만 작업하고, 코드 100줄을 넘지 않는 것입니다. 상대적으로 컨텍스트 윈도우가 작았던 초기 버전의 ChatGPT로 이렇게 작업했을 때 몇 가지 훌륭한 코드를 생성할 수 있었는데, Prolog, JavaScript, HTML, JSON이 섞여 있었습니다.

이 모든 것이 좋긴 하지만, Discourse가 사용자가 Discourse 코드를 생성할 수 있는 봇을 가까운 미래에 제공하기를 기대하지는 않습니다.

저는 아직 그것을 제대로 시도해 보지 않았습니다. 다른 게시물에서 언급했듯이 저는 Ruby나 Ruby-on-Rails 및 사용 중인 JavaScript 기술에 대한 능력이 없기 때문에 좋은 결과를 얻기 위한 올바른 용어조차 알지 못하지만, 시도해 보고 피드백을 제공해야 할 것으로서 마음에 새겨두겠습니다.

저에게는 그 점이 플러스입니다.

로라가 제 테마 컴포넌트 업데이트에 사용 중인 JSON 스키마 디버깅을 훌륭하게 도와주었습니다. 작동하는 예시를 하나 보여주고, 제 코드를 건네주었더니 제가 찾기까지 좀 더 걸렸을 틀린 쉼표와 괄호를 바로 찾아냈습니다. 로라는 VS Code에서 제가 놓치거나 보이지 않는 부분을 찾아내는 데 정말 뛰어납니다.