{"id":31484254,"url":"https://github.com/rimo030/openai","last_synced_at":"2026-04-29T22:42:08.811Z","repository":{"id":317146767,"uuid":"1063152556","full_name":"rimo030/openai","owner":"rimo030","description":"💡 OpenAI Study","archived":false,"fork":false,"pushed_at":"2025-09-29T05:37:10.000Z","size":156,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-29T07:16:52.144Z","etag":null,"topics":["nestjs","openai","websocket","whisper"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rimo030.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-24T08:33:47.000Z","updated_at":"2025-09-29T05:46:17.000Z","dependencies_parsed_at":"2025-09-29T07:16:59.904Z","dependency_job_id":"b8903462-4506-44f8-8b24-4ded9e88a94d","html_url":"https://github.com/rimo030/openai","commit_stats":null,"previous_names":["rimo030/whisper"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/rimo030/openai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimo030%2Fopenai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimo030%2Fopenai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimo030%2Fopenai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimo030%2Fopenai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rimo030","download_url":"https://codeload.github.com/rimo030/openai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimo030%2Fopenai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277987456,"owners_count":25910597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-02T02:00:08.890Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nestjs","openai","websocket","whisper"],"created_at":"2025-10-02T09:57:26.615Z","updated_at":"2025-10-02T09:57:27.565Z","avatar_url":"https://github.com/rimo030.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🖥️ OpenAI\n\nOpenAI API를 활용한 WebSocket 기반 실시간 통신 서버입니다.\n\n- [ERD](./prisma/docs/ERD.md)\n\n\u003cbr\u003e\n\n## 📚 기술 스택\n\n| 분류      | 기술 스택                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Language  | [![](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square\u0026logo=TypeScript\u0026logoColor=white)]()                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| Backend   | [![](https://img.shields.io/badge/Node.js-339933?style=flat-square\u0026logo=Node.js\u0026logoColor=white)]() [![](https://img.shields.io/badge/NestJS-E0234E?style=flat-square\u0026logo=NestJS\u0026logoColor=white)]() [![](https://img.shields.io/badge/Nestia-C21325?style=flat-square\u0026logo=NestJS\u0026logoColor=white)](https://nestia.io/) [![](https://img.shields.io/badge/Typia-3178C6?style=flat-square\u0026logo=TypeScript\u0026logoColor=white)](https://typia.io/) [![](https://img.shields.io/badge/Prisma-2D3748?style=flat-square\u0026logo=Prisma\u0026logoColor=white)]() |\n| AI/ML     | [![](https://img.shields.io/badge/OpenAI-412991?style=flat-square\u0026logo=OpenAI\u0026logoColor=white)]()                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| WebSocket | [![](https://img.shields.io/badge/TGrid-C21325?style=flat-square\u0026logo=NestJS\u0026logoColor=white)](https://github.com/samchon/tgrid)                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| DB        | [![](https://img.shields.io/badge/Postgresql-4169E1?style=flat-square\u0026logo=postgresql\u0026logoColor=white)]()                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| Testing   | [![](https://img.shields.io/badge/Nestia%20e2e%20Testing-C21325?style=flat-square\u0026logo=NestJS\u0026logoColor=white)](https://nestia.io/docs/sdk/e2e/)                                                                                                                                                                                                                                                                                                                                                                                                  |\n| DevOps    | [![](https://img.shields.io/badge/Docker-2496ED?style=flat-square\u0026logo=Docker\u0026logoColor=white)]()                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n\n\u003cbr\u003e\n\n## 🎯 주요 기능\n\n### 🎤 음성 인식 (STT)\n\n- TGrid WebSocket 기반 실시간 음성-텍스트 변환\n- OpenAI Whisper 모델 사용\n- 세그먼트별 상세 정보 DB 저장 (시작/종료 시간, 신뢰도, 압축 비율 등)\n\n### 💬 채팅\n\n- TGrid WebSocket 기반 실시간 채팅\n- 스트리밍 응답 지원\n- 일반 응답 및 스트리밍 응답 모두 제공\n\n### 📁 파일 관리\n\n- OpenAI Files API 연동\n- 파일 업로드 (base64 인코딩 지원)\n- 파일 리스트 조회 (purpose별 필터링)\n- Assistants, Fine-tuning 등 다양한 용도 지원\n\n### 🗂️ Vector Store\n\n- Vector Store 생성 및 관리\n- 파일 추가/삭제 기능\n- Vector Store 리스트 조회\n- Vector Store별 파일 리스트 조회\n- Vector Store 삭제\n\n### 🤖 RAG (Responses API)\n\n- OpenAI Responses API를 활용한 RAG 구현\n- Vector Store 기반 문서 검색 및 응답 생성\n- 다중 Vector Store 지원\n\n### 📊 모니터링\n\n- 토큰 사용량 및 비용 추적\n\n\u003cbr\u003e\n\n## 🛠️ 프로젝트 실행\n\n로컬에서 아래 방법으로 서버를 실행시킬 수 있습니다.\n\n### 1. 설치\n\n```sh\ngit clone https://github.com/rimo030/whisper.git\n```\n\n```sh\ncd whisper\n```\n\n```sh\nnpm i\n```\n\n\u003cbr\u003e\n\n### 2. 환경 변수 설정\n\n`.env.example` 파일을 참고해 `.env` 환경 변수 파일 세팅\n\n\u003cbr\u003e\n\n### 3. 로컬 DB 생성\n\ndocker-compose를 이용해 PostgreSQL 컨테이너를 생성합니다.\n\n```sh\ndocker compose up -d\n```\n\n\u003cbr\u003e\n\n### 4. DB 스키마 생성\n\nPrisma를 이용해 스키마를 동기화합니다.\n\n```sh\nnpx prisma db push\n```\n\n\u003cbr\u003e\n\n### 5. 서버 실행\n\n아래 명령어로 로컬 서버를 실행시킬 수 있습니다.\n\n```sh\n# 개발 모드\nnpm run start:dev\n\n# 프로덕션 모드\nnpm run start\n```\n\n\u003cbr\u003e\n\n## 🛠️ Prisma 명령어\n\nORM으로 Prisma를 채택하고 있습니다.\n\n- DB 스키마 동기화\n\n```sh\nnpx prisma db push\n\n# DB 초기화\nnpx prisma db push --force-reset\n```\n\n- Prisma Client 생성\n\n```sh\nnpx prisma generate\n```\n\n\u003cbr\u003e\n\n## ⏰ 테스팅\n\n로컬에서 테스트 코드를 실행할 수 있습니다.\n\n### 1. Nestia SDK 생성\n\n```sh\nnpm run build:sdk\n```\n\n\u003cbr\u003e\n\n### 2. 테스트 빌드\n\n```sh\nnpm run build:test\n```\n\n\u003cbr\u003e\n\n### 3. 테스트 코드 실행\n\n테스트 코드는 [/test](./test)에 작성되고 있습니다.\n\n```sh\nnpm run test\n```\n\n\u003cbr\u003e\n\n## 📡 API 사용법\n\n### WebSocket 연결\n\n```typescript\nimport { IConnection } from '@nestia/fetcher';\nimport { test_api_web_socket_connect } from './test/features/web-sockets/test_api_web_socket_connect';\n\nconst connection: IConnection = {\n  host: 'localhost:3000',\n};\n\nconst { connector, driver } = await test_api_web_socket_connect(connection);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frimo030%2Fopenai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frimo030%2Fopenai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frimo030%2Fopenai/lists"}