OpenAI 호환 서버에서 프롬프트 템플릿 커스터마이즈
OpenAI 호환 서버에서 프롬프트 템플릿 커스터마이즈
배울 점: OpenAI 호환 서버에 커스텀 프롬프트 템플릿을 설정하는 방법. 어떻게? CodeLlama의 프롬프트 템플릿을 수정할 거예요.
1단계: OpenAI 호환 서버 시작
Huggingface의 Text-Generation-Inference(TGI) 형식을 사용해 배포된 codellama/CodeLlama-34b-Instruct-hf 모델을 호출하는 로컬 OpenAI 호환 서버를 띄워 봐요.
$ litellm --model huggingface/codellama/CodeLlama-34b-Instruct-hf --api_base https://my-endpoint.com# OpenAI compatible server running on http://0.0.0.0/8000
새 셸에서 실행하세요:
$ litellm --test
이것은 엔드포인트에 테스트 요청을 보냅니다.
이제 huggingface로 무엇이 전송되는지 봐 봅시다. 실행:
$ litellm --logs
가장 최근 로그를 반환할 거예요(기본적으로 로그는 'api_logs.json'이라는 로컬 파일에 저장됨).
보시다시피 이것이 huggingface로 보내지는 형식입니다:
이것은 CodeLlama에 대한 우리의 형식(Huggingface 문서 기반)을 따릅니다.
하지만 이는 BOS(<s>)와 EOS(</s>) 토큰이 빠져 있어요.
그래서 LiteLLM 기본값 대신 우리만의 프롬프트 템플릿을 사용해서 메시지에 이 토큰들을 넣어 봅시다.
2단계: 커스텀 프롬프트 템플릿 생성
litellm 서버는 config 파일의 일부로 프롬프트 템플릿을 받아들입니다. 이 config에 API 키, fallback 모델, 프롬프트 템플릿 등을 저장할 수 있어요. 완전한 config 파일을 확인하세요.
일단 프롬프트 템플릿이 담긴 간단한 config 파일을 만들고 서버에 알려주는 것부터 해볼게요.
litellm_config.toml이라는 파일을 만드세요:
$ touch litellm_config.toml
추가하려는 것은:
- 모든 System과 Human 메시지의 시작에 BOS (
<s>) 토큰 - 모든 assistant 메시지의 끝에 EOS (
</s>) 토큰
터미널에서 파일을 열어 보세요:
$ vi litellm_config.toml
프롬프트 템플릿을 붙여넣으세요:
[model."huggingface/codellama/CodeLlama-34b-Instruct-hf".prompt_template] MODEL_SYSTEM_MESSAGE_START_TOKEN = "[INST] >\n]" MODEL_SYSTEM_MESSAGE_END_TOKEN = "\n>\n [/INST]\n"MODEL_USER_MESSAGE_START_TOKEN = "[INST] " MODEL_USER_MESSAGE_END_TOKEN = " [/INST]\n"MODEL_ASSISTANT_MESSAGE_START_TOKEN = ""MODEL_ASSISTANT_MESSAGE_END_TOKEN = ""
파일을 저장하세요(vim에서):
:wq
3단계: 새 템플릿 실행
커스텀 템플릿을 litellm 서버에 저장하려면 실행하세요:
$ litellm --config -f ./litellm_config.toml
LiteLLM은 이 파일의 사본을 패키지에 저장해서 재시작 후에도 이 설정을 유지할 수 있게 해줍니다.
서버를 재시작하세요:
$ litellm --model huggingface/codellama/CodeLlama-34b-Instruct-hf --api_base https://my-endpoint.com
새 셸에서 실행:
$ litellm --test
Huggingface로 가는 새 입력 프롬프트를 확인해 보세요!
축하합니다 🎉