메인 콘텐츠로 건너뛰기
Background

엣지 기반 LLM 챗봇 구축

엣지 환경에서 Akamai Functions를 활용하고 전용 GPU 컴퓨팅 환경에서 실행되는 오픈 소스 모델을 통해 글로벌 챗봇을 배포하세요.

엣지에서 모델까지 요청 사항을 따라가세요.

애플리케이션이 어떻게 캐시를 확인하고, 가드레일을 적용하며, 대화 기록을 보존하고, GPU에서 호스팅되는 모델에 새로운 요청을 전송하는지 알아보세요.

시작하기 전에

Ollama 배포를 검증하는 동안 SSH를 통해 GPU 인스턴스에 연결되므로 인프라를 프로비저닝하기 전에 공개 키가 준비되어 있는지 확인하세요.

  • Akamai Cloud 계정(Akamai Functions 접속 권한 포함)
  • Akamai Cloud 개인 접속 토큰
  • Linode 및 방화벽에 대한 읽기 및 쓰기 권한
  • 이벤트 읽기 권한
  • 로컬에 설치된 Terraform
  • 로컬에 설치된 Spin CLI
  • Spin용 aka 플러그인
  • 로컬에 설치된 Node.js
  • SSH 키 쌍

프로젝트 생성

먼저 추론 백엔드를 프로비저닝한 후, 엣지 애플리케이션을 설정, 테스트 및 배포하세요.

샘플 애플리케이션을 복제하고 해당 애플리케이션 및 인프라 디렉토리를 검토하세요.

프로젝트 리포지토리 복제:

git clone https://github.com/akamai-developers/akamai-functions-llm-chatbot.git
cd akamai-functions-llm-chatbot

이 리포지토리를 구성하는 두 가지 주요 구성요소:

  • Terraform 및 클라우드 초기화 설정을 포함하는 infrastructure 디렉토리
  • Astro 프론트엔드와 TypeScript API를 포함한 Spin 애플리케이션

프로비저닝 전에 Terraform 변수를 검토하세요. 환경에 맞게 지역, GPU 요금제, 모델 및 관련 인프라 설정을 조정할 수 있습니다.

Terraform을 사용해 GPU 인스턴스를 생성하고 Ollama 추론 서비스를 설정하세요.

infrastructure 디렉토리로 이동한 후 Terraform 초기화:

cd infrastructure
terraform init

Akamai Cloud 개인 접속 토큰 설정:

export LINODE_TOKEN="your-pat-here"

인프라 프로비저닝:

terraform apply

Terraform에서 전용 GPU 인스턴스를 생성하고 cloud-init을 사용해 다음 작업을 수행합니다.

  • 필요한 GPU 드라이버 설치
  • Ollama 설치
  • 설정된 오픈 소스 모델 가져오기
  • 포트 11434에서 Ollama API 공개
  • 모델이 사용 가능해질 때까지 대기

프로비저닝이 완료되면 Terraform에서 다음과 같이 Ollama 엔드포인트를 반환합니다.

ollama_endpoint = "http://<linode-ip>:11434"

프로비저닝 및 모델 로딩에는 일반적으로 몇 분 정도가 소요됩니다.

엣지 애플리케이션을 Ollama 엔드포인트에 연결하고 해당 캐시 관리 API를 보호하세요.

계속하기 전에 Spin CLI, Node.js, aka 플러그인을 설치합니다.

Akamai Functions 플러그인 설치 또는 업데이트:

spin plugins update
spin plugins install aka

이 애플리케이션에서는 다음과 같은 두 가지 배포 변수를 사용합니다.

  • ollama_url은 애플리케이션을 GPU에서 호스팅되는 Ollama API에 연결합니다.
  • secret_sauce는 응답 캐시를 초기화하는 데 사용되는 엔드포인트를 보호합니다.

secret_sauce에 사용할 강력한 임의의 값을 생성합니다. 캐시 관리 엔드포인트에 요청할 때는 X-SecretSauce HTTP 헤더를 통해 이 값을 반드시 제공해야 합니다.

리포지토리에 토큰, 비밀 또는 프로덕션 엔드포인트 인증정보를 저장하지 마세요.

원격 추론 백엔드를 그대로 사용하면서 Spin 애플리케이션을 로컬에서 실행하세요.

애플리케이션을 실행한 후 필요한 변수 전달:

spin up --build \
--variable ollama_url="http://<linode-ip>:11434" \
--variable secret_sauce="<strong-random-secret>"

브라우저에서 로컬 애플리케이션을 열고 테스트 메시지를 전송합니다.

