백엔드 개발 파이썬 튜토리얼 여러 LLM에 액세스하기 위해 하나의 API를 사용하여 AI 챗봇을 만드는 방법

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

Aug 25, 2024 am 06:02 AM

원래 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? 중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

정규 표현이란 무엇입니까? 정규 표현이란 무엇입니까? Mar 20, 2025 pm 06:25 PM

정규 표현식은 프로그래밍의 패턴 일치 및 텍스트 조작을위한 강력한 도구이며 다양한 응용 프로그램에서 텍스트 처리의 효율성을 높입니다.

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? 문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? Apr 01, 2025 pm 11:18 PM

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

See all articles