샘호트만
샘호트만
⚔️ 베테랑 파트너
🔬 임팩트 찐친

Claude 3.5 Sonnet 만으로 o1-preview model 따라 잡기(흉내 내기)

요새 LRM(Large Reasoning Model)을 바탕으로 RAG 프로젝트를 리딩하는데 유용하게 사용하고 있습니다. AI 프로젝트는 정답이 없기 때문에 망망대해를 걷는 기분이라 어려워 죽겠는데 o1 model에게 종종 기획하는데 문제를 해결하고 있습니다.

며칠전에 canvas가 chatgpt에 나왔습니다. canvas의 backbone model은 4o이고, o1 preview는 코드와 기획을 정말 잘 해주지만, 따로 대시보드나 웹앱을 구축해야하는 귀찮음이 있습니다. canvas는 부분부분 편집을 해주는 것 말고는 큰 장점을 못느끼고 있었습니다.

클로드의 아티팩트가 그래도 인터랙티브한 대시보드가 잘 나와서 여전히 애용 중인데 지나가다 참고자료를 봤는데 흥미로운 것이 있어서 오늘 짧은 시간에 호다닥 적용을 해보았습니다.

(이 글은 claude 서비스 유료 결제하신 분들에게만 유용한 글일 수 있습니다)

참고 자료

여기 해외 미디엄 글은 어떤 내용이냐~하면 제 검색기를 돌리면 다음과 같이 나타납니다.

Harish SG의 한국 광고

참고 게시글에서 이 양반이 개발한 프롬프트가 claude 3.5 sonnet 뿐만 아니라 다양한 모델에 적용해서 실험을 했을 때 o1 모델을 뛰어넘거나 유사한 성과를 보였다는 것입니다. (자세한 내용은 원문을 읽어보시는 것을 추천드립니다)

기술과 모��델 비교
샘플의 샘플 샘플 샘플 샘플의 백분율을 보여주는 막대 그래프

절대로 y축만보고 o1 model이 졌느냐? 라고 판단하기 어렵습니다. 그래도 제안된 프롬프트 방식이 꽤나 잘 푸는 영역이 있다는 점이 인상적이였습니다. 그래서 이 친구를 o1 preview model 다 쓴 사람들에게 한 줄기 빛이 될 수 있게 클로드에서도 최대한 비슷하게 접근해서 적용해볼 수 있겠다라는 생각이 들었습니다.

실행 과정

우선 따라해보실 분들은 아래 프롬프트를 복사해서 claude projects에 set custom instructions for project 에 복사붙여넣기를 수행합니다. 그리고 답변 길이는 아주 길어지니까 오래 걸립니다. 이 부분은 o1과 마찬가지로 정말 유사한 방식으로 접근했다는 뜻입니다.

아래 프롬프트는 Thought Generation 영역의 동적 CoT 기법과 최근에 핫한 Self-Critism 영역의 reflection 기법Verbal Reinforcement 방식이 모두 결합된 방식이라고 합니다.

Begin by enclosing all thoughts within <thinking> tags, exploring multiple angles and approaches.
Break down the solution into clear steps within <step> tags. Start with a 20-step budget, requesting more for complex problems if needed.
Use <count> tags after each step to show the remaining budget. Stop when reaching 0.
Continuously adjust your reasoning based on intermediate results and reflections, adapting your strategy as you progress.
Regularly evaluate progress using <reflection> tags. Be critical and honest about your reasoning process.
Assign a quality score between 0.0 and 1.0 using <reward> tags after each reflection. Use this to guide your approach:

0.8+: Continue current approach
0.5-0.7: Consider minor adjustments
Below 0.5: Seriously consider backtracking and trying a different approach


If unsure or if reward score is low, backtrack and try a different approach, explaining your decision within <thinking> tags.
For mathematical problems, show all work explicitly using LaTeX for formal notation and provide detailed proofs.
Explore multiple solutions individually if possible, comparing approaches in reflections.
Use thoughts as a scratchpad, writing out all calculations and reasoning explicitly.
Synthesize the final answer within <answer> tags, providing a clear, concise summary.
Conclude with a final reflection on the overall solution, discussing effectiveness, challenges, and solutions. Assign a final reward score.

번역한 프롬프트(DeepL)

모든 생각을 <생각> 태그 안에 묶어 다양한 각도와 접근 방식을 탐색하는 것으로 시작하세요.
<단계> 태그 안에 해결책을 명확한 단계로 나누세요. 20단계 예산으로 시작하고, 필요한 경우 복잡한 문제에 대해 더 많은 예산을 요청하세요.
각 단계 뒤에 <count> 태그를 사용하여 남은 예산을 표시합니다. 0에 도달하면 중지합니다.
중간 결과와 반성을 바탕으로 추론을 지속적으로 조정하고 진행 상황에 따라 전략을 조정하세요.
<반성> 태그를 사용하여 정기적으로 진행 상황을 평가하세요. 추론 과정에 대해 비판적이고 정직하게 평가하세요.
각 반성 후 <보상> 태그를 사용하여 0.0에서 1.0 사이의 품질 점수를 부여하세요. 이를 통해 접근 방식을 안내하세요:

0.8+: 현재 접근 방식 계속
0.5-0.7: 약간의 조정 고려
0.5 미만: 진지하게 백트래킹하여 다른 접근 방식을 시도해 보세요.


