728x90
반응형

Qt AI Assistant 0.8.8 실험 버전 출시

이제 크로스 플랫폼 소프트웨어 개발을 돕기 위해 Qt AI Assistant를 출시했습니다. Qt AI AssistantQt Creator에서 실행되고 여러 LLM(Large Language Models)과 함께 작동하는 AI 기반 개발 어시스턴트입니다. 이 블로그 게시물은 제작 과정의 작은 "비하인드 스토리"를 보여줍니다.

Qt AI Assistant가 있는 이유 Why The Qt AI Assistant Is What It Is

Qt AI Assistant의 범위를 정하기 시작했을 때 우리는 개발자에게 가장 중요하다고 믿는 것, 즉 창의성을 발휘하고 훌륭한 코드를 작성하는 것에 집중하고 싶었습니다.

개발자들과의 많은 대화에서 Gen AI가 개발자들을 도와야 할 세 가지 영역이 반복적으로 거론되었습니다. 전문가의 조언 받기, 단위 테스트 사례 만들기, 코드 문서 작성입니다. 게다가, 코딩 어시스턴트가 최신 QMLQt Quick 기능에 대한 좋은 예를 보여줘야 한다는 말을 자주 듣습니다. 그래서 우리는 코딩 어시스턴트를 통해 "지루한" 반복적인 개발자 작업을 자동화하고 최신 Qt 기술 통찰력을 제공하는 동시에 일반적인 C++Python 프로그래밍 기능을 갖춘 코딩 어시스턴트를 제공하는 것을 우리의 사명으로 삼았습니다. 단위 테스트 사례 및 코드 문서와 같은 보완적인 작업을 자동화함으로써, 우리는 개발자들이 처음에 직업을 선택하게 만든 것, 즉 프로그래밍에 시간을 좀 더 할애할 수 있습니다.

Qt AI Assistant의 소프트웨어 아키텍처에 영향을 준 또 다른 이해 관계자는 Qt로 구축된 제품의 제품 관리자였습니다. 제품의 경쟁 우위를 보호할 수 있는 것은 그들에게 매우 중요합니다. 제품 관리자는 프롬프트 또는 LLM의 출력 컨텍스트에서 코드가 유출되는 것을 우려합니다. 대규모 언어 모델의 프라이빗 클라우드 배포를 실행하여 제어를 유지하는 것은 회사를 우발적 또는 의도적인 지적 재산 유출로부터 보호하는 데 필수적인 것으로 간주되었습니다. 프라이빗 호스팅된 대규모 언어 모델에 연결하는 옵션을 제공함으로써 고객에게 데이터를 제어할 수 있는 권한을 부여합니다. 사실, 우리는 자체 호스팅 클라우드 및 로컬 LLM을 허용하는 몇 안 되는 코딩 어시스턴트 중 하나입니다

AI AssistantMVP 구현

우리는 두 가지를 개발하여 Qt AI Assistant를 시작했습니다. 첫째, 미세 조정 없이도 좋은 QML 코드를 만드는 LLM에 대한 엔드투엔드 파이프라인을 구축했습니다. 둘째, GitHub Copilot 플러그인이 Qt Creator IDE에서 이미 제공하는 기본 코드 완성 기능을 구현했습니다.

엔드투엔드 파이프라인은 Qt Creator 15 위에 구축한 Qt Creator 플러그인, 이미 Qt 소프트웨어 스택의 일부인 오픈소스 언어 서버, 그리고 AnthropicClaude 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 모델을 사용하는 것은 AnthropicAPI에 인증 토큰을 입력하는 것보다 더 복잡합니다. 그래도 AI 엔지니어는 Microsoft Azure 클라우드에서 빠르게 실행했습니다.

스마트 명령 최적화

또 다른 AI 엔지니어는 Qt Test 구문에서 단위 테스트 케이스를 만드는 것을 포함하여 다양한 스마트 명령에 대한 프롬프트를 최적화했습니다. 여기에는 LLM 응답을 벤치마킹하고 테스트 케이스를 위해 Qt AI Assistant Server에서 LLM으로 파이프라인을 개발하기 위한 Qt Test 케이스 데이터 세트를 설정해야 했습니다. 우리는 Claude 3.5 Sonnet에 프롬프트 엔지니어링에 집중했는데, 미세 조정 없이도 가장 좋은 성능을 보였기 때문입니다. 우리는 나중에 이 사용 사례에 대해 OpenAIs GPT-4oMeta의 Llama 3.3 70B를 최적화해야 합니다.

Qt AI Assistant를 사용해 보는 방법

Qt AI Assistant를 사용해 보는 것은 간단합니다.

  • Qt CreatorQt 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의 다음 단계는 무엇인가

분명 아직 해야 할 일이 많고 Qt AI Assistant는 빠르게 발전하고 있습니다.

현재 실험적으로 표시된 다양한 LLM의 기능을 최적화하기 위한 많은 작업이 남아 있습니다. GPT-4o와 같은 LLM의 프롬프트를 최적화해야 합니다. 우리는 Claude 3.5 Sonnet의 프롬프트를 최적화하는 데 가장 앞서 있으며, 항상 최상의 AI 지원 경험을 위해 Sonnet을 사용해 볼 것을 제안합니다.

가장 큰 의문 중 하나는 내장 채팅에 대한 요구 사항입니다. 여러분 중 많은 분들이 내장 채팅이 있으면 좋은 기능이라고 말씀하실 것이고 저도 동의합니다. 하지만 UI 개발과 백엔드 개발(대화의 메모리 관리) 측면에서 모두 주요 개발 노력입니다. DiffView와 같은 다른 기능이나 현재 파일 이외의 다른 파일에서 더 많은 컨텍스트를 수집하는 것과는 상쇄됩니다. 일반적인 목적의 콘텐츠 생성을 위한 훌륭한 채팅 솔루션이 있으며 IDE 내에서 실행한다는 편의성 외에는 추가할 것이 많지 않습니다.

귀하의 피드백을 원합니다

하지만 무엇보다도, 우리는 여러분이 놓치고 있는 것이나 우리가 다르게 해야 할 것이 무엇인지에 대한 여러분의 피드백을 듣고 싶습니다. MVP를 실험적 제품으로 출시하면 여러분의 의견을 고려하고 미래 백로그를 설정하는 동안 빠르게 진화할 수 있습니다. 아래의 댓글이나 Qt 담당자를 통해 Qt AI Assistant에서 원하는 것이 무엇인지 알려주세요.

제품에 대해 더 자세히 알고 싶으신가요?

제품 페이지를 확인하세요.

https://www.qt.io/product/ai-assistant?hsLang=en

728x90
반응형

+ Recent posts