|
import gradio as gr |
|
import openai |
|
|
|
config = open("config").readlines() |
|
openai.api_key = config[0].strip() |
|
openai.api_base = config[1].strip() |
|
|
|
''' |
|
gradio: [['第一次说话', 'No'], ['试试第二次', 'Yes']] |
|
openai: [{"role": "user", "content": "第一次说话"}, |
|
{"role": "assistant", "content": "Who won the world series in 2020?"}] |
|
''' |
|
def gradio_messages_to_openai_messages(g): |
|
result = [] |
|
for pair in g: |
|
result.append({"role": "user", "content": pair[0]}) |
|
result.append({"role": "assistant", "content": pair[1]}) |
|
return result |
|
|
|
def respond(chat_history, message): |
|
print("----------------") |
|
print("chat_histroy:", chat_history) |
|
print("message:", message) |
|
messages = [ |
|
{"role": "system", "content": "后面的回答必须简明扼要"}, |
|
*gradio_messages_to_openai_messages(chat_history), |
|
{"role": "user", "content": message} |
|
] |
|
print("messages:", messages) |
|
completion = openai.ChatCompletion.create( |
|
model="gpt-3.5-turbo", |
|
messages=messages |
|
) |
|
print("completion:", completion) |
|
response = completion['choices'][0]['message']['content'] |
|
result = chat_history + [[message, response]] |
|
print("result:", result) |
|
return result |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## Chat with GPT") |
|
state = gr.State() |
|
chatbot = gr.Chatbot() |
|
message = gr.Textbox(label = "Message:", placeholder="Enter text") |
|
message.submit( |
|
respond, |
|
[chatbot, message], |
|
chatbot, |
|
) |
|
with gr.Row(): |
|
clear = gr.Button("Clear") |
|
clear.click(lambda: None, None, chatbot) |
|
send = gr.Button("Send") |
|
send.click( |
|
respond, |
|
[chatbot, message], |
|
chatbot, |
|
) |
|
|
|
demo.launch(server_name="0.0.0.0", server_port=8000) |
|
|