이 개념 증명의 목적은 사용자가 Alkemio 관련 주제에 참여할 수 있는 다재다능하고 안정적이며 직관적인 챗봇을 만드는 데 필요한 것이 무엇인지 평가하는 것입니다. 이 프로젝트는 있는 그대로 배포할 수는 없지만 생성 AI 기능을 보여주고 이 기능을 플랫폼에 포함하는 데 필요한 것이 무엇인지 평가하는 데 도움이 되는 귀중한 입력 역할을 해야 합니다.
LLM(대형 언어 모델)은 최근 기간 동안 크게 개선되었지만 유비쿼터스적이지도 않고 성능도 좋지 않습니다. 이는 다양한 영역에서 사용할 수 있는 많은 가능성을 열어줍니다. OpenAI는 가장 잘 알려진 상업용 LLM 제공업체이지만 상업용 또는 오픈 소스 등 LLM 모델에 대한 선택의 폭이 넓습니다. 이는 옵션을 제공하지만 공급자 종속의 위험도 발생합니다.
LLM은 생성 AI 솔루션을 실제로 구현하는 데 필요한 하나의 구성 요소일 뿐이며 다른 많은 '구성 요소'도 필요합니다. Langchain은 이러한 빌딩 블록을 제공하고 추상화 계층을 생성하여 공급자 독립성을 생성하는 인기 있는 오픈 소스 라이브러리입니다.
LLM 교육은 대부분의 조직에서 엄청나게 비용이 많이 들지만, 대부분의 실제 구현에서는 조직별 데이터를 통합해야 합니다. 일반적인 접근 방식은 LLM에 제출된 프롬프트에 사용자 질문에 대한 특정 컨텍스트를 추가하는 것입니다. LLM은 일반적으로 제한된 크기(일반적으로 약 4,000개 토큰)의 프롬프트만 허용하므로 이는 문제가 됩니다. 따라서 관련 상황별 정보를 제공하는 것이 중요하며 이를 위해 다음을 수행해야 합니다.
이 프로젝트는 많은 기사에서 영감을 얻었지만 이론적이고 실용적입니다. 코드 베이스의 상당 부분은 Building an AWS Well-Architected Chatbot with LangChain 프로젝트에서 나옵니다.
프로젝트는 RabbitMQ RPC를 사용하여 컨테이너 기반 마이크로서비스로 구현되었습니다. RabbitMQ 대기열이 하나 있습니다.
alkemio-virtual-contributor-engine-guidance
- 마이크로서비스에 요청을 제출하기 위한 대기열요청 페이로드는 다음 구조의 json으로 구성됩니다(쿼리의 예).
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
작업 유형은 다음과 같습니다.
ingest
: Alkemio 재단 웹사이트(Github 소스를 통해)에서 데이터를 수집하고 OpenAI Ada 텍스트 모델을 사용하여 임베딩하며 추가 요청 데이터는 없습니다.reset
: 진행 중인 채팅의 채팅 기록을 재설정합니다. userId가 필요합니다.query
: 채팅 순서에 다음 질문을 게시합니다. 예를 참조하세요.응답은 이름이 지정되지 않은 자동 생성된 독점 대기열에 게시됩니다.
모델의 상호 작용 언어에 대한 구현 초안이 있습니다(상당한 개선이 필요함). 언어 코드를 지정하지 않으면 영어로 간주됩니다. 선택 사항은 다음과 같습니다: 'EN': '영어', 'US': '영어', 'UK': '영어', 'FR': '프랑스어', 'DE': '독일어', 'ES': '스페인어' , 'NL': '네덜란드어', 'BG': '불가리아어', 'UA': "우크라이나어"
*참고: https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api에는 이전(오래된) RESTful 구현이 있습니다.
다음 명령을 사용하여 Docker CLI에서 컨테이너를 빌드할 수 있습니다(기본 아키텍처는 amd64이므로 amd64 빌드의 경우 --build-arg ARCHITECTURE=arm64
): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Dockerfile에는 자체 설명이 가능한 몇 가지 구성 인수가 있습니다.
다음 명령을 사용하여 Docker CLI에서 컨테이너를 시작할 수 있습니다. docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
여기서 .env
.azure-template.env
기반으로 합니다. 또는 docker-compose up -d
사용합니다.
와 함께:
AZURE_OPENAI_API_KEY
: 유효한 OpenAI API 키OPENAI_API_VERSION
: 유효한 Azure OpenAI 버전입니다. 글을 쓰는 시점에서 최신 날짜는 2023-05-15
입니다.AZURE_OPENAI_ENDPOINT
: 유효한 Azure OpenAI 기본 URL(예 https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: RabbitMQ 호스트 이름RABBITMQ_USER
: RabbitMQ 사용자RABBITMQ_PASSWORD
: RabbitMQ 비밀번호AI_MODEL_TEMPERATURE
: 모델의 temperature
, 0과 1 사이의 값을 사용합니다. 1은 더 무작위적인 답변을 의미하고, 0에 가까울수록 더 엄격한 답변을 의미합니다.LLM_DEPLOYMENT_NAME
: Azure의 AI gpt 모델 배포 이름EMBEDDINGS_DEPLOYMENT_NAME
: Azure의 AI 임베딩 모델 배포 이름AI_SOURCE_WEBSITE
: 소스 데이터가 포함된 재단 웹사이트의 URL (참고용)AI_SOURCE_WEBSITE2
: 소스 데이터가 포함된 환영 웹사이트의 URL(참고용)AI_LOCAL_PATH
: 데이터를 저장하기 위한 로컬 파일 경로AI_WEBSITE_REPO
: Hugo를 기반으로 하는 재단 웹사이트 소스 데이터가 포함된 Git 저장소의 URL(https 제외)AI_WEBSITE_REPO2
: Hugo 기반의 환영 웹사이트 소스 데이터가 포함된 Git 저장소의 URL - https 없음AI_GITHUB_USER
: 웹 사이트 저장소 복제에 사용되는 Github 사용자AI_GITHUB_PAT
: 웹사이트 저장소 복제를 위한 개인 액세스 토큰LANGCHAIN_TRACING_V2
: Langchain 추적 활성화LANGCHAIN_ENDPOINT
: Langchain 추적 끝점(예: "https://api.smith.langchain.com")LANGCHAIN_API_KEY
: Langchain 추적 API 키LANGCHAIN_PROJECT
: Langchain 추적 프로젝트 이름(예: "virtual-contributor-engine-guidance") .azure-template.env
에서 샘플 값을 찾을 수 있습니다. 이를 구성하고 업데이트된 설정으로 .env
파일을 만듭니다.
이 프로젝트에는 Python & Poetry가 설치되어 있어야 합니다. 최소 버전 종속성은 pyproject.toml
에서 찾을 수 있습니다. Python과 Poetry를 설치한 후:
poetry install
poetry run python virtual_contributor_engine_guidance.py
이 프로젝트에는 최소한 Python 3.11이 필요하며 웹 사이트의 로컬 버전을 생성하려면 Go 및 Hugo가 설치되어 있어야 합니다. 설치 지침은 Go 및 Hugo 문서를 참조하세요(컨테이너 외부에서 실행하는 경우에만 해당).
다음 작업은 아직 미해결 상태입니다.