프로젝트

일반

사용자정보

Actions

이슈 #237

진행중
CP RL

5-4. Claude API 호출 및 응답 처리

이슈 #237: 5-4. Claude API 호출 및 응답 처리

Chris Park이(가) 약 5시간 전에 추가함.

상태:
해결
우선순위:
높음
담당자:
목표버전:
시작일:
2026/04/28
완료일:
2026/04/29 (약 6달 지연)
진척도:

0%

추정시간:

설명

스트리밍 응답 처리

완료 내역

  • Anthropic SDK의 messages.stream() 사용하여 스트리밍 응답 처리 (src/services/api/anthropic.ts:58)
  • react-native-fetch-api의 textStreaming: true 플래그로 RN 환경에서 청크 기반 스트림 수신 (anthropic.ts:36-39)
  • streamChat() 콜백 기반 인터페이스:
    • onFinal({ text, usage }): 스트림 완료 후 최종 텍스트와 토큰 사용량 전달
    • onAbort(): 사용자 중단 처리 (AbortController.signal 연동)
    • onError(error): 실패 처리
  • 대화별 AbortController 관리로 개별 요청 취소 가능 (src/stores/chatStore.ts:174-175, 301-304)
  • 완료 후 처리 파이프라인 (chatStore.ts:180-235):
    • parseCodeBlocks()로 응답에서 HTML/코드블록 추출
    • HTML 첨부 존재 시 완료 메시지 문구로 교체, 코드블록만 있을 경우 원문 표시
    • HTML은 낙관적 UI(pending: true)로 먼저 렌더 → persistSingleHtml()로 비동기 파일 저장 → filePath 교체
    • 저장 실패 시 토스트 노출
  • 토큰 사용량 저장 및 dev 로그 (캐시 HIT/MISS/WRITE 상태 포함) (anthropic.ts:95-105)
  • stop_reason === 'max_tokens' 시 dev 경고 (anthropic.ts:76-80)
  • 오류 타입 감지: AbortError 구분 처리 (anthropic.ts:21-32)

주요 파일

  • src/services/api/anthropic.ts — streamChat() 스트리밍 호출 + streamingFetch 플래그
  • src/stores/chatStore.ts — 콜백 연동, 낙관적 UI, 중단/에러/완료 처리
  • src/utils/parseCodeBlocks.ts — 응답에서 첨부 추출
  • src/services/storage/htmlFiles.ts — HTML 파일 영속화

관련 커밋

  • 3b6c46b (fixes ref #237) — Claude API 호출 및 응답 처리
  • 91a0930 — AI 응답에서 HTML 추출 로직 (후속, #242 소관)

참고

  • 중단 사유는 interruptReasons Map에 보존되어 어시스턴트 메시지에 기록됨
  • max_tokens은 현재 64,000으로 설정 (anthropic.ts:61)

CP Chris Park이(가) 7달 전에 변경 Actions #1

  • 프로젝트을(를) 14에서 Alphea App(으)로 변경되었습니다.
  • 목표버전을(를) 6월 중간 버전(으)로 지정되었습니다.

RL Ryan Lee이(가) 7달 전에 변경 Actions #2

보강: 스트리밍 파이프라인·콜백 인터페이스·중단 처리 명시

RL Ryan Lee이(가) 7달 전에 변경 Actions #3

  • 상태을(를) 신규에서 해결(으)로 변경되었습니다.

Claude API 스트리밍 호출 및 응답 처리 완료 — AbortController/콜백/낙관적 HTML 영속화

Actions

내보내기 PDF Atom