File size: 2,492 Bytes
e60683c
c4ccf16
73b13db
e60683c
 
c4ccf16
 
e60683c
c4ccf16
 
bbf8997
 
c4ccf16
e60683c
c4ccf16
18ab048
c4ccf16
 
 
18ab048
 
 
c4ccf16
e60683c
c4ccf16
 
 
 
 
 
 
 
e60683c
 
 
c4ccf16
 
04b5f75
c4ccf16
e60683c
 
c4ccf16
 
 
e60683c
c4ccf16
 
 
 
e60683c
c4ccf16
e60683c
c4ccf16
e60683c
c4ccf16
 
 
 
e60683c
24f59d7
c113780
e60683c
 
 
75a81a9
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
60
61
62
63
64
65
66
import gradio as gr
from openai import OpenAI
import os


YOUR_ENDPOINT_ID = os.getenv('runpod')
api_key = os.getenv('API_Runpod')

# Inisialisasi client dengan RunPod endpoint
client = OpenAI(
    api_key="not-needed",
    base_url="https://farhanwew--ollama-lite-scalezero-ollamaserver-serve.modal.run/v1"
)

# Prompt sistem khusus asisten medis
# Prompt sistem khusus asisten medis dengan output Markdown
DEFAULT_SYSTEM_PROMPT = (
    "Kamu adalah asisten medis cerdas yang membantu menjawab pertanyaan kesehatan "
    "dengan informasi yang akurat dan terpercaya. Jika pertanyaannya di luar kemampuanmu, "
    "sarankan untuk konsultasi ke dokter. Jangan memberikan diagnosa langsung. "
    "Tampilkan semua jawaban dalam format Markdown agar mudah dibaca, "
    "gunakan heading, list, dan penekanan teks jika perlu.<|eot_id|>\n\n"
)

def respond(message, history, system_message, max_tokens, temperature, top_p):
    # Bangun pesan percakapan sesuai format OpenAI API
    messages = [{"role": "system", "content": system_message}]
    for user_msg, assistant_msg in history:
        if user_msg:
            messages.append({"role": "user", "content": user_msg})
        if assistant_msg:
            messages.append({"role": "assistant", "content": assistant_msg})
    messages.append({"role": "user", "content": message})

    response = ""
    # Streaming response dari model
    stream = client.chat.completions.create(
        model="farhanwew/wew-model",  # ganti dengan nama model kamu
        messages=messages,
        temperature=temperature,
        top_p=top_p,
        max_tokens=max_tokens,
        stream=True,
    )

    for chunk in stream:
        if chunk.choices[0].delta.content:
            response += chunk.choices[0].delta.content
            yield response

# Gradio Chat UI
demo = gr.ChatInterface(
    fn=respond,
    additional_inputs=[
        gr.Textbox(value=DEFAULT_SYSTEM_PROMPT, label="System Message"),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max Tokens"),
        gr.Slider(minimum=0.1, maximum=2.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"),
    ],
    title="Chatbot Medis",
    description="Chatbot ini memberikan informasi kesehatan seputar kesehatan pencernaan. Tidak untuk diagnosa medis langsung. \n Chatbot dapat melakukan keslahan, harap untuk selalu mengecek respone",
)

if __name__ == "__main__":
    demo.launch(share=True)