inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

베개투자법 완성: 아침이 설레는 AI 주식 완전 자동매매 Claude 바이브코딩

Kaggle 연동 (2) Secrets 등록과 스케줄링

llm_decision_logs 미적재 문의

구구구구

작성한 질문수 5

0

■ 1. 통합 파이프라인 → POST /pipeline/run-buy-pipeline 을 실행 시 아래와 같이 LLM 호출 전체 실패가 뜹니다.

{

"message": "통합 파이프라인 완료 - BUY 0개 / HOLD 1개",

"steps": {

"1_technical_analysis": {

"message": "25개의 추천 데이터가 생성되었습니다",

"count": 25,

"elapsed_sec": 60.9

},

"1.5_earnings_calendar": {

"message": "저장할 실적 일정이 없습니다",

"count": 0

},

"2_sentiment_analysis": {

"message": "10개의 티커(추천 주식: 10개, 보유 주식: 0개)를 분석했습니다",

"count": 10,

"elapsed_sec": 97.8

},

"3_candidate_extraction": {

"message": "1개의 매수 추천 주식을 찾았습니다 (v2 (z-score))",

"count": 1,

"elapsed_sec": 1

},

"4_llm_review": {

"buy_count": 0,

"hold_count": 1,

"elapsed_sec": 51.3

}

},

"candidates_before_llm": 1,

"candidates_after_llm": 0,

"held": 1,

"results": [],

"held_results": [

{

"ticker": "ADBE",

"stock_name": "어도비",

"accuracy": 87.6874,

"rise_probability": 10.1176571624871,

"last_price": 266.510009765625,

"predicted_price": 293.474578857422,

"recommendation": "STRONG BUY",

"analysis": "어도비 is expected to rise by about 10.12%. Consider buying or holding.",

"sentiment_score": 0.0197778333333333,

"article_count": 6,

"sentiment_date": "2026-09-09 00:11:55",

"technical_date": "2026-09-06",

"sma20": 277.896499633789,

"sma50": 260.969197692871,

"golden_cross": true,

"rsi": 49.811422658345,

"macd": 3.41914308274363,

"signal": 6.66046215382312,

"macd_buy_signal": false,

"technical_recommended": false,

"volume_ratio": 1.6,

"adx": 24.58,

"earnings_date": null,

"earnings_estimate": null,

"days_to_earnings": null,

"composite_score": 0.6117,

"v2_factors": {

"z_rise": 1.29,

"z_tech": -0.231,

"z_macd": -1.375,

"z_sma": 1.408,

"z_rsi": -0.727,

"z_sent": -1.365,

"z_vol": 1.401,

"z_adx": 1.397

},

"vix_value": 14.5299997329712,

"scoring_version": "v2"

}

],

"llm_reasoning": "LLM 호출 전체 실패 (Opus 3회 + Sonnet 3회): Messages.create() got an unexpected keyword argument 'temperature'",

"total_elapsed_sec": 211

}

■ 1.1 그리고 이 부분을 클로드에게 물어보니 아래와 같은 답변을 받았습니다.

app/services/llm_review_service.py:181 의 create_kwargs["temperature"] = 0 입니다.

이 프로젝트에 설치된 SDK는 anthropic 1.2.0 인데, 1.x 메이저 업그레이드에서 temperature / top_p / top_k 가 Messages.create() 시그니처에서 완전히 삭제됐습니다. 실제 설치본 확인 결과:

max_tokens, messages, model, cache_control, container, inference_geo, metadata,

output_config, service_tier, stop_sequences, stream, system, thinking,

tool_choice, tools, user_profile_id, extra_headers, extra_query, extra_body, timeout

temperature 가 없습니다. 그래서 API 요청이 나가기도 전에 파이썬 레벨에서 TypeError: Messages.create() got an unexpected keyword argument 'temperature' 가 터집니다. 서버 400 에러가 아니라 SDK 호출 자체가 실패한 것이라, 재시도해도 100% 같은 결과입니다.

코드의 전제가 어긋난 부분:

# temperature 파라미터를 받지 않는 모델 (Opus 4.7부터 sampling 파라미터 제거됨)

MODELS_WITHOUT_TEMPERATURE = {"claude-opus-4-8"}

"모델별로 다르다"는 전제로 Opus만 제외했지만, SDK 1.x에서는 모델과 무관하게 어떤 모델에도 temperature를 넘길 수 없습니다. 그래서 폴백 모델 claude-sonnet-4-6 차례에서 매번 터졌습니다.

Opus 3회는 왜 실패했나 (추정)

최종 메시지의 에러는 last_error 한 개만 찍히는데, Sonnet의 TypeError가 Opus 쪽 에러를 덮어썼습니다. 다만 4_llm_review 의 elapsed_sec: 51.3 이 단서입니다 — 재시도 대기는 5+15+30 = 50초이고, 이건 한 모델만 3회 재시도(sleep 포함)를 돌았다는 뜻입니다. 즉 Opus는 sleep 없이 break 되는 경로 — json.JSONDecodeError(191행) 또는 529/429/503 이외의 APIStatusError(246행) — 로 1회만에 빠져나갔고, 50초는 Sonnet의 TypeError 3회입니다. Opus의 실제 에러는 콘솔 stdout(LLM API 에러 ... 또는 LLM 응답 JSON 파싱 실패 ...)에만 남아 있으니 그 줄을 확인해야 확정됩니다.

수정 방향

1. temperature 분기 전체 삭제 (MODELS_WITHOUT_TEMPERATURE 상수 포함). 결정성이 필요하면 프롬프트/output_config로 제어합니다.

2. TypeError 같은 비재시도성 예외는 50초 sleep 후 재시도하지stdout(LLM API 에러 ... 또는 LLM 응답 JSON 파싱 실패 ...)에만 남아 있으니 그 줄을 확인해야 확정됩니다.

