File size: 2,066 Bytes
6486f3f a24fcca 6486f3f a24fcca 6486f3f 9763456 6486f3f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import os
import gradio as gr
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
# Function to handle responses
def respond(user_input, history):
# Configure Hugging Face model endpoint
llm = HuggingFaceEndpoint(
repo_id="HuggingFaceTB/SmolLM2-1.7B-Instruct",
task="text-generation",
temperature=0.5,
repetition_penalty=1.03,
huggingfacehub_api_token=os.getenv('HUGGING_FACE_TOKEN')
)
chat = ChatHuggingFace(llm=llm, verbose=True)
# Prepare system message to set the context
system_message = "You are playing a word guessing game. Guess ONE word based on previous guesses and avoid repeats. DO NOT ANSWER WITH MORE THAN ONE WORD."
# Track guessed words from history
last_human_message, last_ai_message = history[-1] if history else ("", "")
# guessed_words_summary = "Past guesses: " + ", ".join() if guessed_words else "No past guesses."
# print(guessed_words_summary)
# Add messages to the conversation
messages = [
SystemMessage(content=system_message),
SystemMessage(content="Last human message: " + last_human_message + " | Last AI message: " + last_ai_message),
]
# Load past conversation into messages
for human, ai in history:
messages.append(HumanMessage(content=human))
messages.append(AIMessage(content=ai))
# Add the current user input
messages.append(HumanMessage(content=user_input))
# Initialize response as an empty string
response = ""
# Stream response from the model
for message in chat.stream(messages):
if isinstance(message, str):
response += message
else:
response += message.content
yield response
# Set up the Gradio interface
demo = gr.ChatInterface(
respond,
title="WordSync",
description="A word guessing game where you and the AI try to guess the same word. The AI remembers past guesses!"
)
demo.launch(share=True)
|