
로컬 LLM으로 영어도 학습할 수 있도록 시스템 프롬프트(System Prompt) 고정하기
요약
Ollama의 Modelfile을 활용하여 로컬 LLM에 시스템 프롬프트를 고정하는 방법을 소개합니다. 이를 통해 모델의 역할, 제약 조건, 출력 형식을 설정하여 특정 언어를 항상 함께 출력하도록 커스텀 모델을 만드는 과정을 다룹니다.
핵심 포인트
- Ollama의 Modelfile을 사용하여 커스텀 모델 생성 가능
- 시스템 프롬프트를 통해 역할, 제약 조건, 출력 형식 지정
- llama3.1 베이스 모델에 특정 언어 출력 규칙 적용 방법 안내
- ollama create 명령어를 통한 커스텀 모델 등록 및 활용
이 기사에서 로컬 LLM을 빠르게 구현하는 방법을 소개했습니다.
이를 기반으로 항상 영어와 일본어 양쪽을 모두 출력하는 로컬 LLM을 만듭니다.
완성된 형태는 다음과 같습니다.
시스템 프롬프트 (System Prompt)를 만듦으로써 답변 생성 시에는 항상 다음 내용을 반영할 수 있습니다.
- 역할·인격 설정
- 제약 조건·안전 필터
- 출력 형식 지정
Ollama에서는 Modelfile이라는 파일을 생성함으로써 커스텀된 모델로 만들 수 있습니다.
Modelfile은 관례적으로 그러한 이름으로 사용되고 있습니다.
Modelfile이라는 파일을 생성하여 다음과 같이 기술합니다. (일단 영어로 작성했습니다.)
# 베이스가 되는 모델을 llama3.1로 설정
FROM llama3.1
# 온도를 0.5로 설정
...
그리고, ollama create로 파일을 등록합니다. 이때 디렉토리를 지정하는데, 이번에는 app.py와 같은 계층에 넣었습니다.
$ tree .
.
├── Modelfile
...
ollama create ollama-english-japanese -f ./Modelfile
성공하면 success라고 뜹니다.
방금 만든 ``를 사용하도록 수정합니다.
response = ollama.chat(
model="ollama-english-japanese",
messages=st.session_state.messages,
...
참고로 편집 전은 다음과 같습니다.
response = ollama.chat(
model="llama3.1",
messages=st.session_state.messages,
...
테스트해 보겠습니다.
streamlit run app.py
일본어로 입력해도 영어로 입력해도, 일본어, 영어 순으로 양쪽 답변을 모두 준비해 주었습니다.
이대로 두면 코드 생성도 중복되므로, Modelfile에서 규칙을 만들어 회피할 필요가 있겠네요.
시스템 프롬프트 (System Prompt)의 팁
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기