Contents

วิธีสร้าง Chatbot โดยใช้ Streamlit และ Llama 2

/th/images/how-to-build-a-chatbot-using-streamlit-and-llama-v2-output-1.jpg

Llama 2 เป็นโมเดลภาษาโอเพ่นซอร์สขนาดใหญ่ที่พัฒนาโดย Meta นาฬิการุ่นนี้มีความสามารถที่น่าประทับใจ ทำให้เป็นคู่แข่งที่น่าเกรงขามเมื่อเปรียบเทียบกับรุ่นปิดอื่นๆ เช่น GPT-3.5 และ PaLM ในความเป็นจริง ผู้เชี่ยวชาญหลายคนแย้งว่า Llama 2 เหนือกว่าทางเลือกเหล่านี้ในแง่ของประสิทธิภาพ สถาปัตยกรรมของโมเดลนี้ประกอบด้วยโมเดลข้อความที่สร้างไว้ล่วงหน้าและปรับแต่งอย่างละเอียดสามโมเดล โดยแต่ละโมเดลมีระดับความซับซ้อนที่แตกต่างกัน โมเดลเหล่านี้ประกอบด้วยเวอร์ชันที่มีพารามิเตอร์ 7 พันล้าน, 13 พันล้าน และ 70 พันล้านตามลำดับ

เจาะลึกศักยภาพเชิงโต้ตอบของ Llama 2 ด้วยการสร้างแชทบอตที่ใช้ความสามารถของ Streamlit และ Llama 2 เพื่อโต้ตอบกับผู้ใช้แบบเรียลไทม์

ทำความเข้าใจ Llama 2: คุณสมบัติและคุณประโยชน์

Llama 2 ซึ่งเป็นเวอร์ชันภาษาขนาดใหญ่มีความแตกต่างกันเพียงใด เมื่อเปรียบเทียบกับ Llama 1 เวอร์ชันก่อนหน้า

โมเดลเสริมมีสถาปัตยกรรมที่ขยายตัวอย่างมาก โดยครอบคลุมพารามิเตอร์มากถึง 70 พันล้านพารามิเตอร์ การนับพารามิเตอร์ที่ขยายดังกล่าวช่วยให้ได้รับความสัมพันธ์ที่ซับซ้อนมากขึ้นโดยธรรมชาติในลำดับคำ

การเรียนรู้แบบเสริมกำลังจากผลตอบรับของมนุษย์ (RLHF) ได้แสดงให้เห็นถึงประสิทธิภาพในการเพิ่มประสิทธิภาพขีดความสามารถของแอปพลิเคชันการสนทนา ส่งผลให้เกิดการตอบสนองที่เป็นธรรมชาติและน่าเชื่อถือมากขึ้น ซึ่งสามารถสร้างได้ในบทสนทนาที่ซับซ้อนที่หลากหลาย การรวม RLHF เข้ากับโมเดลเหล่านี้ไม่เพียงเพิ่มความสามารถในการเข้าใจบริบท แต่ยังช่วยให้สามารถให้คำตอบที่สอดคล้องกันและเกี่ยวข้องมากขึ้น จึงมอบประสบการณ์ผู้ใช้ที่ดีขึ้น

การแนะนำเทคนิคที่เป็นนวัตกรรมใหม่ที่เรียกว่า"ความสนใจแบบกลุ่มแบบสอบถาม"ได้เร่งกระบวนการอนุมานอย่างมีนัยสำคัญ จึงทำให้สามารถพัฒนาแอปพลิเคชันที่มีฟังก์ชันการทำงานสูง เช่น แชทบอทและผู้ช่วยเสมือนได้

เวอร์ชันปัจจุบันแสดงประสิทธิภาพในระดับที่เหนือกว่าทั้งในด้านการใช้งานหน่วยความจำและทรัพยากรการคำนวณ เมื่อเปรียบเทียบกับการทำซ้ำครั้งก่อน

Llama 2 ได้รับอนุญาตภายใต้กรอบงานโอเพ่นซอร์สและไม่ใช่เชิงพาณิชย์ ซึ่งช่วยให้นักวิจัยและนักพัฒนาสามารถใช้และแก้ไขคุณสมบัติได้อย่างอิสระโดยไม่มีข้อจำกัดหรือข้อจำกัดใดๆ ที่กำหนดโดยผลประโยชน์ทางการค้า

