.NET Tools How-To's

맞춤형 AI 프롬프트 작성하기

Read this post in other languages:

AI는 소프트웨어 개발 산업을 들불처럼 휩쓸었습니다. 그래서 사람들은 일상 업무에서 AI를 가장 잘 활용하는 방법을 알려고 합니다. 이 게시물에서는 AI를 최대한 활용할 수 있도록 ReSharper 및 Rider에서 JetBrains AI Assistant와 함께 사용할 맞춤형 프롬프트를 작성하는 방법을 살펴보겠습니다.

프롬프트: 효과적인 AI 사용을 위한 방법

프롬프트는 AI로부터 예상되는 결과를 얻기 위해 쿼리와 명령의 형태를 지정하는 방법입니다. AI는 프롬프트에 자연어 처리(NLP)를 사용하여 인간이 대화하는 것처럼 대화하는 느낌을 줍니다. AI 도구는 사용자의 쿼리를 받고 이를 대형 언어 모델(LLM)로 보낸 다음, 사용자에게 결과를 반환합니다.

개발자라면 컴퓨터가 정확히 사용자의 지시대로 작동할 것이라는 것은 너무나 잘 알고 있을 겁니다. 그리고 사용자의 요구에 맞지 않게 코딩되었을 때 이를 버그라고 합니다. 컴퓨터는 정확히 지시한 대로만 작업을 수행하기 때문에 버그는 컴퓨터가 아니라 프로그래머 때문에 생깁니다. 마찬가지로, AI에게 프롬프트를 보낼 때도 구체적이어야 합니다. AI가 원하는 작업을 완료하도록 하려면 쿼리와 명령에 모든 관련 정보와 지시 사항을 정확히 나타내야 합니다. 훌륭한 프롬프트를 작성하는 데 가장 중요한 측면은 요구 사항, 지침 또는 쿼리가 모호함 없이 명확해야 한다는 것입니다.

AI 도구는 작업을 수행하기 위해 컨텍스트에 크게 의존하므로 명확성의 한 측면은 컨텍스트입니다. 컨텍스트는 현재 프로젝트, 즉 프로젝트에 포함된 모든 파일과 애셋입니다. 여기에 더해 AI 내의 채팅 기록과 문제 공간에 대한 일반적인 지식도 해당 컨텍스트의 일부로 포함됩니다. 여기에서 프롬프트 자체에 다른 상황별 정보를 포함할 수도 있습니다. 예를 들어, 이전 명령을 반복하거나 대화의 이전 부분에 있던 정보를 사용할 수 있습니다. 다른 프롬프트와 결부시켜 대화하는 톤으로 프롬프트를 구축하는 것을 ‘대화형 프롬프트 작성’이라고 합니다. 

여러분이 테니스와 같은 스포츠에 참여하고 경기에 출전하려 한다고 가정해 보겠습니다. 하지만 여러분은 테니스 라켓을 쥐어 본 적도 없습니다. 여러분이 세우고 있는 최종 목표에 따라 “전국 테니스 토너먼트에 어떻게 참가하지?”라고 물어볼 수 있습니다. 하지만 AI는 인간과 동일한 가정을 할 수 있습니다. 즉, 이러한 질문은 여러분이 이미 테니스를 치고 있고 이전에 지역 토너먼트에 참가한 적이 있음을 시사할 수 있죠. AI가 이렇게 가정한다면 반환되는 데이터는 경기에서 플레이하기 위한 기술을 배우는 방법에 관한 것이 아니라 단순히 토너먼트에 등록하는 방법에 관한 것일 수 있습니다. 이러한 형태의 정황적 컨텍스트는 더 나은 결과를 얻는 데 도움이 됩니다. 따라서 말을 바꿔 “나는 테니스 경기에 출전하고 싶어. 전에 테니스를 쳐본 적은 없어. 전국 대회에 출전할 수 있을 만큼 테니스를 잘 치는 방법을 배우려면 어떻게 해야 하지?”라고 한다면 더 관련성이 높은 배경 정보를 제공한 것이므로 더 나은 결과를 얻을 수 있습니다. 실제로 AI는 그런 점에서 인간과 매우 유사합니다. AI는 인간 상호작용을 기반으로 제공된 데이터에 근거하여 학습되기 때문입니다.

