stanek-michal/local_AI_code_assistant_tutorial
요약
Apple Silicon 환경에서 LMStudio와 Codestral 모델을 사용하여 로컬 AI 코드 어시스턴트를 구축하는 튜토리얼입니다. VSCode의 Continue.dev 플러그인을 연동하여 보안이 유지되는 완전 로컬 개발 환경을 구성하는 방법을 다룹니다.
핵심 포인트
- Apple Silicon 기반 로컬 LLM 구동을 위한 LMStudio 설정법
- Codestral-22B 모델 최적화 및 RAM 관리 가이드
- VSCode의 Continue.dev 플러그인을 활용한 로컬 서버 연동
- 비공개 코드를 위한 완전 로컬 AI 개발 환경 구축
요구 사항: 32GB 이상의 RAM을 갖춘 Apple Silicon
MacOS용 LMStudio 다운로드 : -
LMStudio에서 검색: bartowski/Codestral-22B-v0.1-GGUF
Q6_K로 끝나는 모델을 다운로드하세요
우측 참고: Q6_K 모델은 로드 시 18.40GB의 RAM을 사용합니다. 여유 RAM이 더 있다면, 최소 23.30GB의 RAM이 필요하며 품질은 약간 더 높고 속도는 더 느린 Q8_0 모델을 시도해 볼 수 있습니다. 더 큰 모델을 사용하려면 sysctl을 통해 유선 메모리 제한(wired memory limit)을 해제해야 합니다: sudo sysctl iogpu.wired_limit_mb=50000
AI Chat 창에서 Codestral 모델을 로드합니다. -
**우측에서 다음 설정이 되어 있는지 확인하세요:**Preset: Mistral Instruct
System Prompt(시스템 프롬프트) 비우기
**Advanced Configuration(고급 설정) 확장:**Context Length(컨텍스트 길이): 8192
Temperature(온도): 0.8
Tokens to generate(생성할 토큰 수): -1
GPU Offload(GPU 오프로드): Max
GPU Backend(GPU 백엔드): Metal llama.cpp
**Advanced Configuration > Model Initialization(모델 초기화) 항목 아래:**Flash Attention(플래시 어텐션): on
AI 채팅 활용 예시:
- 코드 및 프로그래밍 개념에 대해 채팅하기
- 터미널 명령어, Docker 명령어, K8s 등을 생성하도록 요청하기
- JSON과 같은 포맷 수정, 마크다운 추가 등을 요청하기
- 외부 코드를 설명하도록 요청하기
- 코드를 특정 방식으로 재작업하거나, 주석 작성, PR(Pull Request) 설명, 단위 테스트(unit tests) 작성을 요청하기
- 리뷰를 위해 PR diff를 붙여넣기 (완전 로컬에서 실행되므로 비공개 코드로 사용 가능)
- GitHub issue 토론(또는 모든 긴 텍스트)을 붙여넣고 요약을 요청하기
- 특정 종류의 출력을 강제하기 위해 시스템 프롬프트(우측 탭) 수정하기 (예: "당신은 토론을 요약하는 역할입니다")
더 진행하기 전에 LMStudio 채팅에서 AI를 직접 테스트하십시오. 출력 창에 [control_29]와 같은 오류가 나타나면 LLM이 RAM에 들어가지 않았음을 의미할 수 있습니다. 다른 앱을 종료하거나 Q4와 같은 더 작은 Q# 모델을 사용해야 할 수도 있습니다. iQ# 버전은 무시하십시오.
다음으로 LMStudio에 연결되는 VSCode 플러그인을 구성할 것입니다. 선호에 따라 VSCode는 VM(가상 머신)에 있고 LMStudio는 호스트에 있을 수 있습니다. VSCode는 호스트에서 실행 중인 LMStudio 서버에 연결할 수 있어야 합니다.
먼저 1번 항목과 같이 LMStudio를 설정하십시오. -
LMStudio에서 API 서버 활성화:- 왼쪽의 화살표 탭 (Local Server)을 선택합니다.
-
"Start Server"를 클릭합니다.
-
서버 창의 설정이 위 5번 항목과 유사한지 확인합니다.
VSCode용 Continue.dev 플러그인 설치 (JetBrains에서도 사용 가능):-
View
-> Extensions
로 이동합니다. - "Continue"를 검색합니다.
-
플러그인을 설치합니다.
Continue.dev 설정:-
무엇을 하기 전에, Continue 플러그인 설정으로 이동하여 메인 페이지에서 Telemetry (원격 측정)를 비활성화하십시오.
-
VSCode의 Continue 설정 프롬프트는 무시하십시오. 대신 설정 파일을 직접 편집할 것입니다.
-
설정 파일을 엽니다:
vim ~/.continue/config.json -
다음 내용으로 교체합니다:
{ "models": [ { "title": "LM Studio", "provider": "lmstudio", "model": "codestral", "apiBase": "http://192.168.0.137:1234/v1/" }, { "title": "Llama 3", "provider": "ollama", "model": "llama3" }, { "title": "Ollama", "provider": "ollama", "model": "AUTODETECT" } ], "customCommands": [ { "name": "test", "prompt": "{{{ input }}}\n\nWrite a comprehensive set of unit tests for the selected code. It should setup, run tests that check for correctness including important edge cases, and teardown. Ensure that the tests are complete and sophisticated. Give the tests just as chat output, don't edit any file.", "description": "Write unit tests for highlighted code" } ], "tabAutocompleteModel": { "title": "codestral", "provider": "lmstudio", "model": "codestral", "apiBase": "http://192.168.0.137:1234/v1/" }, "allowAnonymousTelemetry": false, "embeddingsProvider": { "provider": "transformers.js" } }
참고:
두 apiBase URL을 모두 LMStudio가 실행 중인 MacOS 호스트의 IP로 교체하십시오 (ifconfig -a | grep inet 명령어로 확인 가능).
VSCode를 재시작하십시오. -
연결 테스트:- VSCode의 왼쪽에서 Continue 탭을 열고 'hello'를 입력하십시오. 이 창을 완전히 로컬에서 실행되는 일반적인 챗봇 AI처럼 사용할 수 있습니다.
-
어떤 코드든 선택하여 채팅에 추가(Ctrl+L)하거나 편집(Ctrl+I)할 수 있습니다.
-
코드 창에서 Ctrl+I를 누르면 코드를 생성하기 위한 프롬프트(Prompt)를 작성할 수 있는 창이 팝업됩니다. 그 후 생성된 코드를 수락하거나 거절할 수 있습니다.
-
탭 자동 완성(Tab auto-complete)이 작동하는지 확인하십시오 (AI가 회색으로 코드 연속성을 제안하면, TAB을 눌러 수락합니다).
-
TAB 코드 완성 기능을 테스트하기 위해 원하는 언어로 부분적으로 작성된 팩토리얼(Factorial) 함수를 시도해 볼 수 있습니다.
-
자동 완성이 멈춘 경우, 언제든지 Ctrl+I를 눌러 코드를 계속 작성하도록 직접 프롬프트를 입력할 수 있습니다.
-
VSCode의 Continue 확장 프로그램 설정에서 탭 자동 완성을 언제든지 비활성화할 수 있습니다.
-
초당 약 1단어 정도의 텍스트 생성 성능을 기대할 수 있습니다.
추가적인 컨텍스트(Context)를 제공하는 방법은 여기서 배우십시오:- 컨텍스트 제공자(Context Providers). 채팅 창에서 "Add Context"를 클릭하여 파일, 폴더, 터미널 출력 등을 프롬프트 컨텍스트(Prompt context)로 가져오는 옵션을 사용할 수도 있습니다.
코드 창에서 Continue 명령어를 직접 사용하는 방법은 다음과 같습니다: -
코드베이스 인식(Codebase awareness)을 시도해 보십시오 - 클릭: Use codebase
프롬프트를 작성할 때 Continue 프롬프트 창에서 Use codebase를 클릭하십시오. Continue는 코드베이스를 벡터화(Vectorize)하여 프롬프트와 관련된 코드 스니펫(Snippet)을 지능적으로 가져올 수 있게 합니다. 코드베이스 내에서 'X가 어디에서 수행되는가?'라고 물으면 이를 찾아낼 것입니다.
다음과 같은 다른 LLM 모델들도 시도해 볼 수 있습니다:
TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF
Q4_K_M버전을 사용하십시오.
TheBloke/deepseek-coder-33B-instruct-GGUF
Q4_K_M버전을 사용하고, 채팅 창과 서버 창 모두에서 프롬프트 형식(Prompt Format, 오른쪽 탭)을 Deepseek Coder로 변경하십시오.
긴 토론 내용이나 많은 양의 코드를 붙여넣을 때는 컨텍스트 길이(Context length)를 (AI 채팅 창과 로컬 서버 모두에서) 8192에서 더 높은 값으로 늘려야 할 수도 있습니다. Codestral과 Mixtral은 최대 32768 토큰을 지원합니다.
높은 양의 컨텍스트 (Context)는 RAM 사용량을 증가시키므로, 일정 수준 이상의 텍스트를 사용하면 오류가 발생할 수 있습니다. 많은 양의 컨텍스트를 사용하고 싶다면 더 작은 Q size를 사용하세요.
모델이 원하는 대로 동작하지 않는다면 시스템 프롬프트 (System Prompt, 오른쪽 탭)를 사용하세요. 시스템 프롬프트는 단순하게 유지하십시오. 다른 주제로 넘어갈 때는 시스템 프롬프트를 변경하거나 지워야 한다는 점을 기억하세요. 일반적인 용도의 시스템 프롬프트로는 "You are a helpful coding assistant" (당신은 도움이 되는 코딩 어시스턴트입니다)가 적당합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기