devin_lee
update app.py
f92f70f
import gradio as gr
import outlines
import os, json
from outlines.models import openai
from outlines.generate import choice
model_list = {
"Gemma-2B": "google/gemma-2b-it",
"Qwen2.5-7B": "Qwen/Qwen2.5-7B-Instruct-Turbo"
}
def create_prompt_message(message: str) -> str:
return f"""
You are an agent that classifies restaurant-related user messages.
Your job is to classify the following message into one of two categories: "Reservation" or "Others".
You MUST respond EXACTLY with one of these two JSON objects:
{{"result": "Reservation"}} or {{"result": "Others"}}
Do not add any explanation or other content.
Message: {message}
""".strip()
def inference(model_dropdown, message):
# 根據 model_name 決定要用哪個模型
model_id = model_list[model_dropdown]
model = openai(
model_id,
api_key=os.getenv("TOGETHER_API_KEY"),
base_url="https://api.together.xyz/v1"
)
classifier = choice(model, ["Reservation", "Others"])
# 下面是原本分類流程
prompt = create_prompt_message(message)
try:
result = classifier(prompt)
if result == 'Reservation':
return "Reservation request!"
elif result == 'Others':
return "Non-reservation request!"
else:
return "不明意圖。"
except Exception as e:
print(f"[Error!]: {e}")
return "Error!"
with gr.Blocks() as demo:
gr.Markdown("## 🍴🥂 LLM訂位意圖分類器")
gr.Markdown("判斷輸入訊息是否與訂位有關")
with gr.Row():
model_dropdown = gr.Dropdown(choices=list(model_list.keys()), label="選擇模型", value="Gemma-2B")
with gr.Row():
input_box=gr.Textbox(placeholder="請輸入顧客訊息...", label="輸入訊息")
output_box=gr.Textbox(label="分類結果")
with gr.Row():
inference_btn = gr.Button("開始分類")
inference_btn.click(
fn=inference,
inputs=[model_dropdown, input_box],
outputs=output_box
)
demo.launch()