|
import gradio as gr |
|
from huggingface_hub import InferenceClient |
|
client = InferenceClient("Qwen/Qwen2.5-Coder-1.5B") |
|
|
|
promt = """ |
|
You are a knowledgeable assistant specializing in Java programming language. Your task is to answer questions about Java, including its syntax, features, libraries, best practices, and common issues. Provide clear and concise responses, and when applicable, include code examples to illustrate your explanations. |
|
|
|
When answering questions, keep in mind the following guidelines: |
|
|
|
Ensure accuracy and clarity in your explanations. |
|
Provide context and background information when necessary. |
|
Use appropriate Java terminology. |
|
Present code snippets formatted for readability. |
|
If a question is ambiguous, ask for clarification. |
|
""" |
|
|
|
|
|
def respond( |
|
message, |
|
history: list[tuple[str, str]], |
|
max_tokens, |
|
temperature, |
|
top_p, |
|
): |
|
messages = [{"role": "system", "content": promt}] |
|
|
|
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 |
|
""" |
|
demo = gr.ChatInterface( |
|
respond, |
|
additional_inputs=[ |
|
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__": |
|
demo.launch() |
|
|