Llama 2 นำเสนอประสิทธิภาพที่เหนือกว่าในด้านต่างๆ เมื่อเทียบกับการทำซ้ำครั้งก่อน ทำให้เป็นเครื่องมือที่แข็งแกร่งเป็นพิเศษสำหรับยูทิลิตี้ต่างๆ มากมาย รวมถึงการโต้ตอบแชทบอท ตัวช่วยเสมือน และการเข้าใจภาษาที่เป็นธรรมชาติ

การตั้งค่าสภาพแวดล้อม Streamlit สำหรับการพัฒนา Chatbot

ในการเริ่มสร้างแอปพลิเคชันของคุณ จำเป็นต้องสร้างสภาพแวดล้อมการพัฒนาซึ่งทำหน้าที่แยกโปรเจ็กต์ปัจจุบันของคุณออกจากโปรเจ็กต์ที่มีอยู่แล้วที่จัดเก็บไว้ในอุปกรณ์ของคุณ

ในการเริ่มต้น ให้สร้างสภาพแวดล้อมเสมือนโดยใช้ไลบรารี Pipenv ในลักษณะต่อไปนี้:

 pipenv shell 

ต่อไป เราจะดำเนินการติดตั้งส่วนประกอบซอฟต์แวร์ที่จำเป็นเพื่อสร้างตัวแทนการสนทนา

 pipenv install streamlit replicate 

Streamlit เป็นเฟรมเวิร์กการพัฒนาแอปพลิเคชันเว็บโอเพ่นซอร์สอเนกประสงค์ที่ออกแบบมาเพื่ออำนวยความสะดวกในการปรับใช้การเรียนรู้ของเครื่องจักรและโครงการวิทยาศาสตร์ข้อมูลอย่างรวดเร็ว

โดยพื้นฐานแล้ว “การจำลอง” หมายถึงแพลตฟอร์มการประมวลผลแบบคลาวด์ที่ให้ผู้ใช้เข้าถึงโมเดลการเรียนรู้ของเครื่องแบบโอเพ่นซอร์สที่หลากหลาย ซึ่งสามารถปรับใช้และใช้งานได้อย่างง่ายดายในแอปพลิเคชันต่างๆ

รับโทเค็น API Llama 2 ของคุณจากการทำซ้ำ

หากต้องการรับคีย์โทเค็นการจำลอง คุณต้องลงทะเบียนบัญชีใน จำลอง ก่อน โดยใช้บัญชี GitHub ของคุณ

การจำลองอนุญาตให้ลงชื่อเข้าใช้ผ่าน บัญชี GitHub เท่านั้น

เมื่อเข้าถึงแดชบอร์ด ให้ไปที่แท็บ"สำรวจ"และค้นหาแถบค้นหา ป้อน’Llama 2 chat’ในช่องค้นหาเพื่อดูโมเดลเฉพาะที่ชื่อว่า’llama-2–70b-chat'

/th/images/how-to-build-a-chatbot-using-streamlit-and-llama-v2-llama2.jpg

โปรดเลือกตัวเลือก “Llama 2 API Endpoint” จากเมนูแบบเลื่อนลงแล้วคลิก เมื่อคุณดำเนินการดังกล่าวแล้ว ให้ไปที่ส่วนที่ชื่อ"โทเค็น API"ที่นี่คุณจะพบปุ่มที่กำหนดว่าเป็น “แอปพลิเคชัน Python” เมื่อคลิกปุ่มนี้ คุณจะได้รับสิทธิ์ในการเข้าถึงข้อมูลรับรองที่จำเป็นสำหรับการใช้ Llama 2 API ในโปรเจ็กต์ Python ของคุณ

/th/images/how-to-build-a-chatbot-using-streamlit-and-llama-v2-api.jpg

โปรดคัดลอกโทเค็น API เพื่อวัตถุประสงค์ในการจำลองและตรวจสอบให้แน่ใจว่ามีการจัดเก็บข้อมูลที่ปลอดภัยสำหรับการใช้งานในอนาคต

