An open API service indexing awesome lists of open source software.

https://github.com/rimo030/openai

๐Ÿ’ก OpenAI Study
https://github.com/rimo030/openai

nestjs openai websocket whisper

Last synced: about 2 months ago
JSON representation

๐Ÿ’ก OpenAI Study

Awesome Lists containing this project

README

          

# ๐Ÿ–ฅ๏ธ OpenAI

OpenAI API๋ฅผ ํ™œ์šฉํ•œ WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

- [ERD](./prisma/docs/ERD.md)


## ๐Ÿ“š ๊ธฐ์ˆ  ์Šคํƒ

| ๋ถ„๋ฅ˜ | ๊ธฐ์ˆ  ์Šคํƒ |
| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Language | [![](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=TypeScript&logoColor=white)]() |
| Backend | [![](https://img.shields.io/badge/Node.js-339933?style=flat-square&logo=Node.js&logoColor=white)]() [![](https://img.shields.io/badge/NestJS-E0234E?style=flat-square&logo=NestJS&logoColor=white)]() [![](https://img.shields.io/badge/Nestia-C21325?style=flat-square&logo=NestJS&logoColor=white)](https://nestia.io/) [![](https://img.shields.io/badge/Typia-3178C6?style=flat-square&logo=TypeScript&logoColor=white)](https://typia.io/) [![](https://img.shields.io/badge/Prisma-2D3748?style=flat-square&logo=Prisma&logoColor=white)]() |
| AI/ML | [![](https://img.shields.io/badge/OpenAI-412991?style=flat-square&logo=OpenAI&logoColor=white)]() |
| WebSocket | [![](https://img.shields.io/badge/TGrid-C21325?style=flat-square&logo=NestJS&logoColor=white)](https://github.com/samchon/tgrid) |
| DB | [![](https://img.shields.io/badge/Postgresql-4169E1?style=flat-square&logo=postgresql&logoColor=white)]() |
| Testing | [![](https://img.shields.io/badge/Nestia%20e2e%20Testing-C21325?style=flat-square&logo=NestJS&logoColor=white)](https://nestia.io/docs/sdk/e2e/) |
| DevOps | [![](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=Docker&logoColor=white)]() |


## ๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ

### ๐ŸŽค ์Œ์„ฑ ์ธ์‹ (STT)

- TGrid WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ-ํ…์ŠคํŠธ ๋ณ€ํ™˜
- OpenAI Whisper ๋ชจ๋ธ ์‚ฌ์šฉ
- ์„ธ๊ทธ๋จผํŠธ๋ณ„ ์ƒ์„ธ ์ •๋ณด DB ์ €์žฅ (์‹œ์ž‘/์ข…๋ฃŒ ์‹œ๊ฐ„, ์‹ ๋ขฐ๋„, ์••์ถ• ๋น„์œจ ๋“ฑ)

### ๐Ÿ’ฌ ์ฑ„ํŒ…

- TGrid WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…
- ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต ์ง€์›
- ์ผ๋ฐ˜ ์‘๋‹ต ๋ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต ๋ชจ๋‘ ์ œ๊ณต

### ๐Ÿ“ ํŒŒ์ผ ๊ด€๋ฆฌ

- OpenAI Files API ์—ฐ๋™
- ํŒŒ์ผ ์—…๋กœ๋“œ (base64 ์ธ์ฝ”๋”ฉ ์ง€์›)
- ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ (purpose๋ณ„ ํ•„ํ„ฐ๋ง)
- Assistants, Fine-tuning ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„ ์ง€์›

### ๐Ÿ—‚๏ธ Vector Store

- Vector Store ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
- ํŒŒ์ผ ์ถ”๊ฐ€/์‚ญ์ œ ๊ธฐ๋Šฅ
- Vector Store ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
- Vector Store๋ณ„ ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
- Vector Store ์‚ญ์ œ

### ๐Ÿค– RAG (Responses API)

- OpenAI Responses API๋ฅผ ํ™œ์šฉํ•œ RAG ๊ตฌํ˜„
- Vector Store ๊ธฐ๋ฐ˜ ๋ฌธ์„œ ๊ฒ€์ƒ‰ ๋ฐ ์‘๋‹ต ์ƒ์„ฑ
- ๋‹ค์ค‘ Vector Store ์ง€์›

### ๐Ÿ“Š ๋ชจ๋‹ˆํ„ฐ๋ง

- ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋น„์šฉ ์ถ”์ 


## ๐Ÿ› ๏ธ ํ”„๋กœ์ ํŠธ ์‹คํ–‰

๋กœ์ปฌ์—์„œ ์•„๋ž˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

### 1. ์„ค์น˜

```sh
git clone https://github.com/rimo030/whisper.git
```

```sh
cd whisper
```

```sh
npm i
```


### 2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

`.env.example` ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•ด `.env` ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŒŒ์ผ ์„ธํŒ…


### 3. ๋กœ์ปฌ DB ์ƒ์„ฑ

docker-compose๋ฅผ ์ด์šฉํ•ด PostgreSQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

```sh
docker compose up -d
```


### 4. DB ์Šคํ‚ค๋งˆ ์ƒ์„ฑ

Prisma๋ฅผ ์ด์šฉํ•ด ์Šคํ‚ค๋งˆ๋ฅผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

```sh
npx prisma db push
```


### 5. ์„œ๋ฒ„ ์‹คํ–‰

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

```sh
# ๊ฐœ๋ฐœ ๋ชจ๋“œ
npm run start:dev

# ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ
npm run start
```


## ๐Ÿ› ๏ธ Prisma ๋ช…๋ น์–ด

ORM์œผ๋กœ Prisma๋ฅผ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

- DB ์Šคํ‚ค๋งˆ ๋™๊ธฐํ™”

```sh
npx prisma db push

# DB ์ดˆ๊ธฐํ™”
npx prisma db push --force-reset
```

- Prisma Client ์ƒ์„ฑ

```sh
npx prisma generate
```


## โฐ ํ…Œ์ŠคํŒ…

๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

### 1. Nestia SDK ์ƒ์„ฑ

```sh
npm run build:sdk
```


### 2. ํ…Œ์ŠคํŠธ ๋นŒ๋“œ

```sh
npm run build:test
```


### 3. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹คํ–‰

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” [/test](./test)์— ์ž‘์„ฑ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

```sh
npm run test
```


## ๐Ÿ“ก API ์‚ฌ์šฉ๋ฒ•

### WebSocket ์—ฐ๊ฒฐ

```typescript
import { IConnection } from '@nestia/fetcher';
import { test_api_web_socket_connect } from './test/features/web-sockets/test_api_web_socket_connect';

const connection: IConnection = {
host: 'localhost:3000',
};

const { connector, driver } = await test_api_web_socket_connect(connection);
```