Spaces:
Running
Running
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("ibm-granite/granite-3.1-2b-instruct") # specifically for long contexts. | |
client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct") # too small context window | |
# 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: | |
- What were your dreams in your late teens? | |
- What was your dream job as a child? | |
- What are your memories of early childhood? | |
- What are your earliest childhood memories that really stand out to you? | |
- Could you tell me about the house or neighborhood where you grew up? | |
- What traditions or values did your family pass down to you? | |
- What moments in your life felt like major turning points? | |
- When faced with difficult choices, how did you typically make your decisions? | |
- What do you consider your greatest achievement, and what led up to it? | |
- Who were the people who shaped you most significantly? | |
- What lessons did you learn from your mentors or role models? | |
- How have your relationships evolved throughout different stages of your life? | |
- What drew you to your chosen field? | |
- How did your ambitions change over time? | |
- What challenges did you face in your professional life, and how did you overcome them? | |
- What was happening in the world during this period? | |
- Looking back now, how do you think that event shaped who you became? | |
Always approach these questions with mindfulness. Focus on interesting aspects such as: | |
- Time spans like childhood, educational years, and job experiences | |
- Significant events and pivotal moments, 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 for about one page of text.""" | |
_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]], | |
): | |
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() | |