استفاده ازمدل زبانی درنا
با عرض سلام. وقتتون بخیر . من یک پروژه ساخت چت بات دارم که میخواهم از مدل درنا 2 متن باز برای ان استفاده کنم ولی با اینکه توکن read از سایت hugging face دریافت کرده ام پس از اجرای برنامه پیغام خطا می دهد که استاده از این مدل pro می باشد .
لطفا جهت استفاده درست از این مدل راهنمایی بفرمایید.
امکانش هست کوتاه ترین کدی که بتونه خطاتون رو بازتولید کنه بفرستید؟
در صفحه اصلی مدل، برای دسترسی ایمیلتون رو وارد کردید که دسترسی داده بشه بهتون؟
این لینک مدل هست:
https://huggingface.co/PartAI/Dorna2-Llama3.1-8B-Instruct
با باز کردن این صفحه شما باید این عبارت رو ببینید:
Gated model You have been granted access to this model
بله این عبارت در صفحه هست . با ایمیلم اول وارد سایت شده ام بعد از سرج به صفحه
. وارد شده ام dona2
ایا بجز اینججا جای دیگری هم باید ایمیل وارد کنم؟
import streamlit as st
from PyPDF2 import PdfReader
from langchain.text_splitter import CharacterTextSplitter
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationalRetrievalChain
from langchain_community.llms import HuggingFaceHub
قالبهای HTML برای پیامهای چت
user_template = '
bot_template = '
تنظیم API key
HUGGINGFACE_API_KEY = "YOUR_HUGGINGFACE_API_KEY" # کلید HuggingFace خود را اینجا قرار دهید
def get_pdf_text(pdf_docs):
text = ""
try:
for pdf in pdf_docs:
pdf_reader = PdfReader(pdf)
for page in pdf_reader.pages:
text += page.extract_text()
return text
except Exception as e:
st.error(f"خطا در پردازش PDF: {str(e)}")
return ""
def get_text_chunks(text):
if not text.strip():
return []
text_splitter = CharacterTextSplitter(
separator="\n",
chunk_size=1000,
chunk_overlap=200,
length_function=len
)
return text_splitter.split_text(text)
def get_vectorstore(text_chunks):
if not text_chunks:
return None
try:
# استفاده از مدل Embedding مناسب برای زبان فارسی
embeddings = HuggingFaceEmbeddings(
model_name="SajjadAyoubi/persian-distilbert-base-mean-tokens",
model_kwargs={"token": HUGGINGFACE_API_KEY}
)
return FAISS.from_texts(texts=text_chunks, embedding=embeddings)
except Exception as e:
st.error(f"خطا در ایجاد vectorstore: {str(e)}")
return None
def get_conversation_chain(vectorstore):
if vectorstore is None:
return None
try:
# استفاده از مدل Dorna2
llm = HuggingFaceHub(
repo_id="PartAI/Dorna2-Llama3.1-8B-Instruct",
huggingfacehub_api_token=HUGGINGFACE_API_KEY,
model_kwargs={
"temperature": 0.7,
"max_new_tokens": 512,
"top_p": 0.95,
"repetition_penalty": 1.15
}
)
memory = ConversationBufferMemory(
memory_key='chat_history',
return_messages=True
)
return ConversationalRetrievalChain.from_llm(
llm=llm,
retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
memory=memory,
verbose=True
)
except Exception as e:
st.error(f"خطا در ایجاد زنجیره مکالمه: {str(e)}")
return None
def handle_userinput(user_question):
if st.session_state.conversation is None:
st.warning("لطفاً ابتدا اسناد PDF را آپلود و پردازش کنید.")
return
try:
response = st.session_state.conversation({'question': user_question})
if 'chat_history' not in st.session_state:
st.session_state.chat_history = []
if 'chat_history' in response:
st.session_state.chat_history = response['chat_history']
for message in st.session_state.chat_history:
if hasattr(message, 'content'):
if message.type == 'human':
st.write(user_template.replace("{{MSG}}", message.content), unsafe_allow_html=True)
else:
st.write(bot_template.replace("{{MSG}}", message.content), unsafe_allow_html=True)
else:
st.write(user_template.replace("{{MSG}}", user_question), unsafe_allow_html=True)
if 'answer' in response:
st.write(bot_template.replace("{{MSG}}", response['answer']), unsafe_allow_html=True)
except Exception as e:
st.error(f"خطا در پردازش سؤال: {str(e)}")
st.error("لطفاً صفحه را رفرش کرده و دوباره تلاش کنید.")
def main():
st.set_page_config(
page_title="چت با چندین PDF - Dorna2",
page_icon=":books:",
layout="wide"
)
if "conversation" not in st.session_state:
st.session_state.conversation = None
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
st.header("چت با چندین فایل PDF با استفاده از Dorna2 :books:")
with st.sidebar:
st.subheader("اسناد شما")
pdf_docs = st.file_uploader(
"فایلهای PDF خود را اینجا آپلود کنید و روی 'پردازش' کلیک کنید",
accept_multiple_files=True,
type=['pdf']
)
if st.button("پردازش"):
if not pdf_docs:
st.warning("لطفاً ابتدا فایلهای PDF را آپلود کنید.")
return
with st.spinner("در حال پردازش..."):
raw_text = get_pdf_text(pdf_docs)
if raw_text:
text_chunks = get_text_chunks(raw_text)
vectorstore = get_vectorstore(text_chunks)
st.session_state.conversation = get_conversation_chain(vectorstore)
st.session_state.chat_history = []
st.success("پردازش تکمیل شد! اکنون میتوانید سؤالات خود را بپرسید.")
user_question = st.text_input("سؤال خود را درباره اسناد بپرسید:")
if user_question:
handle_userinput(user_question)
if name == 'main':
main()
بعد از اجرا این ارور می اید
Model requires a Pro subscription; check out hf.co/pricing to learn more. Make sure to include your HF token in your query.