다음과 같은 사항을 확인합니다.

  • 챗봇이 모델이 생성한 답변을 제공합니다.
  • 세션이 유지되는 동안 대화 기록이 저장됩니다.
  • 반복된 질문을 캐시에서 다시 가져올 수 있습니다.
  • 가드레일을 위반하는 요청이 거부됩니다.
  • 브라우저가 전체 대화 기록을 제어하거나 전송하지 않습니다.

로컬 개발 시 원격 Ollama 백엔드를 사용하면 로컬 GPU 없이도 모델의 동작을 테스트할 수 있습니다.

애플리케이션을 웹어셈블리로 컴파일한 후 Akamai Functions에 배포하세요.

배포 전에 해당 계정에 Akamai Functions 접속 권한이 활성화되어 있는지 확인합니다. 아직 승인을 받지 못했다면 접속 권한을 요청하고 요청이 검토되는 동안 로컬 구축을 계속합니다.

Akamai Functions를 통해 인증:

spin aka login

애플리케이션 구축 및 배포:

spin aka deploy --build \
--variable ollama_url="http://<linode-ip>:11434" \
--variable secret_sauce="<strong-random-secret>"

배포 후 생성된 애플리케이션 URL을 열고 새 질문을 제출하세요.

배포된 애플리케이션은 Akamai Functions를 통해 프론트엔드와 API를 제공합니다. 요청은 애플리케이션이 키-값 저장소를 확인하거나 GPU 추론 백엔드와 통신하기 전에 엣지에서 먼저 검증됩니다.

엣지 처리가 모델에 대한 불필요한 요청을 줄이는지 확인하세요.

새로운 질문과 반복된 질문 모두를 사용해 애플리케이션을 테스트합니다.

새로운 질문의 경우 애플리케이션에서 다음을 수행합니다.

  1. 들어오는 메시지를 검증합니다.
  2. 인풋 및 주제 가드레일을 적용합니다.
  3. 세션 기록을 로딩합니다.
  4. 응답 캐시를 확인합니다.
  5. 캐시된 응답이 없을 경우 해당 요청을 Ollama로 전송합니다.
  6. 향후 요청 시 답변을 저장합니다.
  7. 세션 기록을 업데이트합니다.

동일한 질문이 반복될 경우, 애플리케이션은 추가적인 GPU 추론 과정 없이 엣지에서 캐시된 응답을 바로 반환할 수 있습니다.

테스트 완료 시 더 이상 필요하지 않은 인프라 제거:

cd infrastructure
terraform destroy

전용 GPU 리소스는 삭제될 때까지 지속적으로 요금을 부과합니다.

자주 묻는 질문(FAQ)

자주 묻는 질문(FAQ)

Akamai Functions는 프론트엔드와 API를 처리하고, 요청을 검증하며, 가드레일을 적용하고, 대화 세션을 관리하며, 모델에 접속하기 전에 분산 응답 캐시를 확인합니다.

오픈 소스 모델은 전용 NVIDIA GPU를 사용하는 Akamai Cloud 인스턴스에서 Ollama를 통해 제공됩니다. 이 모델은 Akamai Functions 내에서 실행되지 않습니다.

Spin 애플리케이션은 웹어셈블리로 컴파일되어 가동 시간 단축, 강력한 워크로드 격리, Akamai 분산 엣지 인프라에 걸친 배포를 지원합니다.

해당 애플리케이션은 각 질문을 표준화하고, 기존 답변이 Akamai Functions의 키-값 저장소에 있는지 확인합니다. 캐시가 적중되면 GPU에 추가 요청을 보내지 않고 저장된 응답을 반환합니다.

대화 기록은 Akamai Functions의 키-값 저장소의 서버 측에 저장되며, 보안 쿠키의 세션 식별자와 연결됩니다. 샘플의 기록 보관 범위는 20개의 메시지로 제한되어 있습니다.

프롬프트 인젝션, 2차 요청 전환, 코드 생성 요청에 대한 샘플 검사가 포함되어 있습니다. 또한 메시지 길이를 제한하고, 시스템 프롬프트를 통해 응답이 애플리케이션의 의도된 범위 내에서 이루어지도록 합니다.

네. 인프라 설정을 통해 Ollama 모델을 변경할 수 있으며, 이 경우 해당 모델의 하드웨어 및 메모리 요구사항을 준수해야 합니다.

이 혜택은 요건을 충족하는 클라우드 서비스에만 적용됩니다. 전용 GPU 서비스는 제외되므로, 프로젝트를 시작하기 전에 현재 프로모션 조건을 확인하세요.

네. TypeScript API는 LangChain.js와 Ollama 호환 엔드포인트를 사용하므로, 샘플의 정적 맥락을 문서 로더, 검색기, 벡터 저장소를 통해 확장할 수 있습니다.

프로젝트를 완료한 후 terraform destroy를 실행하고 GPU 인스턴스와 관련 리소스가 계정에서 삭제되었는지 확인하세요.