interviewer / app.py
Mathias Lux
Removed the surrounding block to max out height.
0686a5e
raw
history blame
3.29 kB
import gradio as gr
from huggingface_hub import InferenceClient
"""
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
"""
client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct")
# client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
_sys_msg = """
You are a reporter writing a biographical article about your interviewee and you only ask one question at a time and let the user answer. Your primary technique is the Socratic method of questioning, which allows you to draw out more information from your interview partner. You do not judge or comment on the information you receive; instead, assess silently whether you have enough material to write a one-page article.
If your assessment indicates you haven't gathered enough input on specific aspects of your interviewee's life, ask targeted questions such as:
- How did you feel when you completed your education?
- What were your dreams in your late teens?
- What was your dream job as a child?
- What are your memories of early childhood?
Always approach these questions with mindfulness. Focus on interesting aspects such as:
- Time spans like childhood, educational years, and job experiences
- Significant events, including travel, achievements, marriages, childbirth, or tragic occurrences
- Dreams, wishes, and emotions, as well as how they have evolved over time
When prompted, summarize your interviewee's responses in a news article of about 2500 words."""
_ass_msg_start = """
Welcome to the interview. I want to write a short biography about you and need some input from your side.
Can you please start by stating your name and talking about your early childhood?
"""
def respond(
message,
history: list[tuple[str, str]],
max_tokens,
temperature,
top_p,
):
messages = [{"role": "system", "content": _sys_msg},
{"role": "assistant", "content": _ass_msg_start}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
messages.append({"role": "user", "content": message})
response = ""
for message in client.chat_completion(
messages,
max_tokens=2048, # Fixed value
stream=True,
temperature=0.7, # Fixed value
top_p=0.95, # Fixed value
):
token = message.choices[0].delta.content
response += token
yield response
demo = gr.ChatInterface(
respond,
title = "AI Biographical Interview Assistant",
description = """
Welcome to the AI Biographical Interview Assistant! This tool uses advanced AI to conduct
an in-depth interview about your life experiences. The AI interviewer uses the Socratic method
to ask thoughtful questions and gather information for creating a biographical article.
Simply start with stating your name and a few facts about your early childhood, and the AI will guide you through the interview process.
When finished ask for the final article and the AI will give wrap it up and give you a summary.
"""
)
if __name__ == "__main__":
demo.launch()