컨텍스트를 구축하는 좋은 방법은 AI에 이의를 제기하는 것입니다. “왜 그렇게 생각하지?” 또는 “너의 대답을 뒷받침하는 증거는 무엇이지?”라고 물어보고 어떤 결과를 내놓는지 지켜보세요. 항상 대답에 의심을 품는 것이 좋습니다. AI가 착각을 일으켜 엉뚱한 말을 만들어낼 수도 있기 때문입니다. 일부 LLM은 매우 장황한 대답을 돌려주므로 LLM에 짧게 대답하도록 요청하면 명확성을 높이는 데 도움이 될 수 있습니다. 또한 이전에 AI가 답한 방식에 기초하여 프롬프트를 보다 명확하게 수정할 수 있습니다. AI가 의도한 바를 제대로 이해하지 못할 때는 잘못된 점을 바로잡아주고 계속 진행할 수 있습니다.

기본적 프롬프트 작성하기

프롬프트를 작성할 준비가 되었으면 몇 가지 방식을 생각해볼 수 있습니다. ReSharper AI Assistant를 열고 채팅을 시작하세요. 또는, 다음과 같이 강조 표시된 코드 블록에서 AI Assistant를 호출할 수 있습니다.

이미지는 일부 강조 표시된 코드와 AI Assistant의 컨텍스트 메뉴가 있는 IDE를 보여줍니다. 메뉴에는 AI에 대한 다양한 옵션이 표시되며, 이를 통해 이 코드 블록을 채팅으로 보내기, 코드 블록 설명, 리팩터링 등의 작업을 수행할 수 있습니다.

Send to new chat(새 채팅으로 보내기)을 선택하면 채팅에 대한 컨텍스트가 생성되고 강조 표시된 코드가 AI Assistant 채팅으로 보내집니다. 프롬프트에 세부 정보를 추가하고 전송하세요. 응답을 받으면 대화형 프롬프트 작성을 사용하여 작업을 완료할 수 있습니다.

다음 예에서 AI Assistant는 값 문자열에서 유효한 JSON 및 C# 클래스를 모두 생성하라는 요청을 받았습니다. 보시다시피 응답은 매우 기본적입니다. JSON은 단순한 배열과 다르지 않으며, 클래스에는 해당 값을 갖는 List 객체가 포함되어 있습니다.

AI Assistant 채팅 창과 Alt+Enter AI 인텐션 액션으로 전송된 코드 블록 이미지. 또한 결과적인 JSON을 배열로 표시합니다.

아마도 모델이 작업 중인 실제 데이터 구조와 더 유사해지면 좋을 것입니다. 따라서 대화형 프롬프트 작성을 사용하면 아래와 같이 클래스를 Entity Framework에 더 쉽게 적용할 수 있도록 몇 가지 지침을 추가할 수 있습니다.

이미지는 EF Core를 사용하도록 코드를 변경하라는 AI 쿼리의 출력을 보여줍니다. Id 및 List of Temperature 타입이 포함된 TemperatureData 클래스가 표시됩니다. 또한 멤버 Id 및 Name과 코드에 대한 간략한 설명이 포함된 개별 Temperature 클래스도 표시됩니다.

AI 채팅에서 제안한 것처럼 이전 버전의 EF Core는 기본 타입의 컬렉션을 지원하지 않습니다. 하지만 EF Core 8은 지원합니다. 이는 사용자의 전문성과 프롬프트 작성이 적절히 맞물리는 좋은 예입니다. 적절한 검토 없이 결과를 그대로 받아들이면 누군가 이 코드를 작동하지 않는 오래된 코드 베이스에 적용하려고 할 수도 있습니다. 항상 AI 도구의 응답을 주의 깊게 검토하고 단순히 반환된 내용을 받아들이기보다는 전문적인 판단을 내려야 합니다.

