azosi · 2026.7.28 01:38 · 조회 0
Kimi Partial Mode
상위 문서: ← Kimi Core workflows 출처: Kimi API Platform 공식 문서 — Use Kimi API's Partial Mode 한글화 (2026-07-22) 공급사: Moonshot AI (月之暗面)
Partial Mode는 Kimi LLM이 빈 응답을 생성하는 대신 주어진 텍스트에서 이어서 생성하도록 만듭니다. 다음 상황에서 사용:
- 답변 시작을 고정 (예: "안녕하세요, 고객님"으로 모든 답변 시작하는 CS 봇)
- 잘린 장문 출력 이어쓰기
- 롤플레이에서 캐릭터 일관성 강화
1. 주어진 접두사에서 이어쓰기
Partial Mode를 사용하려면 messages 리스트 끝에 role=assistant + partial=True 메시지를 추가하고, 이어갈 텍스트를 content에 두세요. 모델은 그 콘텐츠에서 답변을 시작합니다.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MOONSHOT_API_KEY"],
base_url="https://api.moonshot.ai/v1",
)
completion = client.chat.completions.create(
model="kimi-k3",
messages=[
{"role": "system", "content": "You are Kimi, an AI assistant provided by Moonshot AI..."},
{"role": "user", "content": "안녕하세요?"},
{
"partial": True, # <-- Partial Mode 활성화
"role": "assistant", # <-- user 다음 assistant 메시지
"content": "안녕하세요, 고객님,", # <-- 이어갈 텍스트
},
]
)
# 모델이 이어서 생성한 응답을 수동으로 결합
print("안녕하세요, 고객님," + completion.choices[0].message.content)
핵심 포인트:
messages리스트 끝에role=assistant+partial=True메시지 추가content에 이어갈 텍스트를 두면 모델이 그 위치에서 생성 시작- 수동으로 결합해 완전한 답변 구성
2. max_tokens로 잘린 출력 이어쓰기
max_tokens가 너무 작아 출력이 잘린 경우(finish_reason="length"), 이미 생성된 콘텐츠를 접두사로 전달해 이어쓸 수 있음.
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "출사표를 완전히 읊어줘"}],
max_tokens=1200, # 일부러 작게 설정
)
if completion.choices[0].finish_reason == "length":
prefix = completion.choices[0].message.content
reasoning_content = completion.choices[0].message.reasoning_content
print(prefix, end="") # 잘린 부분 출력
print("「이어서 생성--------->」")
# 이어서 생성 — 더 큰 max_tokens로
completion = client.chat.completions.create(
model="kimi-k3",
messages=[
{"role": "user", "content": "출사표를 완전히 읊어줘"},
{"role": "assistant", "content": prefix, "partial": True, "reasoning_content": reasoning_content}, # 사고 모드는 reasoning_content 필수
],
max_tokens=86400,
)
print(completion.choices[0].message.content)
⚠️ 사고 모드 주의: 사고는
max_tokens를 먼저 소모.kimi-k3는 사고가 기본 활성화되어 있어,max_tokens가 작으면 사고 도중 잘릴 수 있음 →content는 비어있지만finish_reason="length". 접두사가 비어 이어쓰기가 처음부터 다시 시작될 수 있음. 사고가 content 단계에서 잘리도록max_tokens를 충분히 크게 설정.
3. name 필드로 캐릭터 정체성 고정
Partial Mode의 name 필드는 모델이 자신의 역할을 이해하도록 도와, 지정된 캐릭터의 목소리로 출력하게 만듦. name 필드는 출력 접두사의 일부.
completion = client.chat.completions.create(
model="kimi-k3",
messages=[
{"role": "system", "content": "이제 Kelsier 역할을 합니다. Kelsier의 말투로 대화해 주세요. Kelsier는 모바일 게임 어크나이츠의 6성 메딕 클래스 오퍼레이터입니다..."},
{"role": "user", "content": "Therace와 Amiya에 대한 생각은?"},
{
"partial": True,
"role": "assistant",
"name": "Kelsier", # <-- 캐릭터 이름 설정
"content": "", # <-- 출력 내용은 비워두고 역할만 지정
},
],
max_tokens=65536,
)
print(completion.choices[0].message.content) # Kelsier의 말투로 답변
4. 긴 대화에서 캐릭터 일관성 유지
- 명확한 캐릭터 설명 제공 (성격·배경·특이한 점)
- 말투·스타일·배경·동기 등 추가 디테일
- 다양한 상황에서 캐릭터가 어떻게 행동해야 하는지 가이드
- 주기적으로 system prompt 재삽입 (특히 모델이 어긋나기 시작할 때)
# 긴 대화 중간에 system prompt 재삽입 예시
messages=[
{"role": "system", "content": "[Kelsier 설정 다시]"},
{"role": "user", "content": "이전 질문..."},
# ... 중간 대화들 ...
{"role": "system", "content": "[Kelsier 설정 다시]"}, # <-- 재강조
{"role": "assistant", "partial": True, "name": "Kelsier", "content": ""},
]
변경 이력
| 날짜 | 변경 |
|---|---|
| 2026-07-22 | 초판 작성 (공식 Partial Mode 가이드 한글화) |
| 2026-07-22 | 제목에 "Kimi" 접두사 추가, 본문 H1 중복 제거 |
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.