LLM / LLM.py
Sameercodes's picture
Update LLM.py
f19a654 verified
from langchain_core.prompts import ChatPromptTemplate, PromptTemplate
from langchain_groq import ChatGroq
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.schema.output_parser import StrOutputParser
from dotenv import load_dotenv
from huggingface_hub import login
import os
# Load environment variables
load_dotenv()
login(token=os.environ["HUGGING_FACE_API_KEY"])
os.environ['CURL_CA_BUNDLE'] = '' # Optional workaround for certificate issues
class Bot():
def __init__(self):
self.groq_models = ['gemma-7b-it', 'llama3-70b-8192',
'llama3-8b-8192', 'mixtral-8x22b'] # Updated here
self.hf_models = ["01-ai/Yi-1.5-34B-Chat", "google/gemma-1.1-2b-it",
"google/gemma-1.1-7b-it"]
self.google_models = ["gemini-1.0-pro", "gemini-1.5-flash",
"gemini-1.5-pro"]
# Main model pool
self.models = self.google_models + self.hf_models + self.groq_models
def call_groq(self, model, temp=0.7, given_prompt="Hi"):
try:
llm = ChatGroq(
model=model,
temperature=temp,
groq_api_key=os.environ["GROQ_API_KEY"]
)
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
("human", "{text}")
])
chain = prompt | llm | StrOutputParser()
return chain.invoke({"text": given_prompt})
except Exception as e:
return f"Error (Groq): {str(e)}"
def call_hf(self, model, temp=0.7, given_prompt="Hi"):
try:
llm = HuggingFaceEndpoint(
repo_id=model,
temperature=temp
)
chat = ChatHuggingFace(llm=llm, verbose=True)
prompt = PromptTemplate(
template="""
You are a helpful assistant
User: {query}
Answer:
""",
input_variables=["query"]
)
chain = prompt | chat | StrOutputParser()
return chain.invoke({"query": given_prompt})
except Exception as e:
return f"Error (HF): {str(e)}"
def call_google(self, model, temp=0.7, given_prompt="Hi"):
try:
llm = ChatGoogleGenerativeAI(
model=model,
temperature=temp,
google_api_key=os.environ["GOOGLE_API_KEY"]
)
prompt = ChatPromptTemplate.from_messages([
("human", "{text}")
])
chain = prompt | llm | StrOutputParser()
return chain.invoke({"text": given_prompt})
except Exception as e:
return f"Error (Google): {str(e)}"
def response(self, model, prompt="Hi", temperature=0.7):
if model in self.groq_models:
return self.call_groq(model=model, temp=temperature, given_prompt=prompt)
elif model in self.hf_models:
return self.call_hf(model=model, temp=temperature, given_prompt=prompt)
elif model in self.google_models:
return self.call_google(model=model, temp=temperature, given_prompt=prompt)
else:
return "Sorry! App not working properly – unknown model"