>  기사  >  백엔드 개발  >  여러 LLM에 액세스하기 위해 하나의 API를 사용하여 AI 챗봇을 만드는 방법

여러 LLM에 액세스하기 위해 하나의 API를 사용하여 AI 챗봇을 만드는 방법

王林
王林원래의
2024-08-25 06:02:02638검색

원래 Liz Acosta의 Streamlit 블로그에 게시됨

AI 이미지 생성기를 처음으로 가지고 놀았을 때 얼마나 멋졌는지 기억하시나요? 그 2천만 개의 손가락과 악몽 같은 스파게티를 먹는 모습은 단순한 재미를 넘어, 무심코 드러낸 앗! AI 모델은 우리만큼 똑똑합니다. 우리처럼 그들도 손을 그리는 데 어려움을 겪습니다.

How to create an AI chatbot using one API to access multiple LLMs

AI 모델은 빠르게 정교해졌지만 이제는 그 수가 너무 많습니다. 그리고 – 다시 – 우리처럼 그들 중 일부는 다른 사람들보다 특정 작업을 더 잘합니다. 예를 들어 텍스트 생성을 생각해 보십시오. Llama, Gemma 및 Mistral은 모두 LLM이지만 일부는 코드 생성에 더 능숙하고 다른 일부는 브레인스토밍, 코딩 또는 창의적 글쓰기에 더 뛰어납니다. 프롬프트에 따라 다양한 이점을 제공하므로 AI 애플리케이션에 두 개 이상의 모델을 포함하는 것이 합리적일 수 있습니다.

그런데 어떻게 이 모든 모델을 중복 코드 없이 앱에 통합할 수 있을까요? AI를 보다 모듈식으로 사용하여 유지 관리 및 확장을 더 쉽게 만들려면 어떻게 해야 합니까? 이것이 바로 API가 다양한 기술 간 통신을 위한 표준화된 지침 세트를 제공할 수 있는 곳입니다.

이 블로그 게시물에서는 Replicate with Streamlit을 사용하여 단일 API 호출로 다양한 LLM을 구성하고 메시지를 표시할 수 있는 앱을 만드는 방법을 살펴보겠습니다. 그리고 걱정하지 마십시오. 제가 "앱"이라고 말할 때 전체 Flask 서버를 가동해야 하거나 지루하게 경로를 구성해야 하거나 CSS에 대해 걱정해야 한다는 의미는 아닙니다. Streamlit이 이를 해결해 드릴까요?

계속 읽어보세요.

  • 복제란
  • 스트림라이트란 무엇인가
  • 데모 복제 챗봇 Streamlit 앱 구축 방법
  • 복제 사용 모범 사례

읽고 싶지 않으신가요? 이 데모를 탐색할 수 있는 다른 방법은 다음과 같습니다.

  • 여기 Streamlit Cookbook 저장소에서 코드를 찾으세요.
  • 여기에서 배포된 앱 버전을 사용해 보세요.
  • 여기에서 Replicate 창립 디자이너 Zeke Sikelianos의 동영상 둘러보기를 시청하세요.

복제란 무엇입니까?

Replicate는 개발자가 CLI, API 또는 SDK를 통해 오픈 소스 AI 모델을 배포, 미세 조정 및 액세스할 수 있는 플랫폼입니다. 이 플랫폼을 사용하면 AI 기능을 소프트웨어 애플리케이션에 프로그래밍 방식으로 쉽게 통합할 수 있습니다.

Replicate에서 사용 가능한 모델

  • 텍스트: Llama 3와 같은 모델은 입력 프롬프트를 기반으로 일관되고 상황에 맞는 텍스트를 생성할 수 있습니다.
  • 이미지: 안정적인 확산과 같은 모델은 텍스트 프롬프트에서 고품질 이미지를 생성할 수 있습니다.
  • 음성: 속삭임과 같은 모델은 음성을 텍스트로 변환할 수 있는 반면 xtts-v2와 같은 모델은 자연스러운 음성을 생성할 수 있습니다.
  • 비디오: animate-diff와 같은 모델이나 videocrafter와 같은 stable 확산의 변형은 각각 텍스트 및 이미지 프롬프트에서 비디오를 생성 및/또는 편집할 수 있습니다.

Replicate를 함께 사용하면 텍스트, 이미지, 음성, 비디오 등 다양한 형식으로 입력을 받아들이고 출력을 생성할 수 있는 다중 모달 앱을 개발할 수 있습니다.

스트림릿이란 무엇인가요?

