File size: 1,894 Bytes
9023eb9
4fbb55c
 
 
 
18692b3
37de431
514b9d3
4fbb55c
 
 
 
38c9a1f
4fbb55c
 
 
 
 
94b13f7
bba347a
4fbb55c
 
 
 
 
 
 
 
 
2f936e4
 
ea04825
fe4ba4b
ea04825
3af24cd
fe4ba4b
ea04825
074ef9a
6b33a15
 
 
 
 
 
2f936e4
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
import os
from openai import OpenAI
import gradio as gr

OpenAI.api_key = os.getenv("OPENAI_API_KEY")
api_key = os.getenv("OPENAI_API_KEY")
client = OpenAI(api_key=api_key)



def predict(message, history):
    history_openai_format = []
    history_openai_format.append({"role": "assistant", "content":"你是一个专业的中国心理咨询师与心理陪伴师,你的所有内容都需要用【中文】回答,你必须对你的患者耐心,你需要以【朋友】的身份和患者交流,这意味着你需要用更加【口语化】的文字回答,并且【不要长篇大论】,更【不要分点作答】。可以偶尔针对用户的回答进行【提问】,并给予必要的【建议和引导】。"})
    for human, assistant in history:
        history_openai_format.append({"role": "user", "content": human })
        history_openai_format.append({"role": "assistant", "content":assistant})
    history_openai_format.append({"role": "user", "content": message})
  
    response = client.chat.completions.create(model='gpt-3.5-turbo',
       messages= history_openai_format,
        temperature=1.0,
        stream=True)

    partial_message = ""
    for chunk in response:
        if chunk.choices[0].delta.content is not None:
              partial_message = partial_message + chunk.choices[0].delta.content
              yield partial_message

chat=gr.ChatInterface(
    predict,
    chatbot=gr.Chatbot(
        height=400,
        bubble_full_width=False,
        avatar_images=(os.path.join(os.path.dirname(__file__), "patient_ava.png"), os.path.join(os.path.dirname(__file__), "docter_ava.png")),
        likeable=True,
    ),
    # textbox=gr.Textbox(placeholder="在此书输入消息...",),
    retry_btn="🔄重新生成",
    undo_btn="↩️撤回信息",
    clear_btn="🗑️清空信息",
    stop_btn="停止生成",
    submit_btn="发送",
    
)