|
import streamlit as st |
|
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline |
|
from sentence_transformers import SentenceTransformer |
|
from langchain.vectorstores import Chroma |
|
import os |
|
|
|
|
|
model_id = "hewoo/meta-llama-3.2-3b-chatbot" |
|
token = os.getenv("HF_API_TOKEN") |
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id, use_auth_token=token) |
|
model = AutoModelForCausalLM.from_pretrained(model_id, use_auth_token=token) |
|
|
|
|
|
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=150, temperature=0.5, top_p=0.85, top_k=40, repetition_penalty=1.2) |
|
|
|
|
|
embedding_model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2") |
|
persist_directory = "./chroma_batch_vectors" |
|
vectorstore = Chroma(persist_directory=persist_directory, embedding_function=embedding_model.encode) |
|
retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) |
|
|
|
|
|
def summarize_results(search_results): |
|
combined_text = "\n".join([result.page_content for result in search_results]) |
|
summary = summarizer(combined_text, max_length=100, min_length=30, do_sample=False)[0]["summary_text"] |
|
return summary |
|
|
|
|
|
def generate_response(user_input): |
|
|
|
search_results = retriever.get_relevant_documents(user_input) |
|
context = "\n".join([result.page_content for result in search_results]) |
|
|
|
|
|
input_text = f"๋งฅ๋ฝ: {context}\n์ง๋ฌธ: {user_input}" |
|
response = pipe(input_text)[0]["generated_text"] |
|
|
|
return response |
|
|
|
|
|
st.title("์ฑ๋ดํ
์คํธ") |
|
st.write("Llama 3.2-3B ๋ชจ๋ธ์ ์ฌ์ฉํ ์ฑ๋ด์
๋๋ค. ์ง๋ฌธ์ ์
๋ ฅํด ์ฃผ์ธ์.") |
|
|
|
|
|
user_input = st.text_input("์ง๋ฌธ") |
|
if user_input: |
|
response = generate_response(user_input) |
|
st.write("์ฑ๋ด ์๋ต:", response) |
|
|