프로젝트 개요
- NestJS를 기반으로 한 AI 챗봇 프로젝트
- Grok AI를 활용한 자연스러운 대화 처리
- Warudo를 통한 실시간 동작 제어
- WebSocket을 활용한 양방향 통신
기술 스택
- NestJS: Node.js 기반의 서버 프레임워크
- Grok AI: x.ai에서 제공하는 대화형 AI 모델
- Warudo: WebSocket 기반의 실시간 동작 제어 시스템
- WebSocket: 실시간 양방향 통신 프로토콜
AI API 설정
constructor(
private configService: ConfigService,
private warudoService: WarudoService,
) {
const grokApiKey = this.configService.get<string>('GROK_API_KEY');
this.grokClient = new OpenAI({
apiKey: grokApiKey,
baseURL: 'https://api.x.ai/v1',
});
}
채팅 시스템 구현
/* chatbot.service.ts - 챗봇 채팅 로직 */
async chat(userMessage: string) {
this.conversationHistory.push({
role: 'user',
content: userMessage,
});
const responseLLM = await this.getLLMResponse(this.conversationHistory);
// 형식에 따른 응답 처리 및 Warudo 메시지 전송
}
/* warudo.service.ts - 와루도 채팅 */
sendMessageToWarudo(message: string) {
if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {
this.webSocket.send(message);
}
}
테스트
Insomnia?
REST API 및 GraphQL API 테스트를 위한 도구. 쉽게 말해, API 개발 및 디버깅을 도와주는 클라이언트 프로그램이다.
왜 사용하는가?
- API 테스트 편리성
- 백엔드에서 만든 API를 직접 호출해서 요청(Request)과 응답(Response)을 확인 가능.
- GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 쉽게 테스트 가능.
- 인증(Authentication) 테스트 지원
- JWT 토큰, OAuth, Basic Auth 등 다양한 인증 방식을 적용해서 API를 호출 가능.
- 요청 데이터 저장 및 관리
- API 요청을 여러 개 저장하고 필요할 때 다시 실행 가능.
- 프로젝트별로 요청을 정리해서 관리 가능.
- GraphQL 지원
- GraphQL API를 테스트할 때도 사용 가능.
- 환경 변수 설정 가능
- 개발, 스테이징, 운영 등 환경별로 API 엔드포인트(URL)를 쉽게 전환 가능.
- 빠른 응답 확인 및 디버깅
- API 응답을 JSON, XML, HTML 등 다양한 형식으로 볼 수 있어서 디버깅이 쉬움.
Insomnia vs Postman
비슷한 기능을 하는 툴로 Postman도 있지만, Insomnia가 더 가볍고 UI가 단순해서 빠르게 테스트하기 좋다. 반면 Postman은 협업 기능이 강하고 다양한 플러그인을 제공한다.
테스트 결과
입력)
{
"message": "이름이 뭐야?"
}
출력)
{
"message": "나 까먹었어? 나 벨라잖아!",
"isPaid": false
}
warudo 프로그램에서 채팅에 따라 입모양 변화나 포즈 또한 변하지만, 저작권 문제로 이 정도까지만 알아보도록 하자!

'Side Projects' 카테고리의 다른 글
NestJS로 warudo 연결하기 (0) | 2025.03.17 |
---|---|
Node.js에서 OAuth 2.0으로 소셜 로그인 구현하기 (0) | 2025.03.10 |
Node.js로 구현하는 AI 챗봇 비교 분석: Gemini vs Grok vs OpenAI (0) | 2025.03.05 |
체스말 이동하기 로직 (0) | 2025.02.21 |
채팅 시스템 성능 향상시키기 (0) | 2025.02.18 |