Streamlit은 단 몇 줄의 코드만으로 고도의 대화형 앱을 구축할 수 있는 오픈 소스 Python 프레임워크입니다. Streamlit은 LLM, 벡터 데이터베이스 또는 LangChain, LlamaIndex 또는 Weights & Biases와 같은 다양한 AI 프레임워크와 같은 생성 AI의 모든 최신 도구와 통합됩니다. Streamlit의 채팅 요소를 사용하면 AI와 특히 쉽게 상호 작용할 수 있으므로 "데이터와 대화"하는 챗봇을 구축할 수 있습니다.

Replicate와 같은 플랫폼과 결합된 Streamlit을 사용하면 앱 디자인 오버헤드 없이 생성 AI 애플리케이션을 만들 수 있습니다.

? Streamlit이 앞으로의 발전을 위해 어떻게 편향되는지 자세히 알아보려면 이 블로그 게시물을 확인하세요.

Streamlit에 대해 자세히 알아보려면 101 가이드를 확인하세요.

앱 레시피를 사용해 보세요: 복제 + 스트림릿

하지만 내 말을 그대로 받아들이지는 마세요. 앱을 직접 사용해 보거나 동영상 안내를 시청하고 어떻게 생각하는지 확인해 보세요.

이 데모에서는 Replicate를 사용하여 Streamlit 챗봇 앱을 실행해 보겠습니다. 앱은 단일 API를 사용하여 세 가지 다른 LLM에 액세스하고 온도 및 top-p와 같은 매개변수를 조정합니다. 이러한 매개변수는 AI 생성 텍스트의 무작위성과 다양성은 물론 토큰 선택 방법에도 영향을 미칩니다.

? 모델 온도란 무엇인가요? 온도는 모델이 토큰을 선택하는 방식을 제어합니다. 온도가 낮을수록 모델이 더 보수적으로 바뀌고 일반적이고 "안전한" 단어가 선호됩니다. 반대로 온도가 높을수록 가능성이 낮은 토큰을 선택하여 모델이 더 많은 위험을 감수하도록 장려하여 더 창의적인 결과를 얻을 수 있습니다.

? top-p란 무엇인가요? "핵 샘플링"이라고도 알려진 — 무작위성을 조정하는 또 다른 방법입니다. 이는 top-p 값이 증가함에 따라 더 광범위한 토큰 세트를 고려하여 작동합니다. top-p 값이 높을수록 더 다양한 범위의 토큰이 샘플링되어 더 다양한 출력이 생성됩니다.

전제 조건

  • 파이썬 버전 >=3.8, !=3.9.7
  • 복제 API 키 (무료 평가판 한도를 초과하는 기능에 액세스하려면 결제 방법이 필요합니다.)

? API 키에 대해 자세히 알아보려면 여기 블로그 게시물을 확인하세요.

환경설정

로컬 설정

  1. 쿡북 저장소 복제: git clone https://github.com/streamlit/cookbook.git
  2. 쿡북 루트 디렉터리에서 디렉터리를 Replicate recipe(cd recipe/replicate)로 변경합니다.
  3. Replicate API 키를 .streamlit/secrets_template.toml 파일에 추가하세요
  4. 파일 이름을 secrets_template.toml에서 secrets.toml로 업데이트합니다: mv .streamlit/secrets_template.toml .streamlit/secrets.toml (Streamlit의 비밀 처리에 대한 자세한 내용은 여기 문서를 참조하세요.)
  5. 가상 환경 만들기: python -m venv replyvenv
  6. 가상 환경 활성화: 소스 replyvenv/bin/activate
  7. 종속성 설치: pip install -r 요구사항.txt

GitHub Codespaces 설정

  1. GitHub의 Cookbook 저장소에서 코드 버튼의 Codespaces 옵션을 선택하여 새 코드스페이스를 생성하세요.

    How to create an AI chatbot using one API to access multiple LLMs

  2. 코드 공간이 생성되면 Replicate API 키를 recipe/replicate/.streamlit/secrets_template.toml 파일에 추가하세요

  3. secrets_template.toml에서 secrets.toml로 파일 이름 업데이트
    (Streamlit의 비밀 처리에 대한 자세한 내용은 여기 문서를 참조하세요.)

  4. 쿡북 루트 디렉터리에서 디렉터리를 복제 레시피로 변경합니다: cd recipe/replicate

  5. 종속성 설치: pip install -r 요구 사항.txt

