Curiosity: Perplexity와 유사한 사용자 경험 제공을 목표로 하는 ReAct 기반 Chatbot 프로젝트

Curiosity: Perplexity와 유사한 사용자 경험 제공을 목표로 하는 ReAct 기반 Chatbot 프로젝트

Curiosity 소개

Curiosity 프로젝트는 LangGraphFastHTML을 활용하여 ReAct 에이전트를 기반으로 한 챗봇을 구현하기 위한 개인 연구 프로젝트입니다. 주된 목표는 Perplexity와 유사한 사용자 경험을 제공하는 것입니다. Curiosity 프로젝트의 핵심은 Tavily 검색 엔진을 활용하여 텍스트 생성 능력을 강화한 간단한 ReAct 에이전트를 구현하는 것입니다. 특히, 사용자 인터페이스와 상호작용 측면에서 시각적으로도 안정적인 디자인을 만드는 데 많은 시간이 소요되었습니다.

Curiosity 프로젝트에서는 세 가지의 LLM(대규모 언어 모델)이 지원합니다:

  • gpt-4o-mini: OpenAI에서 제공하는 모델로, 도구 호출 성능이 우수하고 의미 있는 응답을 생성하는 데 적합합니다.
  • llama3-groq-8b-8192-tool-use-preview: Groq에서 제공하는 모델로, API 키 활성화가 완료된 후 매우 빠른 생성 속도를 보여주지만 gpt-4o보다는 성능이 떨어집니다.
  • llama3.1: Ollama에서 제공하며, Mac mini M1에서 직접 실행할 수 있는 모델입니다. 그러나 로컬에서 실행할 경우 성능이 제한됩니다.


Curiosity의 프론트엔드는 FastHTML을 사용해 개발되었습니다. 이 프레임워크를 통해 속도 면에서 우수한 경험을 제공할 수 있었으나, 디버깅 시 WebSocket 연결 문제와 같은 문제가 발생하기도 했습니다. WebSocket을 사용해 LLM으로부터 생성된 토큰을 실시간으로 스트리밍하려 했으나, LangGraphSQLite의 지속성 문제로 인해 구현이 어려웠습니다.

Curiosity의 주요 기능

  • ReAct 에이전트를 활용한 사용자 질문에 대한 텍스트 생성 및 검색 기능 통합
  • 다양한 LLM 지원: OpenAI의 gpt-4o-mini, Groq의 llama3-groq-8b, Ollama의 llama3.1
  • FastHTML을 이용한 웹 프론트엔드 개발
  • LangGraph와 SQLite를 이용한 데이터 지속성 관리

Curiosity 설치 및 사용법

  1. Curiosity 저장소를 클론합니다:
    git clone https://github.com/jank/curiosity
  2. Python3을 설치한 후 가상환경을 설정하고 requirements.txt를 설치합니다:
    pip install -r requirements.txt
  3. .env 파일을 생성하고 다음과 같은 API 키를 설정합니다:
  # OpenAI - https://platform.openai.com/playground/chat
  OPENAI_API_KEY=<key>
  # Groq - https://console.groq.com
  GROQ_API_KEY=<key>
  # Tavily Search - https://app.tavily.com
  TAVILY_API_KEY=<key>
  # LangSmith - https://smith.langchain.com
  LANGCHAIN_TRACING_V2=true
  LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
  LANGSMITH_API_KEY=<key>
  LANGCHAIN_PROJECT="Curiosity"
  ```

4. `python curiosity.py` 명령어로 서버를 실행합니다.

## :github: Curiosity GitHub 저장소

https://github.com/jank/curiosity


<br /><br />

---

*이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.* 🤗

[:pytorch:파이토치 한국 사용자 모임🇰🇷](https://pytorch.kr/)이 정리한 이 글이 유용하셨나요? [회원으로 가입](https://discuss.pytorch.kr/signup)하시면 주요 글들을 이메일💌로 보내드립니다! (기본은 Weekly지만 [Daily로 변경도 가능](https://discuss.pytorch.kr/my/preferences/emails)합니다.)

🎁 아래↘️쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ 🤩