Open AI API

채연·2023년 3월 14일
0

ChatGPT

목록 보기
1/2

API

API란, Application Programming Interface의 약자로, 소프트웨어 간의 통신과 데이터 교환을 가능하게 하는 것.

예를 들어) 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있습니다. 그리고, 휴대폰의 날씨 앱은 API를 통해 이 시스템과 ‘대화’하여 휴대폰에 매일 최신 날씨 정보를 표시하게 됩니다.

이러한 기능을 공유하면 코드 재사용이 가능해져서 시스템의 품질을 개선하고 개발 비용을 줄일 수 있습니다.

웹 기반 API

웹 기반 API는 웹 브라우저에서 URL에 접근할 때 사용하는 HTTP 프로토콜을 사용하여 인터넷 상에서 노출됩니다. 이것은 우리가 웹사이트를 사용하는 것과 유사한데, 우리가 웹사이트에 접근할 때 URL을 사용하는 것과 마찬가지로 API를 사용할 때도 URL에 요청을 보냅니다.

각 API는 하나 이상의 URL(엔드포인트) 집합으로 구성됩니다. 일부 엔드포인트는 입력 데이터를 사용하여 작업을 수행하고, 다른 엔드포인트는 단순히 데이터를 반환할 수 있습니다.

입력 및 출력 데이터의 형식은 API에 따라 다르지만 대부분의 API는 JSON 또는 일반 텍스트와 같은 일반적인 데이터 교환 형식을 사용합니다.

웹 기반 API는 HTTP를 사용하므로 특정 프로그래밍 언어에 의존하지 않습니다. 따라서 HTTP 요청을 보낼 수 있는 대부분의 프로그래밍 언어를 사용하여 상호작용할 수 있습니다.

링크를 보면, 현재 우주에 있는 인간 수에 대한 데이터를 제공하는 응답이 표시됩니다.

API를 사용할 수 있는 언어

위에서 말했듯, HTTP API는 언어별로 특정되지 않지만, 많은 API 발행자들은 특정 언어에서 API를 사용하는 것을 더 간단하게 만들기 위해 SDK나 소프트웨어 라이브러리를 제공합니다.

예를 들어 OpenAI는 python 프로그래밍 언어에서 Open AI API를 사용하는 것을 간소화하는 Python 라이브러리를 제공합니다.

하지만, 계속 말했듯 이런 SDK나 라이브러리는 유용할 수 있지만 API를 사용하는 데 필수적이진 않습니다!

** SDK : 개발자가 특정 플랫폼에서 소프트웨어를 개발할 수 있도록 필요한 도구

HTTP와 친숙해지기!

HTTP는 요청 - 응답 프로토콜입니다. 클라이언트는 서버에게 요청을 하고 서버는 클라이언트에게 응답을 하면서 진행됩니다.

URI

URI는 특정 서버에 HTTP 요청할 때, 필요한 세부 정보를 제공합니다.
http://api.open-notify.org/astros.json 을 예시로 들어보겠습니다.

첫 번째 파트는 http:// 로 시작하는 것을 볼 수 있습니다. 웹 기반 API의 경우 항상 HTTP 혹은 HTTPS입니다. HTTPS는 클라이언트와 서버간의 요청 및 응답이 암호화 된다는 표시입니다.

두 번째 파트는 리소스가 위치한 서버에 대한 참조입니다. 서버 이름이 존재하고, 서버 이름 뒤에는 리소스 위치에 대한 참조가 있습니다.

남은 URI에는 매개 변수와 값이 포함됩니다. 서버가 요청을 처리하는 데 사용할 수 있는 추가 세부 정보 혹은 변수 데이터를 제공하는 데 사용합니다.

HTTP 프로토콜은 URI 외에도 HTTP 메서드라고 불리는 다양한 요청 유형을 지원하고, 요청에 대한 추가 정보를 제공합니다.

HTTP 메소드

HTTP 메소드는 총 6개의 다른 메소드가 있습니다. 그 중 가장 일반적인 메소드는 GET과 POST입니다. GET 메소드는 클라이언트가 정보를 검색하려는 것을 서버에 알리는 역할을 하고, POST 메소드는 클라이언트가 데이터를 보내고 있다는 것을 서버에게 알립니다. 따라서, 모든 URL이 모든 메소드를 지원하는 것은 아닙니다.

HTTP body

HTTP에게 요청하거나 응답을 하는 본문에는 데이터 페이로드가 포함되어 있습니다. 요청의 경우에는 서버로 전송될 데이터가 포함되어 있고, 응답의 경우에는 서버로부터 보내지는 데이터가 포함되어 있습니다.
JSON, XML, 일반 텍스트 등이 일반적으로 사용되는 형식입니다.

HTTP header

HTTP 본문이 아니라, 헤더에도 데이터를 포함시켜 데이터 송수신을 할 수 있습니다. HTTP 헤더는 보통 요청에 대한 세부 정보를 제공하는 메타데이터를 정의합니다. 예를 들어, Content-Type이라는 HTTP 헤더는 데이터의 유형을 서버에 알리는데 사용되며 Authorization 헤더는 사용자 이름과 비밀번호와 같은 인증 세부 정보를 전송하는 데 사용됩니다.

HTTP 응답 status code

유효한 서버에 대한 요청을 클라이언트가 보내면, 서버는 응답과 함께 HTTP 응답 코드를 포함합니다. 예를 들어 200은 성공적인 응답을 나타내며, 500은 내부 서버 오류를 나타냅니다. 이곳에 가시면, 상태코드의 전체 목록을 확인할 수 있습니다. 상태 코드는 문제 해결에 매우 유용하게 사용됩니다.

Open API

Open API를 사용하면

  • 완성 생성
  • 사용 가능한 엔진 목록 나열
  • 엔진 세부 정보 가져오기
  • 의미 검색 수행
    을 앤드 포인트를 통해 수행할 수 있습니다.

엔진 목록(List available engines)

OpenAI API에서 사용가능한 엔진의 목록을 반환하는 작업입니다. 엔진 목록과 각 엔진에 대한 기본 정보를 제공합니다. 엔진 목록 엔드포인트는 GET 방식을 사용하며 매개변수는 필요하지 않습니다.

GET https://api.openai.com/v1/engines

위는 엔진 목록 엔드포인트의 HTTP방식(GET)과 URI 입니다.

엔진 검색(Get engine details)

엔진 검색 엔드 포인트는 특정 엔진에 대한 세부 정보를 반환합니다. 엔진 검색 엔드포인트는 HTTP GET 방식을 사용하며 엔진 ID가 URI 경로의 일부로 포함되어야 합니다.

GET https://api.openai.com/v1/engines/{engine_id}

완성 생성(Create Completions)

주어진 시작 문장 또는 단어에 대해 자동으로 완성을 생성하는 작업입니다. 이것은 대부분의 경우 사용하는 endpoint입니다. 이 endpoint는 HTTP POST 메소드를 사용하며, URI 경로에 엔진 ID가 필요합니다. 또한, 추가 매개 변수도 받습니다.

POST https://api.openai.com/v1/engines/{engine_id}/completions

Semantic search는 문서 목록에서 Semantic 검색을 수행하는 데 사용할 수 있습니다. 이 검색은 검색어를 문서 내용과 비교하여 유사한 문서를 식별합니다. 이 endpoint는 HTTP POST 메소드를 사용하며, 엔진 ID가 endpoint URI의 일부로 전달되어야 합니다.

POST https://api.openai.com/v1/engines/{engine_id}/search
profile
Hello Velog

0개의 댓글