สามารถเข้าถึงซอร์สโค้ดฉบับสมบูรณ์ได้ผ่านทางพื้นที่เก็บข้อมูล GitHub ของเรา ซึ่งเป็นแหล่งข้อมูลที่ครอบคลุมสำหรับนักพัฒนาเพื่อใช้และมีส่วนร่วมในโปรเจ็กต์

การสร้าง Chatbot

เพื่อเริ่มต้นการพัฒนา Llama Chatbot ให้สร้างไฟล์สองไฟล์แยกกันในขั้นต้น โดยไฟล์หนึ่งชื่อ “llama\_chatbot.py” ซึ่งทำหน้าที่เป็นสคริปต์หลักสำหรับการใช้งานฟังก์ชันการทำงานของแชทบอท และอีกไฟล์หนึ่งชื่อ “.env” ซึ่งออกแบบมาโดยเฉพาะสำหรับ ข้อมูลที่ละเอียดอ่อน เช่น รหัสลับและโทเค็น API ที่จำเป็นสำหรับการดำเนินการที่เหมาะสม การปฏิบัติตามการตั้งค่าเริ่มต้นนี้จะทำให้คุณสามารถแยกข้อมูลที่ละเอียดอ่อนออกจากซอร์สโค้ดหลักได้อย่างมีประสิทธิภาพ ขณะเดียวกันก็รับประกันการผสานรวมกับบริการภายนอกได้อย่างราบรื่น

เพื่อที่จะใช้ฟังก์ชันต่างๆ ภายในสคริปต์ llama\_chatbot.py จำเป็นต้องนำเข้าไลบรารีหลายๆ ไลบรารี กระบวนการนำเข้าไลบรารีเหล่านี้เกี่ยวข้องกับการระบุชื่อที่เกี่ยวข้องและตรวจสอบให้แน่ใจว่าไลบรารีเหล่านี้ถูกรวมเข้ากับโค้ดเบสที่มีอยู่อย่างเหมาะสม ช่วยให้การทำงานและการดำเนินการตามฟังก์ชันที่ต้องการของแชทบอทเป็นไปอย่างราบรื่น

 import streamlit as st
 import os
 import replicate 

ต่อไป เราจะสร้างพารามิเตอร์ส่วนกลางสำหรับโมเดลภาษา"llama-2–70b-chat"โดยการเริ่มต้นตัวแปรที่เกี่ยวข้อง

 # 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='') 

เพื่อรวมโทเค็น Replicate API และข้อมูลโมเดลภายในตัวแปรสภาพแวดล้อมของแอปพลิเคชันของคุณ คุณควรเพิ่มรายละเอียดที่เกี่ยวข้องต่อท้ายไฟล์ “.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 ที่เกี่ยวข้องแล้ว

การออกแบบกระแสการสนทนาของ Chatbot

กระบวนการเริ่มต้นการใช้แบบจำลองภาษา Llama 2 สำหรับงานเฉพาะสามารถอำนวยความสะดวกได้โดยการสร้างพรอมต์เบื้องต้นที่ระบุวัตถุประสงค์ที่ต้องการ ตัวอย่างเช่น หากเป้าหมายคือการใช้แบบจำลองในฐานะผู้ช่วย การกำหนดคำแถลงการเริ่มต้นที่เหมาะสมจะเกี่ยวข้องกับการระบุเจตนาดังกล่าวและอาจระบุขอบเขตการมุ่งเน้นเฉพาะด้านหรือความเชี่ยวชาญในขอบเขตที่จำเป็นสำหรับการบรรลุบทบาทอย่างมีประสิทธิภาพ ด้วยการให้คำแนะนำที่ชัดเจนล่วงหน้า การโต้ตอบที่ตามมากับผู้ช่วยเสมือนที่ขับเคลื่อนด้วย AI จะตามมาอย่างมีประสิทธิภาพและแม่นยำยิ่งขึ้น

 # 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

def setup_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) 

กระบวนการดังกล่าวข้างต้นกำหนดค่าพารามิเตอร์ที่สำคัญ เช่น chat\_dialogue , pre\_prompt , llm , top\_p , max\_seq\_len และ อุณหภูมิ ภายในสถานะของเซสชัน นอกจากนี้ยังอำนวยความสะดวกในการเลือกรุ่น Llama 2 ที่ต้องการตามความต้องการของผู้ใช้