확실하지 않거나 보상 점수가 낮은 경우, <생각하기> 태그에 결정을 설명하면서 백트래킹하여 다른 접근 방식을 시도해 보세요.
수학 문제의 경우, 모든 작업은 공식 표기법을 위해 LaTeX를 사용해 명시적으로 표시하고 자세한 증명을 제공하세요.
가능하면 여러 가지 해결책을 개별적으로 탐색하고 반성적으로 접근 방식을 비교하세요.
생각을 스크래치 패드처럼 사용하여 모든 계산과 추론을 명시적으로 기록합니다.
<답안> 태그 안에 최종 답을 종합하여 명확하고 간결한 요약을 제공합니다.
효과, 문제점, 해결책을 논의하면서 전체 솔루션에 대한 최종 반성으로 마무리합니다. 최종 보상 점수를 부여합니다.

위 프롬프트를 보면 CoT와 Reflection, Reward 개념이 모두 들어가있습니다. 이 프롬프트를 보고 재밌네~ 라는 생각이 들었습니다.

프로젝트를 보여주는 웹페이지의 스크린샷

사례 1

이제 만들고 싶은 내용을 클로드와 함께 합니다. 저는 제 밑에 AI 엔지니어 3명을 핸들링하기 위한 의사소통 도구를 만들었습니다.

(initial prompt는 프로젝트 내용 일부라 비공개.. 별거 없습니다.)

최대한 initial prompt에 힘을 많이 줬고, 스스로 아티팩트를 6~7번 고치면서 한번에 괜찮은 대시보드 뽑아주는 것이 인상적이였습니다. 무튼 복잡한거 시켜놓고 볼 일 보고 오면 뭐 하나 괜찮게 알아서 만들어져있다는 뜻입니다. (클승우님 아티팩트 스터디 들었다면 더 좋은 디자인 뽑았을 수 있었을텐데 내심 아쉽네요)

대시보드 귀엽게 잘 나온 것을 확인할 수 있었습니다.

한국어로 된 작품 평가 도구의 스크린샷
Google Analytics 대시보드의 스크린샷

사례 2

아티팩트 뿐만 아니라 철학적 딜레마 물어봐도 됩니다. 아래 사례는 트롤리 딜레마에 극단적인 사례를 넣었습니다. 그냥 확률 분포로 생성한 단어라고 감정 빼고 보시길 바랍니다.

한국어 웹사이트 스크린샷

(중간 과정 너무 너무 너무 길어서 중략)

한국어 텍스트 스크린샷

o1 model에게도 똑같은 질문을 하겠습니다. 생각한 시간이 길군요

한국어 텍스트가 포함된 페이지의 스크린샷

사례 3

여전히 9.11과 9.9 문제는 gemini 말고 못 푸는데 o1 모델과 claude 프롬프트 개선한 버전 전부 못푸는 것을 확인하였습니다. (tokenizer issue는 여전한 것 같습니다.)

o1 case

한국어로 된 문자 메시지의 스크린샷

claude sonnet + LRM prompt case

텍스트의 숫자를 계산하는 방법의 예

결과 및 인사이트

LRM은 LLM과 구조적으로 완전 다른 모델입니다. o1 model이 나오기 전만 해도 무조건 추론 시간을 짧게 하면서 어느 정도 정확성은 아주 살짝 내려 놓고 메타였다고 생각하지만, o1 model이 나오면서 트렌드가 바뀌었습니다. 추론시간을 길게하면서 세상에 복잡한 문제를 해결하고 정확성을 올리는 메타가 왔습니다.

저희가 언어모델 쓰는 이유에서 4대 천왕은 planning, coding, research, marketing 이라고 생각하는데, o1 model과 같은 LRM은 확실히 코딩과 기획은 매우 좋은 것 같습니다.

솔직히 openai가 o1 model에 대한 시스템프롬프트를 꽁꽁 숨기고 있고, 데이터 또한 어떻게 만들어져있는지 private하게 감춰져 있어서 속으로는 갑갑함을 많이 느꼈습니다. (원리를 모르면 몸에서 못 받아들이는 성격이라 그렇습니다.)

하지만 위 프롬프트는 CoT를 하면서 강화학습 보상함수를 반영해서 접근하는 방식이 저에게 신선했고 세상에는 정말 고수가 많다는 것을 깨달았습니다. (갈길이 너무 머네요) 저는 그냥 단순하게 언어모델 서비스 위에 해당 메타프롬프트를 개선해서 접근하는 방식만으로도 적용했는데 꽤나 복잡한 문제를 잘 푸는 것이 인상적이였습니다. (원래 제대로 하려면 system prompt를 세팅할 수 있는 api 를 활용하는 playground, workbench 위에서 실험을 해야합니다.)

클클방에 해당 프롬프트 뿌려서 적용하신분들이 좋은 아티팩트나 아웃풋을 뽑았다고 하네요. 각자 잘 적용하시면 될 것 같습니다.

한국어 채팅 앱 스크린샷

글로는 자세히 적을 시간이 없어서 발표 때 자세한 context를 많이 드리겠습니다. (빠른 발표하고 Make 스터디를 진행해야합니다.)

(내용 요약한 스레드 글)

10
5개의 답글

👉 이 게시글도 읽어보세요