Replicate를 사용하여 텍스트 생성 모델 실행

  1. replicate_hello_world.py라는 recipe/replicate 디렉토리에 파일을 생성하십시오.
  2. 파일에 다음 코드를 추가하세요.

    import replicate   
    
    import toml
    
    import os
    
    # Read the secrets from the secrets.toml file
    with open(".streamlit/secrets.toml", "r") as f:
        secrets = toml.load(f)
    
    # Create an environment variable for the Replicate API token 
    os.environ['REPLICATE_API_TOKEN'] = secrets["REPLICATE_API_TOKEN"]
    
    # Run a model
    for event in replicate.stream("meta/meta-llama-3-8b",
                                 input={"prompt": "What is Streamlit?"},):
        print(str(event), end="")
    
  3. 스크립트 실행: python 복제_hello_world.py

모델이 생성한 텍스트가 인쇄된 것을 볼 수 있습니다.

모델 복제와 작동 방식에 대해 자세히 알아보려면 여기에서 해당 설명서를 참조하세요. 기본적으로 Replicate "모델"은 입력을 받아들이고 출력을 반환하는 훈련, 패키지 및 게시된 소프트웨어 프로그램을 의미합니다.

이 특별한 경우 모델은 Meta/meta-llama-3-8b이고 입력은 "prompt": "Streamlit이란 무엇입니까?"입니다. 스크립트를 실행하면 Replicate 엔드포인트가 호출되고 인쇄된 텍스트는 Replicate를 통해 모델에서 반환된 출력입니다.

데모 Replicate Streamlit 챗봇 앱 실행

데모 앱을 실행하려면 Streamlit CLI(streamlit run streamlit_app.py)를 사용하세요.

이 명령을 실행하면 앱이 localhost의 포트에 배포됩니다. 이 위치에 액세스하면 Streamlit 앱이 실행되는 것을 볼 수 있습니다.

How to create an AI chatbot using one API to access multiple LLMs

이 앱을 사용하면 복제를 통해 다양한 LLM에 메시지를 표시하고 제공한 구성에 따라 생성 텍스트를 생성할 수 있습니다.

여러 LLM 모델을 위한 공통 API

Replicate를 사용하면 하나의 API로 여러 오픈 소스 LLM을 활성화하여 최신 소프트웨어 흐름에 대한 AI 통합을 단순화할 수 있습니다.

이 작업은 다음 코드 블록에서 수행됩니다.

for event in replicate.stream(model, 
                             input={"prompt": prompt_str,
                             "prompt_template": r"{prompt}", 
                             "temperature": temperature,
                             "top_p": top_p,}):
    yield str(event)

모델, 온도, 상위 구성은 Streamlit의 입력 위젯을 통해 사용자가 제공합니다. Streamlit의 채팅 요소를 사용하면 앱에 챗봇 기능을 쉽게 통합할 수 있습니다. 가장 좋은 점은 이러한 구성 요소를 구현하고 스타일을 지정하기 위해 JavaScript나 CSS를 알 필요가 없다는 것입니다. Streamlit은 모든 것을 즉시 제공합니다.

모범 사례 복제

프롬프트에 가장 적합한 모델을 사용하세요.

Replicate는 공개 모델을 검색할 수 있는 API 엔드포인트를 제공합니다. 해당 웹사이트에서 주요 모델과 사용 사례를 탐색할 수도 있습니다. 이를 통해 특정 요구 사항에 맞는 모델을 쉽게 찾을 수 있습니다.

모델마다 성능 특성이 다릅니다. 정확성과 속도에 대한 요구 사항에 따라 적절한 모델을 사용하세요.

웹후크, 스트리밍, 이미지 URL로 성능 향상

Replicate의 출력 데이터는 한 시간 동안만 사용할 수 있습니다. 웹후크를 사용하여 데이터를 자체 스토리지에 저장하세요. 모델의 비동기 응답을 처리하도록 웹후크를 설정할 수도 있습니다. 이는 확장 가능한 애플리케이션을 구축하는 데 매우 중요합니다.

가능한 경우 스트리밍을 활용하세요. 일부 모델은 스트리밍을 지원하므로 생성되는 동안 부분적인 결과를 얻을 수 있습니다. 이는 실시간 애플리케이션에 이상적입니다.

이미지 URL을 사용하면 Base 64로 인코딩된 업로드된 이미지를 사용할 때보다 성능이 향상됩니다.

Streamlit으로 AI의 잠재력을 활용하세요

Streamlit을 사용하면 몇 달 간의 앱 디자인 작업이 단 몇 줄의 Python으로 간소화됩니다. 최신 AI 발명품을 선보일 수 있는 완벽한 프레임워크입니다.

Streamlit Cookbook에서 다른 AI 레시피를

빠르게 시작하고 실행하세요. (포럼에 무엇을 만들고 있는지 알려주는 것도 잊지 마세요!)

행복한 Streamliting을 즐겨보세요! ?

위 내용은 여러 LLM에 액세스하기 위해 하나의 API를 사용하여 AI 챗봇을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.