fix(ai_news): assistant prefill + temperature=0 + system prompt to force JSON
This commit is contained in:
@@ -44,9 +44,17 @@ async def score_sentiment(
|
|||||||
resp = await llm.messages.create(
|
resp = await llm.messages.create(
|
||||||
model=model,
|
model=model,
|
||||||
max_tokens=200,
|
max_tokens=200,
|
||||||
messages=[{"role": "user", "content": prompt}],
|
temperature=0,
|
||||||
|
system="너는 한국 주식 뉴스 감성 분석가다. JSON 객체 하나만 반환한다.",
|
||||||
|
messages=[
|
||||||
|
{"role": "user", "content": prompt},
|
||||||
|
# Assistant prefill — 첫 토큰을 강제로 '{' 로 시작해 JSON 응답을 보장
|
||||||
|
{"role": "assistant", "content": "{"},
|
||||||
|
],
|
||||||
)
|
)
|
||||||
text = resp.content[0].text if resp.content else ""
|
raw = resp.content[0].text if resp.content else ""
|
||||||
|
# prefill '{' 이 응답에 포함되지 않으므로 다시 붙임
|
||||||
|
text = "{" + raw if not raw.lstrip().startswith("{") else raw
|
||||||
in_tokens = int(getattr(resp.usage, "input_tokens", 0) or 0)
|
in_tokens = int(getattr(resp.usage, "input_tokens", 0) or 0)
|
||||||
out_tokens = int(getattr(resp.usage, "output_tokens", 0) or 0)
|
out_tokens = int(getattr(resp.usage, "output_tokens", 0) or 0)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user