นี่คือตัวอย่างวิธีที่คุณสามารถสร้างฟังก์ชันใน Python ที่แสดงเนื้อหาแถบด้านข้างสำหรับแอป Streamlit ของคุณ:pythondef render_sidebar():# รหัสเพื่อสร้างโค้ด HTML สำหรับแถบด้านข้างจะไปที่นี่ กลับ “ เนื้อหาแถบด้านข้างของคุณไปที่นี่ ”

 def render_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 is not None:
       st.session_state['pre_prompt'] = new_prompt \+ "\n"
   else:
       st.session_state['pre_prompt'] = DEFAULT_PRE_PROMPT 

ส่วนประกอบที่กล่าวมาข้างต้นจะแสดงส่วนหัวและพารามิเตอร์การกำหนดค่าที่สามารถแก้ไขได้เพื่อเพิ่มประสิทธิภาพการทำงานของแชทบอท Llama 2 ซึ่งอำนวยความสะดวกในการปรับเปลี่ยนที่จำเป็นสำหรับฟังก์ชันการทำงานที่เหมาะสมที่สุด

นี่คือการใช้งานที่เป็นไปได้สำหรับการแสดงผลประวัติการแชทในพื้นที่เนื้อหาหลักของแอป Streamlit โดยใช้ HTML และ CSS:pythonimport streamlit เป็น stfrom Transformers import GPT2LMHeadModel, GPT2Tokenizerfrom streamlit_chat import message# Load fine-tuned model and tokenizermodel=GPT2LMHeadModel.from_pretrained(‘meditations_model’)tokenizer=GPT2Tokenizer.from_pretrained(‘meditations_model’)# กำหนด chatbot functiondef chatbot(text):input_ids=tokenizer.encode(text, return_tensors=‘pt’)output=model.generate(input_ids=input_ids, max_length=

 def render_chat_history():
   response_container = st.container()
   for message in st.session_state.chat_dialogue:
       with st.chat_message(message["role"]):
           st.markdown(message["content"]) 

วิธีการนี้จะสำรวจวัตถุ chat\_dialogue ที่จัดเก็บไว้ในสถานะของเซสชัน โดยแสดงการสื่อสารแต่ละรายการที่มีการแลกเปลี่ยนกันระหว่างผู้ใช้และผู้ช่วย พร้อมด้วยตัวระบุบทบาทตามลำดับ (ทั้ง"ผู้ใช้"หรือ"ผู้ช่วย")

ข้อมูลโค้ดที่ให้มาดูเหมือนจะเป็นตัวยึดตำแหน่งสำหรับฟังก์ชันที่ประมวลผลอินพุตของผู้ใช้ แต่ไม่มีการใช้งานจริง ในการจัดการอินพุตของผู้ใช้ในลักษณะที่ซับซ้อนยิ่งขึ้น จำเป็นต้องกำหนดและใช้อัลกอริทึมหรือตรรกะที่เหมาะสมภายในฟังก์ชันตามความต้องการเฉพาะของแอปพลิเคชันของคุณ

 def handle_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) 

องค์ประกอบการนำเสนอมีอินเทอร์เฟซการป้อนข้อความสำหรับผู้ใช้ ทำให้ผู้ใช้สามารถส่งข้อความหรือสอบถามภายในบริบทการสนทนาได้ เมื่อได้รับการป้อนข้อมูลจากผู้ใช้ ข้อความดังกล่าวจะเพิ่มต่อท้ายบทสนทนาที่กำลังดำเนินอยู่ซึ่งจัดเก็บไว้เป็นส่วนหนึ่งของข้อมูลเฉพาะเซสชัน ซึ่งรวมถึงข้อมูลเมตาที่ระบุบทบาทของผู้เข้าร่วมว่าเป็น"ผู้ใช้"หรือ"บอท"

