Spaces:
Running
Running
import gradio as gr | |
from huggingface_hub import InferenceClient | |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta") | |
def respond(message, history): | |
system_message = """You are an interactive storyteller creating an immersive choose-your-own-adventure story. | |
For each response: | |
1. Provide vivid descriptions of the scene and characters | |
2. Include meaningful dialogue or internal monologue | |
3. End with 3 different possible actions or decisions, phrased as complete sentences | |
Example endings: | |
- You could try climbing the ancient tree to get a better view | |
- Perhaps investigating the strange sound from the cave would reveal something | |
- Maybe approaching the mysterious stranger to ask for directions is wise | |
Keep responses engaging but concise.""" | |
messages = [{"role": "system", "content": system_message}] | |
# Add history and current message | |
for user_msg, bot_msg in history: | |
messages.append({"role": "user", "content": user_msg}) | |
messages.append({"role": "assistant", "content": bot_msg}) | |
messages.append({"role": "user", "content": message}) | |
response = "" | |
for message in client.chat_completion( | |
messages, | |
max_tokens=512, | |
stream=True, | |
temperature=0.7, | |
top_p=0.95, | |
): | |
token = message.choices[0].delta.content | |
response += token | |
yield response | |
# Create Gradio interface | |
demo = gr.ChatInterface( | |
respond, | |
title="Interactive Story Adventure", | |
description="Describe what you want to do next in the story using natural language...", | |
examples=[ | |
"Begin my adventure", | |
"I want to explore the mysterious cave", | |
"Let's try talking to the merchant", | |
"I decide to climb the tower" | |
], | |
theme=gr.themes.Soft() | |
) | |
if __name__ == "__main__": | |
demo.launch(server_name="0.0.0.0", server_port=7860) | |