- 2025년 1월 23일 Peter Schneider 작성
- 원문: https://www.qt.io/blog/more-time-for-coding-with-the-qt-ai-assistant
- 번역: https://j2doll.tistory.com/1135
이제 크로스 플랫폼 소프트웨어 개발을 돕기 위해 Qt AI Assistant
를 출시했습니다. Qt AI Assistant
는 Qt Creator
에서 실행되고 여러 LLM
(Large Language Models
)과 함께 작동하는 AI 기반 개발 어시스턴트입니다. 이 블로그 게시물은 제작 과정의 작은 "비하인드 스토리"를 보여줍니다.
Qt AI Assistant
의 범위를 정하기 시작했을 때 우리는 개발자에게 가장 중요하다고 믿는 것, 즉 창의성을 발휘하고 훌륭한 코드를 작성하는 것에 집중하고 싶었습니다.
개발자들과의 많은 대화에서 Gen AI
가 개발자들을 도와야 할 세 가지 영역이 반복적으로 거론되었습니다. 전문가의 조언 받기, 단위 테스트 사례 만들기, 코드 문서 작성입니다. 게다가, 코딩 어시스턴트가 최신 QML
및 Qt Quick
기능에 대한 좋은 예를 보여줘야 한다는 말을 자주 듣습니다. 그래서 우리는 코딩 어시스턴트를 통해 "지루한" 반복적인 개발자 작업을 자동화하고 최신 Qt
기술 통찰력을 제공하는 동시에 일반적인 C++
및 Python
프로그래밍 기능을 갖춘 코딩 어시스턴트를 제공하는 것을 우리의 사명으로 삼았습니다. 단위 테스트 사례 및 코드 문서와 같은 보완적인 작업을 자동화함으로써, 우리는 개발자들이 처음에 직업을 선택하게 만든 것, 즉 프로그래밍에 시간을 좀 더 할애할 수 있습니다.
Qt AI Assistant
의 소프트웨어 아키텍처에 영향을 준 또 다른 이해 관계자는 Qt
로 구축된 제품의 제품 관리자였습니다. 제품의 경쟁 우위를 보호할 수 있는 것은 그들에게 매우 중요합니다. 제품 관리자는 프롬프트 또는 LLM
의 출력 컨텍스트에서 코드가 유출되는 것을 우려합니다. 대규모 언어 모델의 프라이빗 클라우드 배포를 실행하여 제어를 유지하는 것은 회사를 우발적 또는 의도적인 지적 재산 유출로부터 보호하는 데 필수적인 것으로 간주되었습니다. 프라이빗 호스팅된 대규모 언어 모델에 연결하는 옵션을 제공함으로써 고객에게 데이터를 제어할 수 있는 권한을 부여합니다. 사실, 우리는 자체 호스팅 클라우드 및 로컬 LLM
을 허용하는 몇 안 되는 코딩 어시스턴트 중 하나입니다
우리는 두 가지를 개발하여 Qt AI Assistant
를 시작했습니다. 첫째, 미세 조정 없이도 좋은 QML
코드를 만드는 LLM
에 대한 엔드투엔드 파이프라인을 구축했습니다. 둘째, GitHub Copilot
플러그인이 Qt Creator IDE
에서 이미 제공하는 기본 코드 완성 기능을 구현했습니다.
엔드투엔드 파이프라인은 Qt Creator 15
위에 구축한 Qt Creator 플러그인, 이미 Qt 소프트웨어 스택의 일부인 오픈소스 언어 서버, 그리고 Anthropic
의 Claude 3.5 Sonnet API
로 구성됩니다. 우리는 "언어 서버"를 "AI 어시스턴트 서버"라고 부르기로 했습니다. 왜냐하면 LLM API
, 프롬프트 라우팅, 프롬프트 엔지니어링, 컨텍스트 필터링, 그리고 나중에는 다중 에이전트 기능을 포함하여 표준 언어 서버보다 훨씬 더 많은 것을 포함하고 있기 때문입니다.
코드 완성 작업의 경우, 키보드 단축키에 의해 트리거되는 제안을 구현하는 것으로 시작했습니다. 온라인 포럼에서 일부 개발자가 자동 코드 완성이 평소 워크플로를 방해한다고 생각한다는 잡음이 점점 더 커지고 있었기 때문에 이 시작점을 선택했습니다. GitHub Copilot
플러그인의 코드 완성 탭 바에 대한 UI 요소를 이미 구현했기 때문에 Qt AI Assistant
에 대한 요소를 추가하는 것은 간단했습니다.
그럼에도 불구하고 자동 코드 제안이 있는 코딩 어시스턴트는 없습니다. 따라서 자동 코드 완성이 다음으로 개발된 기능이었습니다. 자동 코드 완성은 많은 토큰을 빠르게 소모하고 일부 개발자의 워크플로를 방해할 수 있으므로 어시스턴트 설정을 추가하는 것이 다음 일정이었습니다. 처음에는 사용자가 모든 프로젝트에서 어시스턴트와 자동 코드 완성을 켜고 끌 수 있도록 간단하게 유지했습니다.
다음은 인라인 프롬프트 윈도우 개발이었습니다. 이를 위해 UI
디자인 팀은 Figma
에서 일부 사용성 테스트를 위한 기능적 모델을 만들어야 했습니다. 디자인이 정해지자 전문가의 조언을 위한 기본적인 인간 언어 프롬프트 인터페이스를 구현하기 시작했고 스마트 명령을 위한 드롭다운 메뉴를 준비했습니다.
다가올 스마트 명령의 경우, 우리는 AI Assistant Server
에서 스마트 명령의 유형과 프로그래밍 언어에 따라 프롬프트를 다른 LLM
으로 라우팅하는 로직을 구현하기 시작했습니다. 궁극적으로 개발자가 목적에 따라 선호하는 LLM
을 선택할 수 있도록 하려고 하므로 QML
의 코드 완성, 다른 프로그래밍 언어의 코드 완성, QML
과 관련된 프롬프트, 다른 언어와 관련된 프롬프트를 위한 다른 LLM
을 허용합니다.
이 단계에서 R&D
팀이 성장함에 따라, 우리는 프롬프트, 즉 전문가 조언을 위해 Llama 3.1 70B
에 대한 연결을 구현하기 시작했습니다. Llama
"무리(herd
)" 모델은 현재 QML
프로그래밍을 위한 가장 성능이 좋은 "로열티 프리(royalty-free
)" 언어 모델입니다(다른 블로그 게시물에서 QML 코딩 품질 벤치마킹에 대해 더 자세히 설명하겠습니다). Llama 3.1
모델을 사용하는 것은 Anthropic
의 API
에 인증 토큰을 입력하는 것보다 더 복잡합니다. 그래도 AI 엔지니어는 Microsoft Azure
클라우드에서 빠르게 실행했습니다.
또 다른 AI 엔지니어는 Qt Test
구문에서 단위 테스트 케이스를 만드는 것을 포함하여 다양한 스마트 명령에 대한 프롬프트를 최적화했습니다. 여기에는 LLM
응답을 벤치마킹하고 테스트 케이스를 위해 Qt AI Assistant Server
에서 LLM
으로 파이프라인을 개발하기 위한 Qt Test
케이스 데이터 세트를 설정해야 했습니다. 우리는 Claude 3.5 Sonnet
에 프롬프트 엔지니어링에 집중했는데, 미세 조정 없이도 가장 좋은 성능을 보였기 때문입니다. 우리는 나중에 이 사용 사례에 대해 OpenAIs GPT-4o
와 Meta의 Llama 3.3 70B
를 최적화해야 합니다.
Qt AI Assistant를 사용해 보는 것은 간단합니다.
Qt Creator
가Qt AI Assistant
를 사용할 수 있는지 확인하세요. 버전을 확인하세요. 최소15.0.1
이상이어야 합니다(이 버전이 없으면Qt AI Assistant
가 작동하지 않습니다).Qt Creator
의 확장 설정에서 "외부 저장소 사용(Use external repository
)"이 체크되어 있는지 확인하세요.Qt Creator
에서 확장 기능 보기(Extensions view
)로 이동하여AI Assistant
를 선택하세요
Qt AI Assistant
확장 프로그램을 설치하고 활성화하세요- 인터넷 접속 및
AI Assistant Server
설치에 동의합니다. - 설치 범위(개별 사용자/모든 사용자)를 선택하고 시작 시 항상 로딩을 활성화합니다.
- 최소한 하나의 대규모 언어 모델에 연결하세요.
분명 아직 해야 할 일이 많고 Qt AI Assistant
는 빠르게 발전하고 있습니다.
현재 실험적으로 표시된 다양한 LLM
의 기능을 최적화하기 위한 많은 작업이 남아 있습니다. GPT-4o
와 같은 LLM
의 프롬프트를 최적화해야 합니다. 우리는 Claude 3.5 Sonnet
의 프롬프트를 최적화하는 데 가장 앞서 있으며, 항상 최상의 AI
지원 경험을 위해 Sonnet
을 사용해 볼 것을 제안합니다.
가장 큰 의문 중 하나는 내장 채팅에 대한 요구 사항입니다. 여러분 중 많은 분들이 내장 채팅이 있으면 좋은 기능이라고 말씀하실 것이고 저도 동의합니다. 하지만 UI
개발과 백엔드 개발(대화의 메모리 관리) 측면에서 모두 주요 개발 노력입니다. DiffView
와 같은 다른 기능이나 현재 파일 이외의 다른 파일에서 더 많은 컨텍스트를 수집하는 것과는 상쇄됩니다. 일반적인 목적의 콘텐츠 생성을 위한 훌륭한 채팅 솔루션이 있으며 IDE
내에서 실행한다는 편의성 외에는 추가할 것이 많지 않습니다.
하지만 무엇보다도, 우리는 여러분이 놓치고 있는 것이나 우리가 다르게 해야 할 것이 무엇인지에 대한 여러분의 피드백을 듣고 싶습니다. MVP
를 실험적 제품으로 출시하면 여러분의 의견을 고려하고 미래 백로그를 설정하는 동안 빠르게 진화할 수 있습니다. 아래의 댓글이나 Qt 담당자를 통해 Qt AI Assistant
에서 원하는 것이 무엇인지 알려주세요.
제품 페이지를 확인하세요.
'Qt' 카테고리의 다른 글
QML 코드를 프롬프트하는 데 가장 적합한 LLM은 무엇입니까? (DeepSeek v3 기능 포함) (0) | 2025.02.06 |
---|---|
DynamicQVariantArray 클래스 : QVariant 2차원 동적 배열 (0) | 2025.01.31 |
DynamicQStringArray : QString 동적 2차원 배열 클래스 (0) | 2025.01.22 |
qml_to_qul : QML에서 Qul로 변환 (0) | 2025.01.16 |
Qt Quick Ultralite와 Qt Quick의 차이점 (0) | 2025.01.15 |