AI Agent 연동
목표 요약 페이지에 LLM 처리를 붙이되, 호출이 반드시
standarda_core.llm 팩토리를 경유하게 한다.1. 지금 상태
앞 강의(기능 개발)에서 요약 페이지의 겉모습(폼·뷰·템플릿)만 만들었다. 요약 자체는 LLM 이 처리해야 하는데 아직 붙지 않아, 입력을 넣어도 실제 요약은 나오지 않는다. 이번 강의에서 여기에 실제 OpenAI 호출을 연결한다.
2. AI Agent 연동 요청
프로젝트 루트에서 Claude Code 를 켜고, 요약 처리를 OpenAI 로 붙여 달라고 요청한다.
앞 강의에서 .env 에 넣은 것이 OpenAI 키이므로 OpenAI 를 지정한다.
# 🖥️ 서버 터미널
gildong@ip-172-31-39-132:~$ cd ~/my_project/src
gildong@ip-172-31-39-132:~/my_project/src$ claude
요약 페이지의 요약을 OpenAI 로 처리해줘
자연어로 위임해도 되지만, 결과 코드가 지켜야 하는 불변 규칙을 알고 있어야 리뷰할 수 있다.
- LLM 호출은 반드시
standarda_core.llm의 팩토리를 경유한다:get_openai_llm()/get_anthropic_llm()/get_google_llm(). 이번 예제는 OpenAI 이므로get_openai_llm().
```python from standarda_core.llm import get_openai_llm
llm = get_openai_llm() # 모델·키·temperature 는 .env 에서 읽음 response = llm.invoke(prompt) # LangChain 인터페이스 summary = response.content ```
OpenAI()/ChatOpenAI()/ChatAnthropic()/ChatGoogleGenerativeAI()를 직접 인스턴스화하지 않는다. 직접 만들면 LangSmith 트레이싱이 누락된다. 팩토리는 LangChain 래퍼를 반환하므로 트레이싱이 자동으로 붙고, 모델명·키·temperature 를.env(OPENAI_MODEL·OPENAI_API_KEY·OPENAI_TEMPERATURE)에서 일관되게 읽는다. (CLAUDE.md## LLM Calls)- 팩토리는 API 키가 없으면
None을 반환한다. 요약이 안 나오면 이 지점부터 의심한다.
프로젝트 ## Code Patterns 에 이 규칙이 이미 들어 있어 /develop·자연어 요청 모두 이 팩토리로 코드를 낸다.
자연어로 맡기더라도 결과 diff 가 위 규칙을 따르는지 확인한다.
3. 확인
- dev 도메인(
https://my-project-dev.popupstudio.ai)의 요약 페이지를 연다. - 긴 글을 붙여넣는다.
- 3줄 요약이 반환되면 연동 성공이다.
- LangSmith 대시보드에 이 호출 트레이스가 남는지도 확인한다(팩토리 경유의 실효 검증).
마무리
- 핵심 정리: 요약 처리를
get_openai_llm()경유로 붙였다. 팩토리를 쓰는 이유는 LangSmith 트레이싱 자동화와.env기반 설정 일관성이다. SDK 직접 인스턴스화는 금지다. - 주의 사항: 요약이 안 나오면 (1)
src/.env의OPENAI_API_KEY유무·오타, (2) 코드가 팩토리 대신 SDK 를 직접 부르진 않는지, (3) runserver 로그의 traceback 을 순서대로 본다. - 다음 시간: GitHub 업로드.