News Feed

IDE 플러그인부터 로컬 LLM까지…R을 위한 생성형 AI 툴 가이드

컨텐츠 정보

  • 조회 638

본문

IDE 플러그인부터 외부 챗봇, LLM 로컬 실행에 이르기까지 다양한 새로운 툴이 R에 생성형 AI 혁명을 불러오고 있다.

코딩 도움을 받는 것은 LLM의 인기 있는 용도 중 하나다. 개발자에 따라서 이런 툴을 통합 개발 환경(integrated development environments, IDE) 내에서 사용하는 것을 선호하는 경우도 있고, 복사해서 외부 툴에 붙여넣는 정도로 만족하는 경우도 있다. R 프로그래머는 2가지 중 원하는 방법을 사용할 수 있다.

R 개발자를 위한 코딩 도우미 

gander

gander 패키지는 R 스크립트용 깃허브 코파일럿 라이트(GitHub Copilot Light)와 비슷하다. R스튜디오와 포지트론(Positron)용 IDE 추가 기능이며, 스크립트의 코드와 작업 환경의 변수를 인식할 수 있다. 코드를 선택한 상태에서 gander를 호출하면 선택한 코드를 모델의 결과로 바꿀지, 아니면 선택한 부분 앞이나 뒤에 코드를 추가할지를 묻는 메시지가 표시된다.

gander’s interface asks if you want to replace selected code or put its suggestions either before or after.

gander’s interface asks if you want to replace selected code or put its suggestions either before or after.

Sharon Machlis

gander의 인터페이스에서 선택한 코드를 바꿀지, 제안된 코드를 선택한 부분 앞이나 뒤에 넣을지를 묻는다.

ellmer에서 지원하는 모든 모델을 선택할 수 있다. 2025년 초 현재 패키지 제작자이자 포짓(Posit) 개발자인 사이먼 코치가 권장하는 모델은 R에 강점을 가진 앤트로픽의 클로드 소넷이다. options(.gander_chat = ellmer::chat_claude())를 사용해 기본값으로 설정할 수 있다.

상용 LLM 서비스 업체를 이용할 때 항상 그렇듯이 작업 환경에서 API 키를 사용할 수 있도록 해야 한다. LLM을 다루기 위한 현재의 많은 R 패키지와 마찬가지로 올라마(Ollama)가 제공하는 로컬 모델도 사용할 수 있다. 또한 ellmer를 챗봇으로 사용해 R에 대해 질문을 하거나 로컬로 LLM을 실행할 수도 있다.

gander 설치

gander는 R스튜디오와 포지트론의 R 스크립트에 모두 사용할 수 있다. CRAN에서 다운로드하거나 pak::pak("simonpcouch/gander")를 사용해 개발 버전을 설치해도 된다.

위 명령을 사용하면 R스튜디오 내에 추가 기능도 설치되는데, 여기서 호출을 위한 키보드 단축키를 선택할 수 있다.

포지트론의 경우 패키지 홈페이지에서 포지트론 명령 팔레트를 열고 keybindings.json 파일에 코드를 추가하는 방법을 볼 수 있다.

gander가 모델에 보낸 데이터(스크립트와 작업 세션의 배경 정보, 입력한 질문 등)를 보려면 추가 기능을 실행한 후 gander_peek()를 실행하면 된다.

일부 gander 설정은 R의 options() 함수를 사용해 변경할 수 있다. 기본 스타일 지침은 다음과 같다.

Use tidyverse style and, when relevant, tidyverse packages. For example, when asked to plot something, use ggplot2, or when asked to transform data, using dplyr and/or tidyr unless explicitly instructed otherwise.

이 기본값을 변경하려면 options(.gander_style = "Use base R when possible.")과 같은 코드를 사용하면 된다. R 콘솔에서 ?gander_options를 실행하면 맞춤설정 가능한 부분을 더 많이 볼 수 있다.

gander 패키지 웹사이트포짓 블로그에서 gander에 대해 더 자세히 알아볼 수 있다.

chatgpt

chatgpt는 “R에서 챗GPT에 접속하는 인터페이스”다. 인터랙티브 채팅 세션 열기, 선택한 코드에 주석 달기, 단위 테스트 생성, 코드 문서화하기, 선택한 코드 최적화하기와 같은 작업을 위한 10여 가지의 R스튜디오 추가 기능을 제공한다. 구체적인 프로그래밍 작업을 위한 코드를 선택하지 않으면 전체 활성 파일을 평가한다.

LLM을 사용하는 빈도가 높지 않거나 일상적인 프로그래밍 작업을 할 때 직접 프롬프트를 작성하고 싶지 않은 사람에게 좋은 선택이 될 수 있다. 각 작업마다 다른 추가 기능을 호출하고 싶지 않다면 터미널에서 comment_code(), complete_code()와 같은 함수를 사용하면 된다.

R 환경 변수, 예컨대 OPENAI_MODEL(기본값은 gpt-4o-mini), OPENAI_TEMPERATURE(기본값은 1이지만 필자라면 0을 선택할 듯), OPENAI_MAX_TOKENS(기본값 256) 등을 사용해 모델을 맞춤 설정할 수 있다.

