Claude API를 앱에 붙이면서 배운 실용 팁들
plan-c 앱 개발 중 Claude API를 FastAPI 백엔드에 연동하면서 실제로 경험한 팁과 주의사항을 정리했어요. 토큰 관리와 스트리밍이 핵심이었어요.
원종현3분 읽기
[예시 글] 실제 프로젝트 연동 경험을 기반으로 작성했어요. API 버전과 가격은 변동될 수 있으니 공식 문서를 재확인하세요.
기본 세팅
FastAPI에서 Claude API를 쓰는 기본 패턴이에요:
import anthropic
from typing import AsyncGenerator
client = anthropic.Anthropic(api_key=settings.ANTHROPIC_API_KEY)
def generate_health_advice(user_context: dict) -> str:
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{
"role": "user",
"content": f"오늘의 건강 루틴을 추천해줘. 컨텍스트: {user_context}"
}
]
)
return message.content[0].text스트리밍 응답
사용자 경험을 위해 스트리밍을 적극 활용해요. 응답이 길어질수록 차이가 크게 느껴지거든요:
def stream_health_advice(user_context: dict) -> Generator:
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": f"{user_context}"}],
) as stream:
for text in stream.text_stream:
yield f"data: {text}\n\n"시스템 프롬프트 관리
앱마다 다른 시스템 프롬프트를 DB나 파일에서 관리하는 게 유지보수에 좋아요:
HEALTH_SYSTEM_PROMPT = """
당신은 라이프케어로그의 건강 루틴 어시스턴트예요.
- 의학적 진단은 하지 마세요
- 오늘의 컨디션 데이터를 기반으로만 답변하세요
- 항상 "의심되면 전문의 상담을 받으세요"를 포함하세요
"""시스템 프롬프트에 명확한 제한 조건을 넣는 게 중요해요. "의학적 진단을 하지 않는다"를 명시하지 않으면 AI가 진단처럼 들리는 답변을 생성할 수 있어요.
토큰 비용 관리 팁
실제로 효과 있었던 것들:
- 컨텍스트 압축 — 사용자 히스토리 전체 대신 최근 7일만 전달
- 캐싱 — 동일 패턴의 루틴은 Redis로 캐싱 (Anthropic Prompt Caching도 검토 중)
- max_tokens 조정 — 짧은 응답이 충분한 경우엔 512 이하로
실제 비용 수치는 사용량에 따라 크게 다르니 공식 Anthropic 가격표에서 직접 계산하는 게 정확해요.
#claude#anthropic#api#fastapi#ai