수정 방향

1. temperature 분기 전체 삭제 (MODELS_WITHOUT_TEMPERATURE 상수 포함). 결정성이 필요하면 프롬프트/output_config로 제어합니다.

2. TypeError 같은 비재시도성 예외는 50초 sleep 후 재시도하지 말고 즉시 다음 모델/중단으로 보내기.

3. last_error 를 모델별로 모아서 실패 사유에 함께 남기기 (지금은 Opus 원인이 통째로 유실됩니다).

4. 모델 ID도 현행 세대(claude-opus-5 / 폴백 claude-sonnet-5)로 올리는 걸 권합니다.

수정 적용해 드릴까요? 1·2·3번은 바로 반영 가능하고, 4번은 원하시면 같이 하겠습니다.

■ 2. llm_decision_logs 미적재 문의 (캐글 연동은 되었음)

(a) /pipeline/kaggle/trigger-ml 은 원래 이 테이블을 안 건드립니다

pipeline.py:298 의 kaggle_trigger_ml() 은 kaggle kernels push → status 폴링만 합니다. review_buy_candidates() 를 호출하는 경로가 아예 없어요. llm_decision_logs 에 쓰는 건 /pipeline/run-buy-pipeline 과 스케줄러의 일일 파이프라인뿐입니다. trigger-ml 을 아무리 돌려도 이 테이블은 안 채워집니다.

(b) run-buy-pipeline 을 돌려도 저장이 실패하고 있습니다 — 컬럼 누락

Supabase에 직접 조회해서 확인했습니다(읽기만 했고 쓰기는 안 했습니다):

┌──────────────────────────────────────────┬────────────┐

│ 컬럼 │ 상태 │

├──────────────────────────────────────────┼────────────┤

│ decision_date, ticker, stock_name, │ │

│ decision, reason, market_analysis, │ OK │

│ composite_score, rise_probability, rsi, │ │

│ adx, vix_value, created_at, updated_at │ │

├──────────────────────────────────────────┼────────────┤

│ │ 42703 │

│ earnings_date │ column │

│ │ does not │

│ │ exist │

├──────────────────────────────────────────┼────────────┤

│ days_to_earnings │ 42703 │

├──────────────────────────────────────────┼────────────┤

│ earnings_estimate │ 42703 │

└──────────────────────────────────────────┴────────────┘

llm_review_service.py:24 의 upsert 페이로드에는 이 세 컬럼이 들어갑니다. 컬럼이 없으니 매번 요청이 거부되고, savellm_decision_logs 는 전체를 try/except Exception 으로 감싸 LLM 판단 로그 저장 실패: 만 출력하고 넘어갑니다(llm_review_service.py:41). 그래서 API 응답은 정상으로 보이는데 테이블만 계속 비어 있는 겁니다. 현재 행 수는 0개입니다.

같은 원인으로 earnings_calendar 테이블 자체도 없습니다(PGRST205). 어제 실행 결과의 1.5_earnings_calendar: "저장할 실적 일정이 없습니다" 도 이것 때문입니다.

원인은 sql/create_earnings_calendar.sql 을 Supabase에서 실행하지 않은 것입니다. 파일은 리포에 있는데 DB에 적용이 안 됐어요. Supabase SQL Editor에서 그 파일을 통째로 실행하면 테이블 생성 + 컬럼 3개 추가가 한 번에 됩니다.

한 가지 더: .env 의 SUPABASE_KEY 는 anon 역할입니다. 조회는 되는 걸 확인했지만 INSERT는 RLS에 막힐 수 있으니, 컬럼 추가 후에도 안 들어가면 sql/errorfix.sql 의 ALTER TABLE llm_decision_logs DISABLE ROW LEVEL SECURITY 를 확인하세요.

---

정리하면 이 순서로 풀립니다:

1. Supabase에서 sql/create_earnings_calendar.sql 실행 → 컬럼/테이블 생성 (이건 직접 하셔야 합니다)

2. llm_review_service.py 의 temperature 제거 → LLM 호출 자체가 성공해야 BUY/HOLD 판정이 저장됨

3. /pipeline/run-buy-pipeline 실행 (trigger-ml 아님)

2번과, 로그 저장 실패가 조용히 묻히지 않게 API 응답에 노출시키는 수정을 지금 적용할까요?


python 머신러닝 aws FastAPI 퀀트 cloud-computing claude

답변 0

연동 문제

0

15

1

5-21 질문이요!

0

20

2

매수 실행 시점 관련

0

28

0

Opus/Sonnet 버전 관련 문의

1

46

2

섹션2 질문이요

1

49

2

섹션1.9 질문입니다!

1

69

3

Kaggle 노트북(predict.ipynb) 관련

1

54

2

git bash .env

1

54

1

알파벤티지 sleep(5) 관련 문의

1

70

2

실전 계좌에서 운영하고 계신 분 계신가요?

1

70

2

클로드

1

59

2

pip install -r requirements.txt

0

65

2

명령 프롬프트

0

59

2

slack 알림 연동 강의 관련

1

80

2

supabase_key 관련

1

89

3

python run.py 실행시 에러 문제

1

101

2

커서창

1

69

2

cursor 환경

1

73

2

개발 환경 준비와 프로젝트 구조 강의 관련

1

64

2

저장 공간

1

69

2

colab 코드 실행시 error

1

62

2

llm_decision_logs 저장 실패(실적 컬럼 불일치)를 어떻게 해결할까요?

2

97

4

kaggle notebook에 service key 설정이 누락된 것 같습니다

1

76

2

주말에 실행할 경우 update_economic_data_in_background에 로직 변경 필요성

1

61

1