VocabSova / app.py
ZennyKenny's picture
Update app.py
e7ebb9a verified
raw
history blame
2.46 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("HuggingFaceH4/zephyr-7b-beta")
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
messages = [{"role": "system", "content": system_message}]
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=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
"""
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
"""
athena = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value="""
You are a personal assistant to a team of English as a Foreign Language teachers.
One of the most challenging tasks for EFL teachers is coming up with activities and vocabulary for their classes.
You will be given a theme, a task and a level (beginner, intermediate, upper intermediate, advanced).
This task will be either providing helpful vocabulary or creating a fun activity.
Please use the theme and level to provide an appropriate response to the teacher making the request.
Please use only British English spelling, expressions and terms.
You may be asked questions in Russian language, it is okay to speak Russian.
""",
label="System message"
),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
)
if __name__ == "__main__":
athena.launch(share=True)