vohoangnam/Neosoft_Coding_Assistant
0
1import gradio as gr # type: ignore2from huggingface_hub import InferenceClient # type: ignore3import json4client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")5 6def load_custom_data(file_path):7 with open(file_path, "r", encoding="utf-8") as f:8 data = json.load(f)9 return data10 11custom_data = load_custom_data("custom_training_data.json")12 13def respond(14 message,15 history: list[tuple[str, str]],16 system_message,17 max_tokens,18 temperature,19 top_p,20):21 messages = [{"role": "system", "content": system_message}]22 23 for val in history:24 if val[0]:25 messages.append({"role": "user", "content": val[0]})26 if val[1]:27 messages.append({"role": "assistant", "content": val[1]})28 29 messages.append({"role": "user", "content": message})30 31 response = ""32 33 for item in custom_data["data"]:34 if item["prompt"].lower() in message.lower():35 response = item["completion"]36 break37 else:38 for message in client.chat_completion(39 messages,40 max_tokens=max_tokens,41 stream=True,42 temperature=temperature,43 top_p=top_p,44 ):45 token = message.choices[0].delta.content46 response += token47 48 yield response49 50 51demo = gr.ChatInterface(52 respond,53 additional_inputs=[54 gr.Textbox(value="Hello, From Neosoft Coding Assistant", label="System message"),55 gr.Slider(minimum=1, maximum=10240, value=10240, step=1, label="Max new tokens"),56 gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),57 gr.Slider(58 minimum=0.1,59 maximum=1.0,60 value=0.95,61 step=0.05,62 label="Top-p (nucleus sampling)",63 ),64 ],65)66 67if __name__ == "__main__":68 demo.launch()69 