Show HN: OpenAI의 function calling을 이용한 오픈 소스 코드 검색
요약
OpenAI의 function calling과 벡터 임베딩을 활용하여 코드베이스를 탐색하고 질의할 수 있는 오픈 소스 도구인 gpt-code-assistant를 소개합니다. 로컬 파일 시스템과 통합되어 다양한 프로그래밍 언어를 지원하며, 개인정보 보호를 위해 필요한 코드 스니펫만 모델에 전송합니다.
핵심 포인트
- LLM과 벡터 임베딩을 통한 효율적인 코드 검색 및 이해
- 로컬 코드베이스와 직접 작동하는 파일 시스템 통합 기능
- 언어 불가지론적 설계로 다양한 프로그래밍 언어 지원
- 필요한 시점에만 코드 스니펫을 전송하는 개인정보 중심 설계

gpt-code-assistant는 거대 언어 모델 (LLMs) 및 벡터 임베딩 (vector embeddings, 텍스트와 같은 객체를 벡터로 변환하는 기술)을 사용하여 모든 코드베이스를 탐색, 질의 및 이해할 수 있는 AI 기반 오픈 소스 도구입니다.
LLM 기반 검색 및 검색 (Search & Retrieval): 효율적인 코드 검색, 검색 및 이해를 위해 언어 모델 (Language Models)을 사용합니다.
파일 시스템 통합 (File-system Integration): 모든 코드베이스와 작동하도록 설계되었으며 사용자의 머신에 있는 모든 로컬 코드와 직접 작동하여 기존 워크플로우와 원활하게 통합됩니다.
언어 불가지론 (Language Agnostic): 여러 프로그래밍 언어를 지원합니다.
개인정보 중심 설계 (Privacy-centric Design): 질문이 제기되고 언어 모델 (Language Model)이 관련 코드를 요청할 때만 코드 스니펫이 전송되어 개인정보를 보장합니다.
(참고: 코드 스니펫은 OpenAI와 공유됩니다)
향후 계획에는 로컬 모델 지원 및 코드 생성 기능이 포함됩니다.
pip install gpt-code-assistant
먼저, 모든 파일을 인덱싱할 프로젝트를 생성하십시오. 이 단계에는 각 파일에 대한 임베딩 (embeddings)을 생성하고 이를 로컬 데이터베이스에 저장하는 과정이 포함됩니다.
gpt-code-assistant create-project <project-name> <path-to-codebase>
gpt-code-assistant create-project gpt-code-assistant .
코드베이스의 목적에 대해 질의하려면 query 명령어를 사용할 수 있습니다:
gpt-code-assistant query <project-name> "What does this codebase do?"
특정 파일(예: analytics.py)에 대한 테스트를 생성하고 싶다면, 정확도를 높이기 위해 파일 이름을 언급할 수 있습니다:
gpt-code-assistant query gpt-code-assistant "Can you generate a test for analytics.py?"
analytics와 같은 특정 모듈에 대한 일반적인 사용 질문의 경우, 키워드를 사용하여 코드베이스 전체를 검색할 수 있습니다:
gpt-code-assistant query gpt-code-assistant "How do I use the analytics module?"
파일 이름이나 특정 키워드를 언급하면 검색 정확도가 향상된다는 점을 기억하세요.
모든 프로젝트 목록을 가져오려면:
gpt-code-assistant list-projects
프로젝트를 다시 인덱싱(reindex)하고 임베딩(embeddings)을 최신 콘텐츠로 업데이트하려면:
gpt-code-assistant refresh-project <project-name>
프로젝트와 해당 데이터(임베딩 포함)를 모두 삭제하려면:
gpt-code-assistant delete-project <project-name>
쿼리에 사용할 모델을 선택할 수 있습니다:
gpt-code-assistant select-model
기본값은 gpt-3.5-turbo-16k입니다.
선택된 모델은 $HOME/.gpt-code-assistant/config.toml에 저장됩니다.
아직 설정하지 않았다면, 도구가 OPENAI_API_KEY를 구성하도록 요청할 것입니다.
코드베이스를 검색하기 위해 GPT-4의 강력한 성능을 활용하고 싶지만, 코드 스니펫(code snippets)을 프롬프트에 수동으로 복사하여 붙여넣거나 (OpenAI 이외의) 다른 제3자 서비스로 코드를 보내고 싶지는 않을 것입니다. 이 도구는 GPT-4가 코드베이스 내에서 가장 관련 있는 코드 스니펫을 결정할 수 있게 함으로써 이러한 문제들을 해결합니다. 또한 별도의 UI 없이 터미널에서 직접 쿼리를 수행할 수 있게 해줍니다.
질문할 수 있는 질문 유형의 예시:
-
🐛 오류 디버깅(debugging) 및 관련 코드와 파일 찾기 지원
-
📝 마크다운(markdown) 형식으로 대용량 파일 또는 기능 문서화
-
🛠️ 기존 파일 및 컨벤션(conventions)을 기반으로 새로운 코드 생성
-
📨 코드베이스의 모든 부분에 대한 일반적인 질문하기
-
검색 및 검색(retrieval) 성능 향상을 위해 벡터 임베딩(vector embeddings) 사용
-
추가 모델(Claude, Bedrock 등) 지원 추가
-
로컬 모델(Llama2, Starcoder 등) 지원 추가
-
코드 생성 및 파일 저장 지원 추가
-
여러 코드베이스에 걸친 검색 지원
-
모델이 실행 가능한 새로운 함수를 생성할 수 있도록 허용
-
프롬프트 개선을 위해 가이던스(guidance) 사용
커뮤니티의 기여를 환영합니다! ❤️ 기여하고 싶다면 자유롭게 저장소(repository)를 포크(fork)하고 풀 리퀘스트(pull request)를 제출해 주세요.
더 자세한 단계와 정보는 행동 강령(Code of Conduct) 및 기여 가이드(Contributing Guide)를 읽어주시기 바랍니다.
우리는 환영받는 커뮤니티를 조성하기 위해 최선을 다하고 있습니다. 모든 기여자, 유지 관리자(maintainer), 그리고 이 프로젝트의 사용자가 준수해야 하는 행동 강령(Code of Conduct)을 마련하여 모두가 안전하고 환영받는다고 느낄 수 있도록 노력하고 있습니다.
gpt-code-assistant 사용에 어려움을 겪고 계신다면, 언제든지 저희 GitHub에 이슈(issue)를 생성해 주세요. 또한 narenkmanoharan@gmail.com으로 직접 연락해 주셔도 됩니다. 저희는 언제나 도움을 드릴 준비가 되어 있습니다!
여러분의 피드백은 저희에게 매우 중요합니다! gpt-code-assistant를 개선할 수 있는 아이디어가 있다면 기꺼이 듣고 싶습니다. 피드백이나 의견이 있다면 이슈를 생성하거나 narenkmanoharan@gmail.com으로 직접 연락해 주세요.
이 프로젝트는 Apache 2.0 라이선스 조건에 따라 라이선스가 부여됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기