검색
검색
공개 노트 검색
회원가입로그인

울산UCA코딩아카데미 Claude 3 앤트로픽 POSTMAN 연동 코딩 --(2)

page thumbnail

웹 개발자가 좋아하는 POSTMAN 툴을 이용한 앤트로픽 Claude 3 버전및 클로드 2.1 버전까지 호환되는 응답 테스트에 관한 아티클이다.

먼저 cURL방식을 사용해보자.

openAI든 구글 제미나이든 네이버든 cURL 포맷 여기에 항상 모든 답이 들어있다. 업스테이지의 솔라도 openAI 스타일의 코딩 타입으로 바뀌어 코드의 호환성을 보장해주지만, openAI 타입의 랩퍼를 뒤집어씌운것뿐이다. POSTMAN 처럼 웹 방식으로 테스트에 쓰려면 openAI 호환 모드로는 불가능하고, cURL 부분을 전부 참고해야한다.

먼저 헤더의 x-api-key 란에 발급받은 클로드 3의 API_KEY를 입력해준다. 이 cURL 문장은 그대로 복사해서 윈도 11 터미널 프롬프트에선 복사-붙이기하면 에러가 나기 십상이므로 반드시 wsl2의 우분투 리눅스나 깃허브의 코드스페이스등 개발자에게 리눅스 공간을 빌려줘서 직접 사용할 수 있는 곳에서 붙여넣기를 해주면 아주 잘 동작한다.\\\

현재 클로드 3 OPUS 모델인경우

  "model": "claude-3-opus-20240229",

처럼 모델 세팅이 보일것이다.

클로드 2.1 모델로 테스트하면

  "model": "claude-2.1",

로 세팅한다.

claude11a

cURL문구에 API_KEY 대응시켜서 구문을 조립한다.

tiger@tiger-PC:~$ curl https://api.anthropic.com/v1/messages \
>      --header "anthropic-version: 2023-06-01" \
>      --header "anthropic-beta: messages-2023-12-15" \
>      --header "content-type: application/json" \
>      --header "x-api-key: sk-ant-api03-...-uQYLvQAA" \
>      --data \
> '{
>   "model": "claude-2.1",
>   "messages": [{"role": "user", "content": "목성의 달 개수에 대해서 이야기해줘"}],
>   "max_tokens": 2048,
>   "stream": false
> }'

질문에 대한 response 응답 결과

{"id":"msg_01BDGunhy5rq3UzwvR7F2FdG",
"type":"message",
"role":"assistant",
"content":[
            {"type":"text",
             "text":"목성에는 총 79개의 확인된 달이 있습니다.\n\n- 
                     가장 큰 4개의 갈릴레이 (이 오, 유로파, 가니메데, 칼리 스토)\n
                   - 내부 달들로 알려진 메티스, 아드라스테아, 아말테아, 테베 등\n- 
                     외부 달들인 히말리아, 엘라라, 파 스ифე, 시노페 등\n\n
                     이들 중 가장 큰 달은 가니메데로, 지름이 약 5,268km에 이릅니다. 
                     가장 작은 달의 지름은 불과 약 1km 정도입니다.\n\n
                    목성의 달 들은 다양한 크기와 궤도를 가지고 있으며, 
                   과학자들은 아직도 새로운  달들을 발견하고 있습니다."
}
],
"model":"claude-2.1",
"stop_reason":"end_turn",
"stop_sequence":null,

"usage":{
         "input_tokens":17,
          "output_tokens":275
        }
}

tiger@tiger-PC:~$

파이썬에서는 마지막의 message.content를 잘라쓰면 된다.

cURL 여기서 헤더 정보등에 여러가지 유용한 힌트들을 얻었다.

일단 x-api-key 는 클로드의 API_KEY를 입력하는 곳이;다.

앤트로픽 API 서버주소는 https://api.anthropic.com/v1/messages

데이터 페이로드(데이터 바디)는 다음 JSON을 쓰면 된다.

{

"model": "claude-2.1",

"messages": [{"role": "user",

"content": "목성의 달 개수에 대해서 이야기해줘"}],

"max_tokens": 2048,

"stream": false

}

샘플에선 맥스 토큰 값이 256으로 너무 작아서 2048로 임의 조정했다.

POSTMAN사이트에서 POST방식으로 서버를 세팅한다.

앤트로픽 API 서버주소는 https://api.anthropic.com/v1/messages

claude_POSTMAN1a

Authorization (인가) 부분에 보통 다른 모델들은 bearer key 형태지만 앤트로픽에선 x-api-key 및 부여받은 API_KEY를 입력한다. Add to header 부분으로 세팅한다.

claude_POSTMAN2a

Body부분의 데이터 페이로드는 raw및 JSON 타입으로 설정한다.

맨 우측 beautify로 예쁘게 JSON 구문을 줄맞춤해준다.

claude_POSTMAN3a

아까 복사해둔 데이터 페이로드를 집어넣었다.

claude_POSTMAN4a

일단 <SEND> request를 전송해본다.

아마 여기까지만 했으면 invalid request 에러가 날텐데, 그 이유는 클로드 2.1버전에서는 anthropic-version: 2023-06-01 이라는 헤더값을 하나 빼먹어서다.

{

"type": "error",

"error": {

"type": "invalid_request_error",

"message": "anthropic-version: header is required"

}

}

헤더 탭에서 빠진 헤더를 추가해준다.

claude_POSTMAN6_ERRORa

다시 우측의 <SEND>키로 전송해본다.

이번엔 response가 올바로 전송되어온다.

claude_POSTMAN5a

맨 하단의 response 탭에서 최종 응답 값을 복사해서 JSON 포맷이 올바른지 조사해본다.

claude_POSTMAN7a

허깅페이스의 Serverless Inference API 처럼 파이썬의 requests 패키지와 POST 구문을 통해서 API 서버와 JSON 메시지 기반으로 통신하는 방법을통해 모델의 응답을 받을수 있어 파이썬 및 C# 같은 기타 언어에서도 request 방식으로 데이터를 전송하고 받을 수 있다.

자세한건 앤트로픽 클로드 3의 개발자에 대한 추가 게시물이 더 있는 ulsancoding.com을 방문해보자

UCA울산코딩아카데미

ulsancoding.com

수강 문의: 052-708-0001

조회수 : 201
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기