นี่คือตัวอย่างวิธีที่คุณสามารถใช้ฟังก์ชันนี้โดยใช้ Python และไลบรารี Hugging Face Transformers:pythonfrom Transformers import LlamaTokenizer, LlamaForCausalLMimport torchdef Generate_responses(input_text):# โหลดโทเค็น Llama ที่ได้รับการฝึกอบรมล่วงหน้าและ modeltokenizer=LlamaTokenizer.from_pretrained(‘facebook/llama-base’)model=LlamaForCausalLM.from_pretrained(‘facebook/llama-base’)# เข้ารหัสข้อความอินพุตเป็นอินพุต IDsinputs=tokenizer(input_text, return_tensors=‘pt’).input_ids# Generate

 def generate_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}) 

ระบบจะสร้างการเก็บถาวรการสื่อสารในอดีต ซึ่งครอบคลุมทั้งอินพุตของมนุษย์และ AI ก่อนที่จะเรียกใช้กระบวนการจำลองแบบที่เลื่อนออกไป ช่วยให้ได้รับประสบการณ์การสนทนาที่ราบรื่นโดยการอัปเดตอินเทอร์เฟซแบบไดนามิกด้วยการตอบกลับล่าสุดของ AI

งานหลักของแอปพลิเคชันนี้คือการแสดงส่วนประกอบทั้งหมดภายในกรอบงาน Streamlit ซึ่งทำหน้าที่เป็นอินเทอร์เฟซที่ครอบคลุมสำหรับผู้ใช้

 def render_app():
   setup_session_state()
   render_sidebar()
   render_chat_history()
   handle_user_input()
   generate_assistant_response()

แอปพลิเคชันใช้ลำดับการดำเนินการที่จัดระเบียบเพื่อสร้างสถานะที่เป็นอยู่ของเซสชัน แสดงแผงด้านข้าง บันทึกการสนทนา ประมวลผลอินพุตของผู้ใช้ และสร้างการตอบกลับของผู้ช่วยเหลือโดยใช้ฟังก์ชันที่กำหนดไว้ก่อนหน้านี้ทั้งหมด