참고로 chatgpt 패키지는 오픈AI 모델만 지원한다.

gptstudio

CRAN의 gptstudio 역시 R스튜디오 추가 기능이며, LLM에 액세스할 수 있다. 철자와 문법, 채팅, 코드 주석을 위한 옵션을 제공한다. 필자는 다른 툴에 비해 인터페이스가 다소 거추장스럽다고 느꼈지만 사용하는 사람에 따라 다르게 느낄 수 있는 부분이다.

gptstudio 패키지는 오픈AI와 함께 허깅페이스, 올라마, 앤트로픽, 퍼플렉시티, 구글, 애저, 코히어를 지원한다.

pkgprompt

pkgpromptpkg_prompt() 함수를 사용해 R 패키지의 문서(전체 또는 특정 주제만)를 단일 문자 문자열로 변환할 수 있다. 이렇게 하면 프롬프트에서 해당 문서를 손쉽게 LLM으로 보낼 수 있다. 예를 들어 다음과 같이 명령할 수 있다.

library(pkgprompt)pkg_docs 

이 명령은 dplyr 패키지의 acrosscoalesce 함수에 대한 문서를 단일 문자 문자열로 반환한다. 그러면 R 내에서, 또는 복사해서 외부 툴에 붙여넣는 방법으로 원하는 LLM 프롬프트에 문자열을 추가할 수 있다. 이 패키지 역시 사이먼 코치가 만들었다. 설치하려면 pak::pak("simonpcouch/pkgprompt")를 사용한다.

IDE 외부의 도움

사용 중인 코딩 환경을 벗어나 LLM에 질의해도 상관없다면 클로드와 같이 R에 대해 어느 정도 아는 범용 챗봇도 있고, 그 외에 R에 특화된 옵션도 몇 가지 있다.

샤이니 어시스턴트

샤이니 웹 앱을 빌드할 때는 포짓의 샤이니 어시스턴트(Shiny Assistant)가 상당히 유용하다. 무료 웹 기반 툴로, LLM을 사용해서 R 샤이니와 파이썬용 샤이니, 두 가지 모두의 샤이니 앱 빌드 방법에 대한 질문에 응답한다. 샤이니 팀은 툴 개선을 목적으로 사용자의 질의를 로깅하고 살펴볼 수 있다고 밝힌 만큼 민감한 작업에는 웹 버전을 사용하지 않는 것이 좋다. 깃허브에서 샤이니 어시스턴트 코드를 다운로드해서 수정해 직접 실행할 수도 있다.

R/R 스튜디오 튜터 + 코드 너드

R/R 스튜디오 튜터(R and R Studio Tutor)는 맞춤형 GPT로, 기본 챗GPT에 특정 R 정보를 추가한다. 호세 A 페르난데즈 캘보가 개발한 툴로 R과 R스튜디오에 대한 질문에 답하도록 만들어졌다.

크리스티안 치마라가 개발한 코드 너드(Code Nerd) 역시 R 질문에 답하는 맞춤형 GPT다.

R 튜터 + 채틸라이즈

R 튜터(R Tutor)는 R 분야에서 초기에 나온 생성형 AI 중 하나이며 여전히 온라인을 통해 이용할 수 있다. 데이터 집합을 업로드하고 질문하면 R 코드와 그래픽이 포함된 결과가 생성되는 모습을 볼 수 있다.

RTutor

Sharon Machlis / Foundry

R 튜터를 사용하면 데이터 집합에 대해 질문하고 응답으로 R 코드를 생성할 수 있다.

깃허브에서 R 튜터 코드가 제공되므로 로컬 버전을 직접 설치할 수 있다. 단, 라이선스에 따라 앱을 비영리적 또는 비상업적 용도나 상업적 테스트 용도로만 사용이 허용된다. 원래는 사우스다코타주립대학교 생물정보학 교수인 스티븐 게 박사의 개인 프로젝트였지만 지금은 게 박사가 창업한 오디투스(Orditus) LLC에서 개발과 유지를 담당한다.

R 튜터와 비슷한, 더 새로운 툴인 채틸라이즈(Chatilize)는 R 외에 파이썬도 생성할 수 있다.

로컬에 설치된 LLM과 상호작용

성능 측면에서는 클라우드 기반의 대용량 LLM이 다운로드해서 로컬로 실행할 수 있는 모델보다 여전히 뛰어나지만, 규모가 작은 오픈 웨이트(open-weight) 모델도 시간이 갈수록 향상되고 있다. 특정 작업에는 이미 충분히 좋을 수도 있는데, 이를 확인하려면 직접 시도해 볼 수밖에 없다. 로컬 모델을 사용할 경우 분석을 위해 다른 누군가의 서버로 데이터를 보낼 필요가 없으므로 개인정보 보호 측면에서 큰 이점이 있다. 또한 선호하는 모델이 사용 중단되지 않을까 걱정할 필요가 없다. 데스크톱 PC를 운영하는 데 드는 비용 외에는 아무런 비용도 없다. 범용 ellmer 패키지를 사용해 로컬 LLM을 실행할 수도 있지만 로컬 생성형 AI를 위해 설계된 R 패키지도 있다.

