SecondSpace / app.py
AminFaraji's picture
Update app.py
e3965cf verified
raw
history blame
2.83 kB
try:
from langchain_community.vectorstores import Chroma
except:
from langchain_community.vectorstores import Chroma
from langchain.chains import ConversationChain
from langchain.chains.conversation.memory import ConversationBufferWindowMemory
from langchain import PromptTemplate
from langchain_core.prompts import ChatPromptTemplate
from langchain_groq import ChatGroq
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
import torch
import os
import requests # Or your Groq library
groq_api_key = os.environ.get("my_groq_api_key")
# Initialize a ChatGroq object with a temperature of 0 and the "mixtral-8x7b-32768" model.
llm = ChatGroq(temperature=0, model_name="llama3-70b-8192",api_key=groq_api_key)
model_name = "BAAI/bge-m3"
device = "cuda" if torch.cuda.is_available() else "cpu"
embeddings = HuggingFaceEmbeddings(model_name=model_name, model_kwargs={'device': device})
# we run this cell every time
db = Chroma(embedding_function=embeddings, persist_directory='/Persian Chroma/')
memory = ConversationBufferWindowMemory(
memory_key="history", k=3, return_only_outputs=True
)
template = """
محتوای زیر بین انسان و هوش مصنوعی است. براساس این مکالمه به سوال مطرح شده جواب بده
محتوا:
{history}
"""
s="""
\n سوال: {input}
\n جواب:""".strip()
prompt = PromptTemplate(input_variables=["history", "input"], template=template+context_text+'\n'+s)
chain = ConversationChain(
llm=llm,
prompt=prompt,
memory=memory,
verbose=True,
)
# Generate a response from the Llama model
def get_llama_response(message: str, history: list) -> str:
"""
Generates a conversational response from the Llama model.
Parameters:
message (str): User's input message.
history (list): Past conversation history.
Returns:
str: Generated response from the Llama model.
"""
query_text =message
results = db.similarity_search_with_relevance_scores(query_text, k=2)
context_text = "\n\n---\n\n".join([doc.page_content for doc, _score in results])
template = """
محتوای زیر بین انسان و هوش مصنوعی است. براساس این مکالمه به سوال مطرح شده جواب بده
محتوا:
{history}
"""
s="""
\n سوال: {input}
\n جواب:""".strip()
prompt = PromptTemplate(input_variables=["history", "input"], template=template+context_text+'\n'+s)
#print(template)
chain.prompt=prompt
res = chain.predict(input=query_text)
return res
#return response.strip()
import gradio as gr
iface = gr.Interface(fn=get_llama_response, inputs=gr.Textbox(),
outputs="textbox")
iface.launch(share=True)