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로 가는 새 입력 프롬프트를 확인해 보세요!

축하합니다 🎉

더 알아보기 (Learn more)