Spaces:
Sleeping
Sleeping
import openai | |
import os | |
import gradio as gr | |
import requests | |
import json | |
knowlage ={ | |
"怎么解绑银行卡?": "解绑银行卡操作如下:手机端:【饿了么商家版】-右下角【我的】-【钱包】-【账户设置】-【提现账户】-解绑银行卡温馨提示:余额不超过100 ,可点击解绑,超过100,不可解绑,只可换绑哦~,电脑端:【饿了么商家版】-左侧【财务管理】-【账户管理】-右侧【解绑】即可。温馨提示:余额不超过100 ,可点击解绑,超过100,不可解绑,只可换绑哦~", | |
"怎么查看提现记录?": "查看提现记录步骤如下:电脑端:财务-财务首页—查看流水记录,手机端:商家端-我的-钱包-查看明细,进行查看。", | |
"提现规则是什么?": "老板您好,现在提现方法有手动提现和自动提现两种方式。,自动提现规则:,1、每天一次自动提现,开启自动提现后,每日上午6点到8点期间,每日余额超过500元才会自动提现。,2、钱包余额低于500元无法自动提现时,商户可选择去APP或PC端手动提现。,手动提现规则:手动提现设置最低额度,钱包余额超过50元,才可以手动提现。低于50元的钱包余额后续商家闭店后可以将此金额提现到银行卡/支付宝中。,注:默认要求提现人完成实名认证,提现收款银行卡与提现人同名,非同名不能绑卡。,温馨提示:平台提现到账时间为即时到账,一般会在10min左右到达您银行卡,如果您提现没有立即到账,建议您后续关注,预计会在1~3天到账平台提现到账时间为即时到账。" | |
} | |
openai.url = "https://{}/v1/chat/completions".format(os.environ.get("OPENAI_API_PROXY_DOMAIN")) | |
openai.api_key = os.environ.get("OPENAI_API_KEY") | |
OPENAI_URL = "https://{}/v1/chat/completions".format(os.environ.get("OPENAI_API_PROXY_DOMAIN")) | |
OPENAI_AI_KEY = os.environ.get("OPENAI_API_KEY") | |
class Conversation: | |
def __init__(self, prompt, num_of_round): | |
self.prompt = prompt | |
self.num_of_round = num_of_round | |
self.messages = [] | |
self.messages.append({"role": "system", "content": self.prompt}) | |
def askGpt(self, question, knowlageStr): | |
try: | |
self.messages.append({"role": "user", "content": knowlageStr + " " + question}) | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo", | |
messages=self.messages, | |
temperature=0.5, | |
max_tokens=2048, | |
top_p=1, | |
) | |
except Exception as e: | |
print(e) | |
return e | |
message = response["choices"][0]["message"]["content"] | |
self.messages.append({"role": "assistant", "content": message}) | |
if len(self.messages) > self.num_of_round * 2 + 1: | |
del self.messages[1:3] | |
return message | |
def askWithProxy(self, question): | |
print("start askWithProxy") | |
self.messages.append({"role": "user", "content": question}) | |
headers = { | |
'Authorization': f'Bearer {OPENAI_AI_KEY}', | |
'Content-Type': 'application/json' | |
} | |
payload = { | |
"model": "gpt-3.5-turbo", | |
"messages": [ | |
{ | |
"role": "user", | |
"content": self.messages | |
} | |
] | |
} | |
try: | |
response = requests.post(OPENAI_URL, headers=headers, json=payload) | |
response.raise_for_status() # 抛出异常,如果响应码不是200 | |
data = response.json() | |
print("http_response:{}".format(data["choices"][0]["message"])) | |
message = data["choices"][0]["message"]["content"] | |
self.messages.append({"role": "assistant", "content": message}) | |
if len(self.messages) > self.num_of_round * 2 + 1: | |
del self.messages[1:3] | |
return message | |
except requests.exceptions.RequestException as e: | |
print(f"请求错误: {e}") | |
except json.JSONDecodeError as e: | |
print(f"无效的 JSON 响应: {e}") | |
prompt = """你是一个智能客服,可以帮助中国的餐饮店老板,在饿了么外卖平台上更好的经营""" | |
conv = Conversation(prompt, 5) | |
def predict(input, history=[]): | |
history.append(input) | |
response = "" | |
if input in knowlage: | |
response = conv.askGpt(input, knowlage[input]) | |
else: | |
response = "抱歉!我只能回答一下代码,请复制其中一个问题提问:{}".format('\n'.join(knowlage.keys())) | |
history.append(response) | |
responses = [(u, b) for u, b in zip(history[::2], history[1::2])] | |
return responses, history | |
with gr.Blocks(css="#chatbot{height:350px} .overflow-y-auto{height:500px}") as demo: | |
chatbot = gr.Chatbot(elem_id="chatbot") | |
state = gr.State([]) | |
with gr.Row(): | |
txt = gr.Textbox(show_label=False, placeholder="Enter text and press enter").style(container=False) | |
txt.submit(predict, [txt, state], [chatbot, state]) | |
demo.launch(share=False) |