lifecarelog
AI 정보

Claude API를 앱에 붙이면서 배운 실용 팁들

plan-c 앱 개발 중 Claude API를 FastAPI 백엔드에 연동하면서 실제로 경험한 팁과 주의사항을 정리했어요. 토큰 관리와 스트리밍이 핵심이었어요.

3분 읽기

[예시 글] 실제 프로젝트 연동 경험을 기반으로 작성했어요. API 버전과 가격은 변동될 수 있으니 공식 문서를 재확인하세요.

기본 세팅

FastAPI에서 Claude API를 쓰는 기본 패턴이에요:

services/claude_service.py
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

스트리밍 응답

사용자 경험을 위해 스트리밍을 적극 활용해요. 응답이 길어질수록 차이가 크게 느껴지거든요:

services/claude_streaming.py
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가 진단처럼 들리는 답변을 생성할 수 있어요.

토큰 비용 관리 팁

실제로 효과 있었던 것들:

  1. 컨텍스트 압축 — 사용자 히스토리 전체 대신 최근 7일만 전달
  2. 캐싱 — 동일 패턴의 루틴은 Redis로 캐싱 (Anthropic Prompt Caching도 검토 중)
  3. max_tokens 조정 — 짧은 응답이 충분한 경우엔 512 이하로

실제 비용 수치는 사용량에 따라 크게 다르니 공식 Anthropic 가격표에서 직접 계산하는 게 정확해요.

#claude#anthropic#api#fastapi#ai

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글