모델과 더 유사해지도록 JSON을 변경하라는 프롬프트로 계속 진행할 수 있을 것입니다. 그러면 온도 데이터 배열의 온도 목록으로 응답이 돌아옵니다.

클래스와 일치하는 JSON 그림입니다.

여기서부터 정확히 원하는 결과를 얻을 때까지 결과에 따라 프롬프트를 계속 수정할 수 있습니다.

주요 참고 사항: AI Assistant 도구 창은 에디터에서 어떤 변경도 수행하지 않습니다. 코드를 생성하는 액션을 사용하면 해당 코드가 AI Assistant 창에 표시됩니다. 필요한 파일을 생성하고 적절한 경우에 출력을 복사해야 합니다.

맞춤형 프롬프트 저장하기

훌륭한 프롬프트를 만들었으니 나중에 다시 사용할 수 있도록 저장해두면 좋습니다. 이는 고급 쿼리에 대한 컨텍스트를 구축하는 데도 유용합니다. ReSharper와 Rider에는 모두 맞춤형 프롬프트를 저장할 수 있는 프롬프트 라이브러리가 있습니다. 프롬프트 라이브러리에 저장된 맞춤형 프롬프트는 다음과 같은 일반적인 작업을 위한 ‘AI 매크로’를 보관하는 좋은 방법입니다.

  • 온보딩 지침
  • 코드 설명
  • 데이터 또는 코드 이동 및 변환
  • 커밋 프롬프트 작성 또는 명료화
  • 기타 등등

IDE의 여러 액션에는 프롬프트를 라이브러리에 저장하는 옵션이 있습니다. 예를 들어, Alt+Enter를 통해 AI Assistant를 사용하면 다음과 같이 즉시 사용할 수 있는 몇 가지 프롬프트가 표시됩니다.

  • Explain this…(…를 설명해 줘)
  • Find issues in…(…에서 이슈를 찾아 줘)
  • Refactor this…(…를 리팩터링해 줘)
  • Is this model complete?(이 모델이 완전해?)

이러한 프롬프트를 사용자 지정하고 개선된 버전을 프롬프트 라이브러리에 추가하거나, 이미 만든 프롬프트에서 새로운 프롬프트를 만들 수 있습니다. 프롬프트를 생성하려면 $SELECTION 토큰을 사용하여, AI 도구가 작업해야 할 코드 블록을 LLM으로 전송되는 쿼리 부분의 자리표시자로 나타냅니다.

맞춤형 프롬프트를 작성하는 동안 AI를 사용하여 이를 더욱 향상시킬 수 있습니다. 이를 ‘프롬프트셉션’이라고 생각하세요. 팀에 유용한 프롬프트 세트가 있으면 수동으로 수행했을 일부 작업을 자동화할 수 있습니다(예: JSON 또는 일부 데이터베이스 스키마를 기반으로 클래스 생성, 테스트 생성 또는 덜어내고 싶은 모든 작업).

결론

AI는 이미 우리 곁에 와 있으며 개발자는 AI를 개인과 팀 모두의 일상적 프로세스에 통합해야 합니다. JetBrains AI Assistant를 사용하면 AI를 코드에 효과적이고 정확하게 사용할 수 있습니다. 여기서 두 가지를 기억하는 것이 중요합니다. 즉, 프롬프트와 결과를 신뢰할 수 있는지 정확하게 판단하는 것입니다. 사람이 읽을 수 없거나 이해할 수 없는 프롬프트를 작성하면 아마 AI도 이해할 수 없을 것입니다. 그러면 좋은 결과를 얻지 못할 가능성이 큽니다. 마찬가지로, AI가 틀린 정보를 돌려주는 경우도 있으니 이를 발견할 수 있어야 합니다. AI에서는 이것이 진정한 기술이므로 능력을 향상하세요. JetBrains AI Assistant의 도움을 받으면 무한한 가능성이 열립니다.

게시물 원문 작성자

Rachel Appel

Rachel Appel

image description

Discover more