이 프로젝트는 대형 언어 모델 기능을 활용하여 코딩을 지원하는 것을 목표로합니다.
시스템에는 클라이언트 및 서버가 포함됩니다. 클라이언트 측에는 스 니펫 관리, 기본 챗봇 인터페이스, 모델 선택, 쿼리 또는 피드백 모드 선택 등 다양한 흥미로운 기능이 있습니다. 서버 측에서 쿼리 / 피드백의 논리가 구현되고, Fathermore, FastApi는 ChatGpt API와 상호 작용하는 데 사용됩니다.

- Fastapi 또는 Flask를 사용하여 사용자 친화적 인 웹 인터페이스를 개발하여 사용자가 코딩 문제에 대한 설명을 입력하도록 유도하십시오.
- 인터페이스는 LLM과 상호 작용하여 사용자의 입력에 따라 해당 코드 스 니펫을 생성해야합니다.
프론트 엔드는 chatgpt ui에서 겨냥합니다. WebSocket을 사용하여 백엔드와 상호 작용합니다. 자세한 내용에 따르면 프론트 엔드는 사용자 쿼리를 가져 와서 WebSocket을 통해 서버로 전송합니다. 서버는 Fastapi 스트리밍 모드로 Chatgpt에서 결과를 얻은 다음 클라이언트로 전달됩니다.
- 사용자가 생성 된 코드 스 니펫에 대한 피드백을 제공 할 수있는 Featuare를 통합하십시오.
- 이 피드백을 활용하여 미래 세대를 개선하십시오.
여기에는 두 가지 옵션 쿼리 모드와 피드백 모드가 있습니다. 쿼리 모드에서는 코딩 프롬프트가 사슬의 프롬프트 기술에 의해 사용됩니다. 피드백 모드에서 피드백 프롬프트는 소수의 프롬프트 기술을 통해 사용자의 부정적인 피드백을 개선하는 데 사용됩니다 (파일 server/prompts.py 참조).
두 모드를 전환하려면 다음과 같은 옵션을 선택할 수 있습니다. 
- 로컬 또는 GPU 서버에서 사용자 정의 LLM을 실행하고 활용하기위한 스크립트를 개발하십시오.
custom_llm 폴더에는 vllm 의 Custom LLM을 실행하는 스크립트가 있습니다. URL을 UI에 입력하고 저장을 클릭 할 수 있습니다. 
또한 입력 텍스트 상자 아래의 옵션에서 원하는 모델을 선택할 수 있습니다. 
- 응용 프로그램을 컨테이너로 구축하고 실행하는 데 대한 지침과 함께 dockerfile을 제공하십시오.
이 프로젝트는 DockerFile의 건축 서비스를 지원합니다. 클라이언트 웹 페이지 Docker 컨테이너를 실행하려면 실행 :
cd client/
sudo docker build -t code-supporter-client:latest .
sudo docker run -d -p 8000:80 code-supporter-client:latest
반면에 Server Docker 컨테이너를 다음과 같이 실행하십시오.
cd server/
sudo docker build -t code-supporter-server:latest .
sudo docker run -p 7999:80 -e OPENAI_API_KEY=sk-... code-supporter-server:latest
단순화하려면 하나의 명령만으로 클라이언트와 서버를 실행할 수 있습니다 ( docker-compose.yml 에서 OPENAI_API_KEY 변경하십시오) :
sudo docker compose up
결국 URL http://localhost:8000/ 브라우저에서 채팅을 시작하십시오!
- 동일한 인터페이스 내에서 기능을 구현하여 이전에 생성 된 코드 스 니펫 목록을 표시합니다.
- 사용자는이 스 니펫을보고, 검토 및 삭제할 수 있어야합니다.
클라이언트 측은 클라이언트의 localStorage 사용되는 스 니펫 관리를 구현합니다. 자세한 내용에 따르면 localStorage 는 Key가 conversation_id 인 사전입니다. 값은 여러 회전으로 대화입니다. 대화의 예 :

client 및 server 두 가지 기본 폴더가 있습니다. 첫 번째에는 Code Supporter 웹 페이지를 렌더링하기위한 HTML/CSS/JavaScript 코드가 포함되어 있지만 나중에 Python으로 작성된 서버 코드가 포함되어 있습니다.
client 폴더에서 가장 중요한 코드는 js/chat.js 파일입니다. 여기서 server 폴더에서 서버/클라이언트 반복의 논리를 처리합니다.
apps.py : Serving Fastapirouters : Fastapi WebSocket 요청을 처리하고 클라이언트 측과의 반복prompts.py : 프롬프트를 선언합니다utils.py : 일부지지 기능