shayari / utilis.py
umar-100's picture
Upload folder using huggingface_hub
d5e04a2 verified
import os
from dotenv import load_dotenv
from langchain_pinecone import PineconeVectorStore
from pinecone import Pinecone
from langchain_together import TogetherEmbeddings
from langchain_mistralai import ChatMistralAI
import cohere
from langchain.retrievers.contextual_compression import ContextualCompressionRetriever
from langchain_cohere import CohereRerank
load_dotenv()
PINECONE_API_KEY=os.getenv("PINECONE_API_KEY")
MISTRAL_API_KEY=os.getenv("MISTRAL_API_KEY")
TOGETHER_API=os.getenv("TOGETHER_API")
COHERE_API_KEY=os.getenv("COHERE_API_KEY")
embeddings = TogetherEmbeddings(
model="togethercomputer/m2-bert-80M-8k-retrieval",
api_key=TOGETHER_API
)
model=ChatMistralAI(
model="mistral-large-latest",
api_key=MISTRAL_API_KEY
)
pc = Pinecone(api_key=PINECONE_API_KEY)
index_name = "together"
index = pc.Index(index_name)
vector_store = PineconeVectorStore(index=index, embedding=embeddings)
retriever = vector_store.as_retriever()
compressor = CohereRerank(model="rerank-v3.5")
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever
)
def retrieve(query):
compressed_docs = compression_retriever.invoke(query)
return compressed_docs[0]
def llm(query, history):
query=model.invoke(f"You are a helpful AI assistant. Translate the following query to urdu if the query is in urdu then return the same query. Query: {query}. Remember just translate the query and nothing else.").content
results=retrieve(query)
prompt=f""""
You are a helpful AI Assistant and your job is to help user find relevant shayari.
The query is {query}
The matching result after semantic search is {results.page_content}. You may exclude interpretation given in the results. Just respond from the context.
"""
try:
response=model.invoke(prompt).content
history = history or []
history.append(("You", query))
history.append(("Assistant", results.page_content))
return history, history
except Exception as e:
return history, history + [("Bot", f"Error in API request: {str(e)}")]