GithubSearchTool

도구를 계속 개선 중이므로 예상치 못한 동작이나 변경 사항이 발생할 수 있습니다.

설명

GithubSearchTool은 GitHub 저장소 내에서 의미 기반 검색을 수행하도록 특별히 설계된 RAG(Retrieval-Augmented Generation) 도구이다. 이 도구는 고급 의미 검색 기능을 활용해 코드, 풀 리퀘스트, 이슈, 저장소를 탐색한다. 따라서 개발자, 연구자, GitHub에서 정확한 정보를 필요로 하는 모든 이에게 필수적인 도구로 자리 잡고 있다.

설치

GithubSearchTool을 사용하려면 먼저 Python 환경에 crewai_tools 패키지가 설치되어 있는지 확인한다:

pip install 'crewai[tools]'

이 명령어는 GithubSearchTool을 실행하는 데 필요한 패키지와 crewai_tools 패키지에 포함된 다른 도구들을 함께 설치한다.

예제

GithubSearchTool을 사용해 GitHub 리포지토리 내에서 의미론적 검색을 수행하는 방법은 다음과 같다:

from crewai_tools import GithubSearchTool

# 특정 GitHub 리포지토리 내에서 의미론적 검색을 위해 도구 초기화
tool = GithubSearchTool(
	github_repo='https://github.com/example/repo',
	gh_token='your_github_personal_access_token',
	content_types=['code', 'issue'] # 옵션: code, repo, pr, issue
)

# 또는

# 실행 중에 알게 된 모든 리포지토리를 검색할 수 있도록 도구 초기화
tool = GithubSearchTool(
	gh_token='your_github_personal_access_token',
	content_types=['code', 'issue'] # 옵션: code, repo, pr, issue
)

인자

  • github_repo: 검색을 수행할 GitHub 저장소의 URL. 필수 필드이며, 검색 대상 저장소를 지정한다.
  • gh_token: 인증에 필요한 GitHub Personal Access Token (PAT). GitHub 계정 설정에서 Developer Settings > Personal Access Tokens에서 생성할 수 있다.
  • content_types: 검색에 포함할 콘텐츠 타입을 지정한다. 다음 옵션 중에서 리스트 형태로 제공해야 한다: 코드 내 검색을 위한 code, 저장소 일반 정보 검색을 위한 repo, 풀 리퀘스트 검색을 위한 pr, 이슈 검색을 위한 issue. 이 필드는 필수이며, GitHub 저장소 내 특정 콘텐츠 타입에 맞춰 검색을 조정할 수 있다.

커스텀 모델과 임베딩

기본적으로 이 도구는 임베딩과 요약 모두에 OpenAI를 사용한다. 모델을 커스터마이징하려면 다음과 같이 설정 딕셔너리를 활용할 수 있다:

tool = GithubSearchTool(
    config=dict(
        llm=dict(
            provider="ollama", # 또는 google, openai, anthropic, llama2, ...
            config=dict(
                model="llama2",
                # temperature=0.5,
                # top_p=1,
                # stream=true,
            ),
        ),
        embedder=dict(
            provider="google", # 또는 openai, ollama, ...
            config=dict(
                model="models/embedding-001",
                task_type="retrieval_document",
                # title="Embeddings",
            ),
        ),
    )
)