पायथन के साथ एक कस्टम चैटबॉट बनाने के लिए ओपन-सोर्स लामा 2 एलएलएम का लाभ उठाएं।
लामा 2 मेटा द्वारा विकसित एक ओपन-सोर्स लार्ज लैंग्वेज मॉडल (एलएलएम) है। यह एक सक्षम ओपन-सोर्स बड़ा भाषा मॉडल है, जो GPT-3.5 और PaLM 2 जैसे कुछ बंद मॉडलों से यकीनन बेहतर है। इसमें तीन पूर्व-प्रशिक्षित और सुव्यवस्थित जेनेरिक टेक्स्ट मॉडल आकार शामिल हैं, जिनमें 7 बिलियन, 13 बिलियन और 70 बिलियन पैरामीटर मॉडल शामिल हैं।
आप स्ट्रीमलिट और लामा 2 का उपयोग करके एक चैटबॉट बनाकर लामा 2 की संवादात्मक क्षमताओं का पता लगाएंगे।
लामा 2 को समझना: विशेषताएं और लाभ
लामा 2 अपने पूर्ववर्ती से कितना अलग है? बड़ा भाषा मॉडल, लामा 1?
- बड़ा मॉडल आकार: यह मॉडल बड़ा है, इसमें 70 बिलियन पैरामीटर तक हैं। यह इसे शब्दों और वाक्यों के बीच अधिक जटिल संबंध सीखने में सक्षम बनाता है।
- बेहतर बातचीत क्षमता: ह्यूमन फीडबैक से सुदृढीकरण सीखना (आरएलएचएफ) संवादात्मक अनुप्रयोग क्षमताओं में सुधार करता है। यह मॉडल को जटिल अंतःक्रियाओं में भी मानवीय सामग्री उत्पन्न करने की अनुमति देता है।
- शीघ्र अनुमान: यह अनुमान में तेजी लाने के लिए समूहीकृत-क्वेरी ध्यान नामक एक नई विधि का परिचय देता है। इसके परिणामस्वरूप चैटबॉट और वर्चुअल असिस्टेंट जैसे अधिक उपयोगी एप्लिकेशन बनाने की क्षमता आती है।
- अधिक कुशल: यह अपने पूर्ववर्ती की तुलना में अधिक मेमोरी और कम्प्यूटेशनल संसाधन कुशल है।
- ओपन-सोर्स और गैर-व्यावसायिक लाइसेंस: यह ओपन-सोर्स है. शोधकर्ता और डेवलपर बिना किसी प्रतिबंध के लामा 2 का उपयोग और संशोधन कर सकते हैं।
लामा 2 सभी मामलों में अपने पूर्ववर्ती से बेहतर प्रदर्शन करता है। ये विशेषताएँ इसे कई अनुप्रयोगों के लिए एक शक्तिशाली उपकरण बनाती हैं, जैसे चैटबॉट, वर्चुअल असिस्टेंट और प्राकृतिक भाषा समझ।
चैटबॉट विकास के लिए एक स्ट्रीमलाइट वातावरण स्थापित करना
अपने एप्लिकेशन का निर्माण शुरू करने के लिए, आपको एक विकास वातावरण स्थापित करना होगा। यह आपके प्रोजेक्ट को आपकी मशीन पर मौजूदा प्रोजेक्ट से अलग करने के लिए है।
सबसे पहले, शुरुआत करें एक आभासी वातावरण बनाना का उपयोग पिपेनव पुस्तकालय इस प्रकार है:
pipenv shell
इसके बाद, चैटबॉट बनाने के लिए आवश्यक लाइब्रेरी स्थापित करें।
pipenv install streamlit replicate
स्ट्रीमलाइट: यह एक ओपन-सोर्स वेब ऐप फ्रेमवर्क है जो मशीन लर्निंग और डेटा साइंस एप्लिकेशन को तेजी से प्रस्तुत करता है।
दोहराने: यह एक क्लाउड प्लेटफ़ॉर्म है जो तैनाती के लिए बड़े ओपन-सोर्स मशीन-लर्निंग मॉडल तक पहुंच प्रदान करता है।
रिप्लिकेट से अपना लामा 2 एपीआई टोकन प्राप्त करें
प्रतिकृति टोकन कुंजी प्राप्त करने के लिए, आपको पहले एक खाता पंजीकृत करना होगा दोहराने अपने GitHub खाते का उपयोग करना।
रेप्लिकेट केवल a के माध्यम से साइन-इन की अनुमति देता है गिटहब खाता.
एक बार जब आप डैशबोर्ड तक पहुंच जाएं, तो नेविगेट करें अन्वेषण करना देखने के लिए बटन दबाएं और लामा 2 चैट खोजें लामा-2-70बी-चैट नमूना।
पर क्लिक करें लामा-2-70बी-चैट लामा 2 एपीआई एंडपॉइंट देखने के लिए मॉडल। क्लिक करें एपीआई पर बटन लामा-2-70बी-चैट मॉडल का नेविगेशन बार. पृष्ठ के दाईं ओर, पर क्लिक करें अजगर बटन। यह आपको पायथन एप्लिकेशन के लिए एपीआई टोकन तक पहुंच प्रदान करेगा।
कॉपी करें REPLICATE_API_TOKEN और इसे भविष्य में उपयोग के लिए सुरक्षित रखें।
इसमें पूरा सोर्स कोड उपलब्ध है गिटहब रिपॉजिटरी.
चैटबॉट का निर्माण
सबसे पहले, एक Python फ़ाइल बनाएं जिसे कहा जाता है llama_chatbot.py और एक env फ़ाइल (.env)। आप अपना कोड llama_chatbot.py में लिखेंगे और अपनी गुप्त कुंजियाँ और API टोकन .env फ़ाइल में संग्रहीत करेंगे।
Llama_chatbot.py फ़ाइल पर, लाइब्रेरीज़ को निम्नानुसार आयात करें।
import streamlit as st
import os
import replicate
इसके बाद, के वैश्विक चर सेट करें लामा-2-70बी-चैट नमूना।
# Global variables
REPLICATE_API_TOKEN = os.environ.get('REPLICATE_API_TOKEN', default='')
# Define model endpoints as independent variables
LLaMA2_7B_ENDPOINT = os.environ.get('MODEL_ENDPOINT7B', default='')
LLaMA2_13B_ENDPOINT = os.environ.get('MODEL_ENDPOINT13B', default='')
LLaMA2_70B_ENDPOINT = os.environ.get('MODEL_ENDPOINT70B', default='')
.env फ़ाइल पर, निम्न प्रारूप में प्रतिकृति टोकन और मॉडल एंडपॉइंट जोड़ें:
REPLICATE_API_TOKEN='Paste_Your_Replicate_Token'
MODEL_ENDPOINT7B='a16z-infra/llama7b-v2-chat: 4f0a4744c7295c024a1de15e1a63c880d3da035fa1f49bfd344fe076074c8eea'
MODEL_ENDPOINT13B='a16z-infra/llama13b-v2-chat: df7690f1994d94e96ad9d568eac121aecf50684a0b0963b25a41cc40061269e5'
MODEL_ENDPOINT70B='replicate/llama70b-v2-chat: e951f18578850b652510200860fc4ea62b3b16fac280f83ff32282f87bbd2e48'
अपना रेप्लिकेट टोकन चिपकाएँ और .env फ़ाइल सहेजें।
चैटबॉट के वार्तालाप प्रवाह को डिज़ाइन करना
लामा 2 मॉडल को शुरू करने के लिए एक प्री-प्रॉम्प्ट बनाएं, यह इस बात पर निर्भर करता है कि आप इससे कौन सा कार्य कराना चाहते हैं। इस मामले में, आप चाहते हैं कि मॉडल एक सहायक के रूप में कार्य करे।
# Set Pre-propmt
PRE_PROMPT = "You are a helpful assistant. You do not respond as " \
"'User' or pretend to be 'User'." \
" You only respond once as Assistant."
अपने चैटबॉट के लिए पेज कॉन्फ़िगरेशन इस प्रकार सेट करें:
# Set initial page configuration
st.set_page_config(
page_title="LLaMA2Chat",
page_icon=":volleyball:",
layout="wide"
)
एक फ़ंक्शन लिखें जो सत्र स्थिति चर को आरंभ और सेट करता है।
# Constants
LLaMA2_MODELS = {
'LLaMA2-7B': LLaMA2_7B_ENDPOINT,
'LLaMA2-13B': LLaMA2_13B_ENDPOINT,
'LLaMA2-70B': LLaMA2_70B_ENDPOINT,
}# Session State Variables
DEFAULT_TEMPERATURE = 0.1
DEFAULT_TOP_P = 0.9
DEFAULT_MAX_SEQ_LEN = 512
DEFAULT_PRE_PROMPT = PRE_PROMPT
defsetup_session_state():
st.session_state.setdefault('chat_dialogue', [])
selected_model = st.sidebar.selectbox(
'Choose a LLaMA2 model:', list(LLaMA2_MODELS.keys()), key='model')
st.session_state.setdefault(
'llm', LLaMA2_MODELS.get(selected_model, LLaMA2_70B_ENDPOINT))
st.session_state.setdefault('temperature', DEFAULT_TEMPERATURE)
st.session_state.setdefault('top_p', DEFAULT_TOP_P)
st.session_state.setdefault('max_seq_len', DEFAULT_MAX_SEQ_LEN)
st.session_state.setdefault('pre_prompt', DEFAULT_PRE_PROMPT)
फ़ंक्शन आवश्यक चर जैसे सेट करता है चैट_संवाद, pre_prompt, एलएलएम, शीर्ष_पी, max_seq_len, और तापमान सत्र स्थिति में. यह उपयोगकर्ता की पसंद के आधार पर लामा 2 मॉडल के चयन को भी संभालता है।
स्ट्रीमलिट ऐप की साइडबार सामग्री को प्रस्तुत करने के लिए एक फ़ंक्शन लिखें।
defrender_sidebar():
st.sidebar.header("LLaMA2 Chatbot")
st.session_state['temperature'] = st.sidebar.slider('Temperature:',
min_value=0.01, max_value=5.0, value=DEFAULT_TEMPERATURE, step=0.01)
st.session_state['top_p'] = st.sidebar.slider('Top P:', min_value=0.01,
max_value=1.0, value=DEFAULT_TOP_P, step=0.01)
st.session_state['max_seq_len'] = st.sidebar.slider('Max Sequence Length:',
min_value=64, max_value=4096, value=DEFAULT_MAX_SEQ_LEN, step=8)
new_prompt = st.sidebar.text_area(
'Prompt before the chat starts. Edit here if desired:',
DEFAULT_PRE_PROMPT, height=60)
if new_prompt != DEFAULT_PRE_PROMPT and new_prompt != ""and
new_prompt isnotNone:
st.session_state['pre_prompt'] = new_prompt + "\n"
else:
st.session_state['pre_prompt'] = DEFAULT_PRE_PROMPT
फ़ंक्शन समायोजन के लिए लामा 2 चैटबॉट के हेडर और सेटिंग चर प्रदर्शित करता है।
स्ट्रीमलिट ऐप के मुख्य सामग्री क्षेत्र में चैट इतिहास प्रस्तुत करने वाले फ़ंक्शन को लिखें।
defrender_chat_history():
response_container = st.container()
for message in st.session_state.chat_dialogue:
with st.chat_message(message["role"]):
st.markdown(message["content"])
फ़ंक्शन सत्र स्थिति में सहेजे गए चैट_डायलॉग के माध्यम से पुनरावृत्त होता है, प्रत्येक संदेश को संबंधित भूमिका (उपयोगकर्ता या सहायक) के साथ प्रदर्शित करता है।
नीचे दिए गए फ़ंक्शन का उपयोग करके उपयोगकर्ता के इनपुट को संभालें।
defhandle_user_input():
user_input = st.chat_input(
"Type your question here to talk to LLaMA2"
)
if user_input:
st.session_state.chat_dialogue.append(
{"role": "user", "content": user_input}
)
with st.chat_message("user"):
st.markdown(user_input)
यह फ़ंक्शन प्रस्तुत करता है उपयोगकर्ता एक इनपुट फ़ील्ड के साथ जहां वे अपने संदेश और प्रश्न दर्ज कर सकते हैं। संदेश को इसमें जोड़ा गया है चैट_संवाद सत्र स्थिति में के साथ उपयोगकर्ता उपयोगकर्ता द्वारा संदेश सबमिट करने के बाद भूमिका।
एक फ़ंक्शन लिखें जो लामा 2 मॉडल से प्रतिक्रियाएं उत्पन्न करता है और उन्हें चैट क्षेत्र में प्रदर्शित करता है।
defgenerate_assistant_response():
message_placeholder = st.empty()
full_response = ""
string_dialogue = st.session_state['pre_prompt']
for dict_message in st.session_state.chat_dialogue:
speaker = "User"if dict_message["role"] == "user"else"Assistant"
string_dialogue += f"{speaker}: {dict_message['content']}\n"
output = debounce_replicate_run(
st.session_state['llm'],
string_dialogue + "Assistant: ",
st.session_state['max_seq_len'],
st.session_state['temperature'],
st.session_state['top_p'],
REPLICATE_API_TOKEN
)
for item in output:
full_response += item
message_placeholder.markdown(full_response + "▌")
message_placeholder.markdown(full_response)
st.session_state.chat_dialogue.append({"role": "assistant",
"content": full_response})
फ़ंक्शन एक वार्तालाप इतिहास स्ट्रिंग बनाता है जिसमें कॉल करने से पहले उपयोगकर्ता और सहायक दोनों संदेश शामिल होते हैं डिबाउंस_रेप्लिकेट_रन सहायक की प्रतिक्रिया प्राप्त करने का कार्य। यह वास्तविक समय में चैट अनुभव देने के लिए यूआई में प्रतिक्रिया को लगातार संशोधित करता है।
संपूर्ण स्ट्रीमलिट ऐप को प्रस्तुत करने के लिए जिम्मेदार मुख्य फ़ंक्शन लिखें।
defrender_app():
setup_session_state()
render_sidebar()
render_chat_history()
handle_user_input()
generate_assistant_response()
यह सत्र स्थिति सेट करने, साइडबार प्रस्तुत करने, चैट इतिहास, उपयोगकर्ता इनपुट को संभालने और तार्किक क्रम में सहायक प्रतिक्रियाएं उत्पन्न करने के लिए सभी परिभाषित कार्यों को कॉल करता है।
को लागू करने के लिए एक फ़ंक्शन लिखें रेंडर_ऐप फ़ंक्शन करें और स्क्रिप्ट निष्पादित होने पर एप्लिकेशन प्रारंभ करें।
defmain():
render_app()
if __name__ == "__main__":
main()
अब आपका आवेदन निष्पादन के लिए तैयार होना चाहिए।
एपीआई अनुरोधों को संभालना
एक बनाने के utils.py अपनी प्रोजेक्ट निर्देशिका में फ़ाइल करें और नीचे फ़ंक्शन जोड़ें:
import replicate
import time# Initialize debounce variables
last_call_time = 0
debounce_interval = 2# Set the debounce interval (in seconds)defdebounce_replicate_run(llm, prompt, max_len, temperature, top_p,
API_TOKEN):
global last_call_time
print("last call time: ", last_call_time)current_time = time.time()
elapsed_time = current_time - last_call_timeif elapsed_time < debounce_interval:
print("Debouncing")
return"Hello! Your requests are too fast. Please wait a few" \
" seconds before sending another request."last_call_time = time.time()
output = replicate.run(llm, input={"prompt": prompt + "Assistant: ",
"max_length": max_len, "temperature":
temperature, "top_p": top_p,
"repetition_penalty": 1}, api_token=API_TOKEN)
return output
फ़ंक्शन उपयोगकर्ता के इनपुट से बार-बार और अत्यधिक एपीआई प्रश्नों को रोकने के लिए एक डिबाउंस तंत्र निष्पादित करता है।
इसके बाद, डिबाउंस रिस्पॉन्स फ़ंक्शन को अपने में आयात करें llama_chatbot.py फ़ाइल इस प्रकार है:
from utils import debounce_replicate_run
अब एप्लिकेशन चलाएँ:
streamlit run llama_chatbot.py
अपेक्षित उत्पादन:
आउटपुट मॉडल और एक इंसान के बीच बातचीत दिखाता है।
स्ट्रीमलिट और लामा 2 चैटबॉट्स के वास्तविक दुनिया के अनुप्रयोग
लामा 2 अनुप्रयोगों के कुछ वास्तविक दुनिया के उदाहरणों में शामिल हैं:
- चैटबॉट्स: इसका उपयोग सृजन में लागू होता है मानव प्रतिक्रिया चैटबॉट जो कई विषयों पर वास्तविक समय पर बातचीत कर सकता है।
- आभासी सहायक: इसका उपयोग आभासी सहायक बनाने के लिए किया जाता है जो मानव भाषा के प्रश्नों को समझते हैं और उनका उत्तर देते हैं।
- भाषा का अनुवाद: इसका उपयोग भाषा अनुवाद कार्यों पर लागू होता है।
- पाठ सारांश: इसका उपयोग आसानी से समझने के लिए बड़े पाठों को छोटे पाठों में सारांशित करने में लागू होता है।
- अनुसंधान: आप विभिन्न विषयों पर प्रश्नों का उत्तर देकर शोध उद्देश्यों के लिए लामा 2 का उपयोग कर सकते हैं।
एआई का भविष्य
जीपीटी-3.5 और जीपीटी-4 जैसे बंद मॉडलों के साथ, छोटे खिलाड़ियों के लिए एलएलएम का उपयोग करके कुछ भी बनाना काफी मुश्किल है क्योंकि जीपीटी मॉडल एपीआई तक पहुंच काफी महंगी हो सकती है।
लामा 2 जैसे उन्नत बड़े भाषा मॉडल को डेवलपर समुदाय के लिए खोलना एआई के एक नए युग की शुरुआत है। यह वास्तविक दुनिया के अनुप्रयोगों में मॉडलों के अधिक रचनात्मक और अभिनव कार्यान्वयन को बढ़ावा देगा, जिससे आर्टिफिशियल सुपर इंटेलिजेंस (एएसआई) प्राप्त करने की दिशा में तेजी आएगी।