udayg01
add app
260a7c3
# -*- coding: utf-8 -*-
"""Mockinterview-Falcon.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1hCKPV5U_bg7QQXPUIwwDvCdB1N8fgz0z
## Install dependencies
"""
"""## Import dependencies"""
import os
import torch
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
pipeline
)
import csv
import codecs
from langchain import PromptTemplate, LLMChain
import random
import json
"""## Creating pipeline for Falcon-7b"""
from langchain import HuggingFacePipeline
from transformers import AutoTokenizer, pipeline
import torch
model = "tiiuae/falcon-7b-instruct" #tiiuae/falcon-40b-instruct
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = pipeline(
"text-generation", #task
model=model,
tokenizer=tokenizer,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto",
max_length=512,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id
)
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})
"""## Loading csv (attempting the program without RAG)
* RAG was reducing program efficiency.
"""
file = "/content/Combined_Data_set.csv"
fields = []
rows = []
with codecs.open(file, 'r', 'utf-8') as csvfile:
csvreader = csv.reader(csvfile)
fields = next(csvreader)
for row in csvreader:
rows.append(row)
"""## LLMChain for deciding next question"""
# Here we can make certain changes through the prompt template, like the tone in which we want the questions to be asked, we may use few shots for that.
record = random.randint(0,len(rows))
def get_question():
topic = rows[record][0] #extracting question from csv
template1 = """
You are a data science interviewer between an interview, ask a question regarding the following given topic:
Topic to ask question on as a interviewer: {question}
"""
prompt1 = PromptTemplate(template=template1, input_variables=["question"])
llm_chain = LLMChain(prompt=prompt1, llm=llm)
next_question = llm_chain.run(topic)
# print(next_question)
json_string = "{{\"question\": \"{}\"}}".format(next_question)
json_ques = json.loads(json_string, strict=False)
return json_ques
result = get_question()
result
result['question']
"""## LLMChain for evaluating user response"""
# Now we can improve performance through the prompt, like we can provide a few shots, tell it about how to give positive and negative responses using some shots.
# corr_ans = rows[record][1] #extracting answer from csv
def get_evaluation(response):
template2 = '''
You are a data scientist interviewer and you are taking the interview of someone.
Evaluate the response given by that person: {response}
'''
prompt2 = PromptTemplate(template=template2, input_variables=["response"])
llm_chain2 = LLMChain(prompt=prompt2, llm=llm)
evaluation = llm_chain2.run(response)
#print(evaluation)
json_string = "{{\"response\" : \"{}\" }}".format(evaluation)
json_eval = json.loads(json_string, strict=False)
return json_eval
response = input("Enter your response: ")
result = get_evaluation(response)
result
result['response']