Skip to content

Jungjihyuk/ringchat

 
 

Repository files navigation

Ringchat 🤖 is a URL-powered 🔗 chatbot service.

"RingChat" is a portmanteau of "Ring" and "Chatbot". The "Ring" symbolizes the connection between the document contained within the URL link, the chatbot, and the user. In Korean, the first syllables of "Ring" and "link" are the same, allowing for a natural association. Additionally, "Ring" evokes the image of a ring, implying reliability in the answers provided by RingChat.

RingChat🤖 Key Features

1️⃣ Recommend Links along with 3 metrics

  • Score
  • Times attached
  • Total number of bookmark

2️⃣ Customized document analysis

3️⃣ Organize scattered answers

Features

login   chatroom

link   message

Service architecture


This section provides an overview of the project's core components. Each tech stack is accompanied by a discussion of its benefits, drawbacks, and the specific reasons for its inclusion in this project.


Technology Why We Chose It Benefits Drawbacks/Limitations
Docker Consistency in the development environment and rapid deployment Resolving library dependency issues that arise in different development environments.
Easy scalability during deployment.
Complexity of container image management.
If not familiar with Docker, it can lead to potential delays in development time
FastAPI High development productivity because it supports automatic documentation and asynchronous processing when developing API.
Easily fulfills the essential requirements for this project
Asynchronous processing support
Efficient use of resources
Swagger support
Easy data validation using Pydantic
Requires learning about asynchronous programming.
Community size is small compared to flask
Langchain This project aims to overcome the limitations of existing LLMs. Langchain, one of the most popular and intuitive frameworks that facilitates in-context learning, is a natural choice for achieving this goal. It's easy to extend various functions with support for a wide range of tools.
Development is relatively easy with an intuitive API.
The high level of abstraction can make fine-grained control difficult.
Since it's a relatively new framework, there might be challenges in acquiring information and a higher likelihood of encountering bugs
Next.js The only person on the team who handles frontend development is proficient in Next.js. SSR, SSG support
Improved search engine optimization
Active community
For pages where data changes frequently, SSR can cause performance degradation as the server needs to render the page every time it's requested.
Understanding React is necessary, which can create a barrier to entry.
Oracle 23ai It supports Vector columns, enabling similarity search within the database. Similarity search was expected to be frequently used for URL recommendations in this project. Direct AI model execution within the DB.
AI Vector Search support.
Enhanced security with SQL Firewall
Relatively high licensing fees
There is a barrier to entry as it is more difficult to handle than other DBs.
Relatively little reference material
OpenAI The gpt-4o-mini model offers good performance at a relatively low credit cost.
Once the charged credits are exhausted, no additional charges will occur.
Code-related answers are superior compared to Gemini
Answers are less likely to be truncated in the middle
Decent performance for the cost
The maximum token limit is lower compared to Gemini
Multimodal processing capabilities are less developed compared to Gemini
OCI free tier Because it provides two free VMs, each with an AMD CPU and 1GB of RAM. Two VM instance free forever
No worries about additional charges
The resources provided are inadequate for running actual services, therefore requiring an additional charge.

Documentation

Get Started
  1. Clone repo
  2. Set .env & .env.local files
  3. Place the wallet folder
  4. Run the containers

Clone repo

git clone https://github.com/Rimember/ringchat.git  # clone

Set .env & .env.local

# create .env file
cd ringchat/backend

echo "# API 
OPENAI_API_KEY = \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"

# oracle
DB_USER = \"USER_NAME\"
DB_PWD = \"PASSWORD\"
DB_DSN = \"DATA_SOURCE_NAME\"
DB_CONFIG_DIR = \"WALLET_FOLDER_PATH\"
DB_WALLET_LOCATION = \"WALLET_FOLDER_PATH\"
DB_WALLET_PWD = \"WALLET_PASSWORD\"" > .env
# create .env.local file
cd ringchat/frontend

echo "NEXT_PUBLIC_API_URL=http://backend:8000/api/v0" > .env.local 

Place the wallet folder

mv WALLET_FOLDER_PATH ringchat/backend 

Run the containers

cd ringchat 

docker compose up 
API Document
Database ERD

Contributors ✨

Thanks goes to these wonderful people


강동훈

🛠️

선경은

🛠️

이찬호

🛠️

임승원

🛠️

정지혁

🛠️

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 63.1%
  • TypeScript 32.0%
  • CSS 3.5%
  • Dockerfile 1.2%
  • JavaScript 0.2%