AI테크

노코딩 AI가 생성한 프로그램…AI가 검사한다

AI타임스 2022. 4. 19. 11:18

AI가 작성한 코드를 자동으로 검사하는 도구 개발
코드의 컴파일 여부,오류 해결, 테스트 등 통합 지원
다중 모드 입력으로 파이썬 판다스 API용 코드 합성
사용자 피드백으로 출력 정확도를 80% 이상 개선

 

직소는 대규모 언어모델이 생성한 코드의 컴파일 여부를 확인하고 컴파일러의 오류 메시지를 사용해 오류를 복구하거나 코드가 의도한 결과물을 생성하는지 테스트하는 통합 지원 도구다.(사진=마이크로소프트)

마이크로소프트(Microsoft)가 최근 노코드(no-code) 기반의 인공지능(AI)이 작성한 프로그램 코드를 AI를 이용해 검사하는 도구인 ‘직소(jigsaw)’를 개발했다고 발표했다. 직소는 작성된 코드의 컴파일 여부를 확인하고 컴파일러의 오류 메시지를 사용해 오류를 복구하거나 코드가 의도한 결과물을 생성하는지 테스트하는 통합 지원 도구다.

 

GPT-3, 코덱스(Codex) 등과 같은 사전 훈련된 대규모 언어 모델은 자연어를 이용해 프로그램을 설명해 코드를 생성할 수 있다. 이러한 모델은 전문지식이 없는 비전문가가  개발에 참여할 수 있게 하고 전문개발자도 코딩 작업을 줄여 생산성을 향상시킨다. 그러나 모델은 데이터를 잘못 학습하거나 프로그램의 의미를 잘못 이해해서 의도와 다른 코드를 생성할 수 있으므로 결과 코드의 품질을 보장할 수 없다.

 

마이크로소프트는 국제 소프트웨어 공학 회의(ICSE 2022)에 게재된 논문에서 이러한 언어 모델의 코드 품질 문제를 해결하고 성능을 향상시킬 수 있는 새로운 도구인 직소를 소개했다. 직소는 프로그램의 구문과 의미를 이해하는 후처리(post-processing) 기술을 제공한 다음 사용자 피드백을 활용해 성능을 개선한다. 

 

입력은 GPT-3, Codex 등을 포함한 대규모 언어 모델에 제공되기 전에 사전 처리된다. 사후 처리 출력은 필요한 경우 확인 및 편집을 위해 최종 사용자에게 반환된다. 학습 내용은 사전 프로세스 및 사후 프로세스 메커니즘에 피드백되어 더 개선된다.(사진=마이크로소프트)

코덱스와 같은 언어 모델을 사용하면 개발자가 코드 조각에 대해 자연어로 설명을 사용할 수 있으며 모델은 파이썬 또는 자바스크립트(JavaScript)와 같은 프로그래밍 언어로 의도한 코드를 합성할 수 있다. 그러나 합성된 코드가 올바르지 않거나 컴파일 또는 실행에 실패할 수 있으므로 개발자는 사용하기 전에 코드를 확인해야 한다.

 

직소는 프로그램 코드 합성을 위해 코덱스와 같은 대규모 언어 모델을 사용하는 개발자의 생산성을 높이기 위해 이러한 검사 전체 또는 일부를 자동화하는 것을 목표로 한다. 직소는 다중 모드(multi-modal) 입력을 사용해 파이썬 판다스(Python Pandas) API용 코드를 합성하도록 설계됐다. 판다스는 데이터 프레임 또는 행과 열이 있는 테이블을 조작하기 위한 수백 가지 기능이 있는 데이터 과학에서 널리 사용되는 API다.

 

직소를 사용해 사용자는 의도한 코드에 대한 자연어 설명, 입력 데이터 프레임 및 해당 출력 데이터 프레임을 제공한 다음 직소가 의도한 코드를 합성하도록 한다. 예를 들어 개발자가 아래 표의 ‘country’ 열에서 ‘Name:’ 접두어를 제거하려고 한다고 가정할 때, 사용자가 자연어 쿼리를 입출력 테이블(또는 데이터 프레임)과 함께 사용해 %jigsaw -q "Remove substring ‘Name:’ from column ‘country’ of df" 를 제기 하면, 직소는 판다스를 사용해 df['country'] = df['country'].str.replace('Name: ', '') 코드를 생성한다. 

 

입력 데이터 프레임 및 출력 데이터 프레임. Jigsaw는 ‘country’라는 레이블이 붙은 열에서 불필요한 ‘Name: ‘이라는 단어를 제거한다.(사진=마이크로소프트)

직소는 자연어 및 기타 매개변수를 사전 처리(pre-processing)해 코덱스 및 GPT-3에 공급한 다음 사후 처리  출력 결과를 확인 및 편집하기 위해 사용자에게 반환한다. 사용자는 출력 결과에 오류가 있을 경우 개선을 위해 사전 및 사후 프로세스에 피드백한다. 또한 코드가 실패하면 직소는 사후 처리 단계에서 복구 프로세스를 반복한다. 

 

마이크로소프트는 직소를 통해 출력 정확도를 60% 이상으로 개선했으며 사용자 피드백을 도입하면 정확도를 80% 이상으로 끌어올릴 수 있다고 밝혔다. 또한 마이크로소프트는 몇 가지 문제를 극복해야 한다고 말한다. 예를 들어 합성 코드의 입출력(I/O) 품질만 테스트했지만 실제로 코드 품질에는 코드 성능이 좋은지, 보안 결함이 없는지, 라이선스 속성을 존중하는지 여부가 포함돼야 한다.

 

AI타임스 박찬 위원 cpark@aitimes.com

 

Copyright © '인공지능 전문미디어' AI타임스 (http://www.aitimes.com/)
무단전재 및 재배포 금지

 

 

노코딩 AI가 생성한 프로그램…AI가 검사한다 - AI타임스

마이크로소프트(Microsoft)가 최근 노코드(no-code) 기반의 인공지능(AI)이 작성한 프로그램 코드를 AI를 이용해 검사하는 도구인 ‘직소(jigsaw)’를 개발했다고 발표했다. 직소는 작성된 코드의 컴파

www.aitimes.com