rollama와 ollamar

rollamaollamar 패키지 모두 인기 있는 올라마 프로젝트를 통해 R을 사용해서 로컬 모델을 실행할 수 있게 해준다는 공통점이 있지만 구문은 서로 다르다. 올라마용 패키지를 원한다면 두 가지 모두 사용해 보고 판단할 것을 권한다.

2가지 R 패키지 외에 올라마 애플리케이션 자체도 필요하다. 올라마를 다운로드해서 윈도우, 맥 또는 리눅스용으로 R 라이브러리가 아닌 일반적인 소프트웨어 패키지로 설치한다. 올라마가 실행 중이 아닌 경우 명령 프롬프트나 터미널(R 콘솔 아님)에서 ollama serve를 실행해 올라마 서버를 시작할 수 있다. (자주 사용하는 경우 시스템이 시작될 때 백그라운드에서 올라마가 실행되도록 설정하면 편리하다.)

library(rollama)rollama R 패키지를 로드한 후 ping_ollama() 함수로 테스트해서 올라마 서버가 실행 중임을 R이 인지하는지 확인할 수 있다.

아직 올라마를 통해 설치된 로컬 LLM이 없는 경우 R에서 pull_model("the_model_name) 또는 터미널에서 ollama pull the_model_name을 사용해 설치할 수 있다. 올라마에 사용 가능한 모델은 올라마 웹사이트에서 확인할 수 있다.

예를 들어 3B 매개변수 라마 3.2 모델을 다운로드하려면 R에서 pull_model("llama3.2:3b")를 실행하면 된다.

모델을 세션의 기본값으로 설정하려면 options(rollama_model = "the_model_name") 구문을 사용한다. 예를 들어 options(rollama_model = "llama3.2:3b")와 같이 하면 된다.

단일 질문의 경우 query() 함수를 사용한다.

query("How do you rotate text on the x-axis of a ggplot2 graph?")

이전의 질문과 응답이 메모리에 유지되는 채팅을 원할 경우 chat()을 사용한다. 두 함수의 선택적 인수에는 screen(응답을 화면에 출력할지 여부)과 model_params(temperature와 같은 명명된 매개변수 목록)가 포함된다. query()에는 형식 인수도 포함되며, 반환 값은 응답 객체, 텍스트, 목록, data.frame, httr2_response 또는 httr2_request가 될 수 있다.

쿼리와 채팅에는 업로드된 이미지도 images 인수를 사용해 포함할 수 있다.

ollamar 패키지도 시작하는 방법은 비슷하다. test_connection() 함수로 R이 실행 중인 올라마 서버에 연결할 수 있는지 확인하고, pull("the_model_name")을 사용해서 (pull("gemma3:4b") 또는 pull("gemma3:12b")과 같이 모델을 다운로드한다.

generate() 함수는 LLM에서 하나의 완성된 응답을 생성해 httr2_response를 반환하며, 반환된 값은 resp_process() 함수에서 처리할 수 있다.

library(ollamar)resp 

또는 resp )와 같은 구문을 사용해서 직접 텍스트 응답을 요청할 수도 있다. stream = TRUE로 텍스트를 스트리밍하는 옵션이 있다.

resp 

ollamar에는 텍스트 임베딩 생성, 툴 정의와 호출, 포맷된 JSON 출력 요청을 포함한 다른 기능도 있다. 자세한 내용은 깃허브에서 볼 수 있다.

rollama는 요하네스 B. 그루버, ollamar는 하우스 린이 만들었다.

직접 만들기

올라마를 위한 기본적인 챗봇 인터페이스만 필요하다면 쉬운 방법은 ellmer, shiny, shinychat 패키지를 결합해서 간단한 샤이니 앱을 만드는 것이다. 위 패키지를 모두 설치했고 올라마도 설치되어 실행 중이라면 다음과 같은 기본적인 스크립트를 실행할 수 있다.

library(shiny)library(shinychat)ui 

실행하면 모델이 하드코딩된 매우 기초적인 채팅 인터페이스가 열린다. 모델을 선택하지 않으면 앱이 실행되지 않는다. 오류 메시지와 함께 모델 지정을 위한 지침, 그리고 이미 로컬에 설치한 모델이 표시된다.

필자는 조금 더 보강한 버전을 만들었는데, 이 버전에는 드롭다운 모델 선택과 채팅을 다운로드하기 위한 버튼이 포함돼 있다. 해당 코드는 필자의 깃허브 지스트에서 확인할 수 있다.

결론

R에서 LLM을 사용하기 위한 옵션은 점점 더 많아지고 있으며, 이를 통해 스크립트와 앱에 기능을 추가하고 코드와 관련된 도움을 받고 올라마를 사용해 로컬로 LLM을 실행할 수 있다. 자신의 사용례에 부합하는 여러 옵션을 사용해 보고, 필요와 선호도에 가장 잘 맞는 옵션을 찾으면 만족스러운 결과를 얻을 수 있을 것이다.
dl-itworldkorea@foundryco.com

관련자료

댓글 0
등록된 댓글이 없습니다.
Member Rank