นี่คือตัวอย่างวิธีที่คุณสามารถแก้ไขฟังก์ชัน main() ใน index.js เพื่อใช้ฟังก์ชัน renderApp() และเริ่มการทำงานของแอปพลิเคชันเมื่อสคริปต์ถูกเรียกใช้งาน:javascriptasync function main() {const app=createContext (โมฆะ);//สร้างบริบทของผู้ให้บริการด้วยค่าเริ่มต้นเป็น null//รวมฟังก์ชัน renderApp ด้วยบล็อก try-catch สำหรับการจัดการข้อผิดพลาด ลอง {renderApp(app, document.getElementById(‘root’));} catch (err) {console.error( เกิดข้อผิดพลาดในการรันคอมโพเนนต์รูท:\n${err.stack} );}}//เรียกใช้ฟังก์ชันหลักเพื่อรัน applicationmain();โค้ดนี้สร้างอินสแตนซ์ใหม่ของบริบทของผู้ให้บริการโดยส่ง null

 def main():
   render_app()

if __name__ == "__main__":
   main() 

ขณะนี้แอปพลิเคชันของคุณได้รับการจัดเตรียมและติดตั้งสำหรับการปรับใช้ ทำให้สามารถดำเนินการได้อย่างง่ายดาย

การจัดการคำขอ API

เพื่อใช้งานฟังก์ชันที่ร้องขอ จำเป็นต้องสร้างโมดูล Python ใหม่ชื่อ"utils.py"ภายในไดเร็กทอรีหลักของโปรเจ็กต์ โมดูลนี้จะมีฟังก์ชันเดียวที่ทำงานที่ระบุ ด้านล่างนี้เป็นตัวอย่างของวิธีการบรรลุผลนี้:pythondef some_function():# รหัสฟังก์ชันอยู่ที่นี่…

 import replicate
import time

# Initialize debounce variables
last_call_time = 0
debounce_interval = 2 # Set the debounce interval (in seconds)


def debounce_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_time

   if 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 

ฟังก์ชันการทำงานนี้รวมเอากลไก debouncing เพื่อลดความเสี่ยงของคำขอ API ที่เกิดขึ้นบ่อยเกินไปและเกินความจำเป็นอันเป็นผลมาจากการโต้ตอบของผู้ใช้ ดังนั้นจึงรับประกันการใช้ทรัพยากรอย่างรอบคอบ

รวมฟังก์ชันตอบกลับ debounced ไว้ในสคริปต์ llama\_chatbot.py โดยทำตามขั้นตอนต่อไปนี้:

 from utils import debounce_replicate_run 

ตอนนี้รันแอปพลิเคชัน:

 streamlit run llama_chatbot.py 

ผลลัพธ์ที่คาดหวัง:

การโต้ตอบที่แสดงในเอาต์พุตนี้เป็นบทสนทนาระหว่างโมเดลภาษา AI และผู้ใช้ที่เป็นมนุษย์

แอปพลิเคชั่นในโลกแห่งความเป็นจริงของ Streamlit และ Llama 2 Chatbots

สามารถสังเกตการใช้งานซอฟต์แวร์ Llama 2 ได้จริงในหลายอุตสาหกรรม เช่น:

Chatbots เป็นเครื่องมืออเนกประสงค์ที่ใช้ในการพัฒนาตัวแทนแบบโต้ตอบที่สามารถดำเนินการสนทนาแบบเรียลไทม์ในหัวข้อต่างๆ โดยใช้ประโยชน์จากการประมวลผลภาษาธรรมชาติและอัลกอริธึมปัญญาประดิษฐ์เพื่อให้การตอบสนองที่เกี่ยวข้องโดยอิงตามอินพุตของผู้ใช้

ด้วยการใช้เทคโนโลยีการเข้าใจภาษาธรรมชาติ เครื่องมือนี้ได้รับการออกแบบมาเพื่อพัฒนาตัวแทนการสนทนาที่สามารถเข้าใจและตอบสนองต่อการสื่อสารของมนุษย์ในลักษณะที่เลียนแบบปฏิสัมพันธ์ของมนุษย์

การใช้เทคโนโลยีการแปลภาษานั้นจำกัดอยู่เพียงการแปลภาษาในงานทางภาษาต่างๆ

การสรุปข้อความเกี่ยวข้องกับการย่องานเขียนที่มีความยาวให้สั้นลงและกระชับมากขึ้น โดยยังคงความหมายที่สำคัญและประเด็นสำคัญไว้ ในขณะเดียวกันก็ละทิ้งรายละเอียดที่ไม่จำเป็นออกไป กระบวนการนี้อาจมีประโยชน์ในบริบทต่างๆ เช่น วารสารศาสตร์ บทความวิจัย หรือโซเชียลมีเดีย ซึ่งการเข้าถึงข้อมูลอย่างรวดเร็วถือเป็นสิ่งสำคัญ ด้วยการนำเสนอเฉพาะส่วนที่สำคัญที่สุดของหัวข้อที่กำหนด การสรุปช่วยให้ผู้อ่านเข้าใจแนวคิดหลักได้อย่างมีประสิทธิภาพโดยไม่ต้องอ่านเอกสารทั้งหมดทีละคำ

การประยุกต์ใช้ Llama 2 เพื่อวัตถุประสงค์ในการวิจัยเกี่ยวข้องกับการตอบคำถามซึ่งครอบคลุมหัวข้อต่างๆ

อนาคตของ AI

ความท้าทายที่เกิดจากค่าใช้จ่ายสูงที่เกี่ยวข้องกับการใช้โมเดลภาษาขนาดใหญ่ เช่น ที่พบใน GPT-3.5 และ GPT-4 ได้จำกัดความสามารถของเอนทิตีขนาดเล็กในการสร้างแอปพลิเคชันที่สำคัญ เนื่องจากการเข้าถึง API สำหรับโมเดลเหล่านี้มักจะมา ด้วยค่าใช้จ่ายจำนวนมาก

การเปิดตัวกรอบงานทางภาษาที่ทรงพลัง เช่น Llama 2 ไปจนถึงพี่น้องเพื่อการพัฒนา ถือเป็นการเริ่มต้นยุคใหม่ของปัญญาประดิษฐ์ เหตุการณ์นี้จะส่งเสริมการใช้ระบบเหล่านี้อย่างสร้างสรรค์และจินตนาการในสถานการณ์จริง ซึ่งจะช่วยขับเคลื่อนความก้าวหน้าไปสู่การบรรลุปัญญาประดิษฐ์ขั้นสูงอย่างรวดเร็ว