Buat Aplikasi Web Obrolan GPT-3 Anda dengan Streamlit di Python

Jan 27 2023
Tidak hanya untuk hype, ChatGPT-3 (Generative Pre-trained Transformer) dari OpenAI adalah salah satu chatbot paling ampuh yang tersedia saat artikel ini ditulis. Anda dapat bertanya apa saja, dan itu akan memberikan jawaban yang akurat.

Tidak hanya untuk hype

Gambar dibuat oleh penulis dengan Difusi Stabil

ChatGPT-3 (Generative Pre-trained Transformer) dari OpenAI adalah salah satu chatbot paling ampuh yang tersedia saat artikel ini ditulis. Anda dapat bertanya apa saja, dan itu akan memberikan jawaban yang akurat. Selain itu, OpenAI menawarkan API untuk digunakan dalam pemrograman. Kami sedang mempertimbangkan aplikasi yang didukung dengan fitur-fitur ini, meskipun ini untuk artikel lain. Untuk memulai, dalam tutorial ini kita akan melihat cara menggunakan API Python untuk membuat aplikasi web Chat GPT-3. Pada saat penulisan tutorial ini, API ChatGPT lengkap belum dirilis, dan ada daftar tunggu .

ALIRAN

Streamlit adalah kerangka kerja aplikasi sumber terbuka yang idealnya untuk Pembelajaran Mesin dan Ilmu Data. Hal ini memungkinkan pengembang untuk membuat aplikasi interaktif berbasis web untuk visualisasi dan analisis data, tanpa harus menulis kode HTML, CSS, atau JavaScript yang ekstensif. Streamlit menggunakan Python untuk membangun aplikasi, memudahkan ilmuwan data dan insinyur untuk menggunakan pengetahuan dan keterampilan yang ada untuk membuat alat khusus dan interaktif untuk eksplorasi dan analisis data. Sangat mudah untuk mengintegrasikan kode Python dan bahkan grafik interaktif seperti Matplotlib. Sedikit rasa sakit di belakang adalah pengunggahan data yang akan digunakan untuk alasan keamanan.

Ada 2 cara untuk menggunakan Streamlit, baik di dalam cloud mereka sendiri atau menginstal secara lokal (di komputer Anda atau server web Anda sendiri).

Untuk opsi pertama, Anda perlu membuat akun di streamlit.io dan dari sana menautkan repositori Github. Penting untuk membuat daftar pustaka yang diperlukan dalam file requirements.txt jika tidak, penyebaran tidak akan berhasil. Jika rencananya adalah menggunakan Streamlit Cloud dengan kunci OpenAI, mungkin ada masalah lebih lanjut karena kunci privat dipasang di Github (OpenAI akan segera mendeteksi ini dan mengajukan keluhan).

Solusi kedua membutuhkan sumber daya sendiri tetapi memberikan lebih banyak kebebasan. Anda harus menginstal pustaka tersebut di mesin yang ditentukan:

  • Streamlit ( pip install streamlit)
  • Perlancar Obrolan ( pip install streamlit_chat)
  • AI terbuka( pip install openai)
  • Dotenv( pip install python-dotenv) (opsional)

Untuk menggunakan Chat GPT-3, Anda memerlukan kunci API. Untuk mendapatkan ini, Anda harus pergi ke situs web OpenAI . Setelah masuk, buka Lihat Kunci API.

Tangkapan layar penulis

Sekarang Anda perlu membuat skrip Streamlit Python.

Setelah mengimpor pustaka yang diperlukan, rekatkan kunci API yang disimpan dalam file openai.api_key. Kemudian hasilkan respons dari GPT-3 generate_response dengan mengambil prompt pengguna sebagai parameter. Di sini juga ditentukan model GPT-3 'text-davinci-003', meskipun model lain dapat digunakan. Dimungkinkan juga untuk menetapkan batas prompt ( max_token).

Variabel suhu sangat relevan, karena menentukan secara substansial jumlah kreativitas dalam respons ( walaupun tidak ada yang suka menyederhanakan kreativitas dengan ini ), dapat diatur antara 0 dan 1. 0 menghasilkan keluaran yang stabil, sedangkan 1 sangat kreatif. Secara lebih formal, suhu menentukan seberapa serakah model generatif itu.

import openai
import streamlit as st
from streamlit_chat import message
import os 
from dotenv import load_dotenv
load_dotenv('api_key.env')
openai.api_key = os.environ.get('API_KEY')
def generate_response(prompt):
    completion=openai.Completion.create(
        engine='text-davinci-003',
        prompt=prompt,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.6,
    )
    message=completion.choices[0].text
    return message

st.title("ChatGPT-like Web App")
#storing the chat
if 'generated' not in st.session_state:
    st.session_state['generated'] = []
if 'past' not in st.session_state:
    st.session_state['past'] = []
user_input=st.text_input("You:",key='input')
if user_input:
    output=generate_response(user_input)
    #store the output
    st.session_state['past'].append(user_input)
    st.session_state['generated'].append(output)
if st.session_state['generated']:
    for i in range(len(st.session_state['generated'])-1, -1, -1):
        message(st.session_state["generated"][i], key=str(i))
        message(st.session_state['past'][i], is_user=True, key=str(i) + '_user')

Tingkatkan Pengkodean

Terima kasih telah menjadi bagian dari komunitas kami! Sebelum kamu pergi:

  • Tepuk tangan untuk ceritanya dan ikuti penulisnya
  • Lihat lebih banyak konten di publikasi Level Up Coding
  • Ikuti kami: Twitter | LinkedIn | Buletin