sashabaranov/go-openai
OpenAI, GPT 6.1, GPT-Image-2, Whisper API clients for Go. Zero-dependency.
이것은 무엇인가
go‑openai는 OpenAI API의 비공식 Go 클라이언트 라이브러리입니다. Go 프로그램이 OpenAI 플랫폼에서 개발자가 사용하는 것과 동일한 엔드포인트(텍스트 생성, 채팅, 임베딩, 이미지 생성, 오디오 전사, 콘텐츠 검토, 파일 처리, 파인튜닝, 배치 작업, 벡터 스토어 헬퍼, 레거시 Assistants API)를 호출할 수 있게 합니다.
대상 사용자
- 원시 HTTP 요청을 작성하지 않고 OpenAI 모델을 서비스, CLI 도구 또는 에이전트에 통합하려는 Go 개발자.
- AI 강화 애플리케이션(예: 챗봇, 코드 어시스턴트, RAG 파이프라인)을 구축하는 팀으로, 타입화되고 관용적인 Go 래퍼가 필요한 경우.
- 새로운 Responses API(도구 호출, 다중 턴 상태)를 선호하지만 이전 버전과 호환되는 Chat Completion 지원도 필요한 사람.
핵심 기능(README에 설명된 대로)
| 영역 | 라이브러리가 제공하는 것 |
|---|---|
| Responses API | CreateResponse, CreateResponseStream; PreviousResponseID를 통한 다중 턴 대화, 스트리밍 델타, 편리한 GetOutputText 헬퍼를 지원합니다. |
| Chat Completions | 기존 통합을 위한 CreateChatCompletion; 공식 OpenAI 엔드포인트와 동일한 형태를 반환합니다. |
| 모델 선택 | 최신 GPT‑6 시리즈(GPT6Dot1Sol, GPT6Astra, GPT6Sol, GPT6Luna) 및 이전 모든 모델에 대한 상수. |
| 임베딩 / 이미지 / 오디오 | 해당 OpenAI 엔드포인트를 호출하는 헬퍼 메서드(예: 이미지 생성, 음성-텍스트). |
| 파인튜닝, 배치, 벡터 스토어 | 이러한 API 표면을 가볍게 래핑하여 학습 작업 시작이나 벡터 데이터 관리를 쉽게 합니다. |
| Azure OpenAI 지원 | DefaultAzureConfig를 사용하면 필요한 배포 매핑을 포함하여 Azure 호스팅 OpenAI 엔드포인트로 클라이언트를 지정할 수 있습니다. |
| 사용자 정의 HTTP 설정 | DefaultConfig를 사용하면 기본 URL, 헤더를 변경하거나 기본 HTTP 클라이언트를 교체할 수 있습니다(프록시, 테스트, 자체 호스팅 호환 서버에 유용). |
| 오류 처리 | 오류는 *openai.APIError로 타입화됩니다; errors.As를 통해 HTTP 상태, 오류 코드, 메시지를 검사할 수 있습니다. |
| 예제 | 응답, 채팅, 함수 도구, 이미지 생성, 음성-텍스트를 다루는 실행 가능한 예제 세트. |
시작 방법(README의 빠른 단계)
- 설치:
go get github.com/sashabaranov/go-openai(Go 1.18+ 필요). - 환경 변수에 API 키 설정:
export OPENAI_API_KEY="...". - 클라이언트 생성:
client := openai.NewClient(os.Getenv("OPENAI_API_KEY")) - 요청 보내기 – 예: 새로운 Responses API를 사용한 간단한 응답:
resp, err := client.CreateResponse(context.Background(), openai.CreateResponseRequest{ Model: openai.GPT5Dot6Sol, Instructions: "You are a concise technical explainer.", Input: "Why is the sky blue?", }) if err != nil { log.Fatal(err) } fmt.Println(resp.GetOutputText()) - 탐색:
examples/폴더에서 스트리밍, 다중 턴 대화, 이미지 생성과 같은 더 복잡한 사용 사례를 확인하세요.
다른 선택을 고려할 때
- 공식 OpenAI 유지 관리 SDK가 필요한 경우(공식 Go SDK는 아직 베타), 버전 일관성을 보장하기 위해 그것을 선호할 수 있습니다.
- 매우 가벼운 스크립트에서 전체 클라이언트를 도입하는 것이 무겁게 느껴진다면, 간단한
net/http호출로 충분할 수 있습니다.
커뮤니티 및 유지 관리
- 이 프로젝트는 오픈 소스이며, Go 참조 및 코드 커버리지에 대한 CI 배지가 있습니다.
- 기여를 환영합니다; 지침은
CONTRIBUTING.md를 참조하세요. - 스폰서와 기여자는 README에 나열되어 있으며, 활발한 커뮤니티 지원을 나타냅니다.
위의 모든 정보는 저장소의 README에서 직접 가져온 것입니다; 외부 가정은 추가되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트