Akash473's picture
Update app.py
ae6dd95 verified
from huggingface_hub import InferenceClient
import gradio as gr
client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.1")
# Your static prompt
static_prompt = """
Simulate a GenAI-based interview scenario for the position of Solution Architect with a candidate named "John Doe." Follow these steps:
1. Start with a friendly greeting and welcome message. Ask John to introduce himself briefly.
2. After John introduces himself, ask if he has any initial thoughts or questions about the position.
3. If John shares any initial thoughts or questions, acknowledge them and express appreciation. If not, proceed with the formal interview questions:
a. Tools and Technologies: Could you please list and briefly describe the primary tools and technologies you have experience with? Additionally, could you elaborate on how you have applied them in your previous roles?
4. After John provides the response to the first question, acknowledge the answer and proceed to the second question:
b. Years of Experience: Can you tell us about the number of years of experience you have in the field of solution architecture? Specifically, do you have any notable projects or achievements during your career that demonstrate your expertise?
5. After receiving the response to the second question, acknowledge the answer and proceed to the third question:
c. Team Leadership: Have you ever led a team in your role as a Solution Architect? How many years have you spent in such a capacity, and what were the most significant learnings or challenges you encountered while doing so?
6. After John responds to the third question, acknowledge the answer and conclude the interview:
Provide a summary of the key points, including tools used, years of experience, and years leading a team. Express gratitude for John's time and participation.
Remember to maintain a natural and polite conversational tone throughout the interview. Address any final thoughts or questions from John in the closing statement.
"""
def format_prompt(message, history):
prompt = "<s>"
# Add the static prompt as the first message
prompt += f"[INST] {static_prompt} [/INST]"
for user_prompt, bot_response in history:
prompt += f"[INST] {user_prompt} [/INST]"
prompt += f" {bot_response}</s> "
prompt += f"[INST] {message} [/INST]"
return prompt
def generate(
prompt, history, temperature=0.9, max_new_tokens=256, top_p=0.95, repetition_penalty=1.0,
):
temperature = float(temperature)
if temperature < 1e-2:
temperature = 1e-2
top_p = float(top_p)
generate_kwargs = dict(
temperature=temperature,
max_new_tokens=max_new_tokens,
top_p=top_p,
repetition_penalty=repetition_penalty,
do_sample=True,
seed=42,
)
formatted_prompt = format_prompt(prompt, history)
stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
output = ""
for response in stream:
output += response.token.text
yield output
return output
additional_inputs=[
gr.Slider(
label="Temperature",
value=0.9,
minimum=0.0,
maximum=1.0,
step=0.05,
interactive=True,
info="Higher values produce more diverse outputs",
),
gr.Slider(
label="Max new tokens",
value=256,
minimum=0,
maximum=1048,
step=64,
interactive=True,
info="The maximum numbers of new tokens",
),
gr.Slider(
label="Top-p (nucleus sampling)",
value=0.90,
minimum=0.0,
maximum=1,
step=0.05,
interactive=True,
info="Higher values sample more low-probability tokens",
),
gr.Slider(
label="Repetition penalty",
value=1.2,
minimum=1.0,
maximum=2.0,
step=0.05,
interactive=True,
info="Penalize repeated tokens",
)
]
gr.ChatInterface(
fn=generate,
chatbot=gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, likeable=True, layout="panel"),
additional_inputs=additional_inputs,
title="""Gen-AI based Interview featuring Mistral 7B"""
).launch(show_api=False)