123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- import gradio as gr
- from utils.openai_api import get_reply, get_tokens_length
- from utils.read_file import read_xlsx_file, process_data
- sessions = {}
- def get_session(key):
- if key not in sessions:
- sessions[key] = {"count_now": 0, "reply": ""}
- return sessions[key]
- def submit(action, data_source, file, max_length, message_first, message_after,
- session_key):
- session = get_session(session_key)
- count_now = session["count_now"]
- reply = session["reply"]
- if action == "预览消息":
- data = read_xlsx_file(data_source, file.name)
- if count_now == 0:
- message, count = process_data(data_source, max_length, data,
- message_first, len(data))
- else:
- message, count = process_data(data_source,
- max_length,
- data,
- message_after,
- len(data),
- count_now,
- reply=reply)
- return get_tokens_length(message), message, ""
- elif action == "获取最终回复(耗时较长)":
- while True:
- data = read_xlsx_file(data_source, file.name)
- if count_now == 0:
- message, count = process_data(data_source, max_length, data,
- message_first, len(data))
- else:
- message, count = process_data(data_source,
- max_length,
- data,
- message_after,
- len(data),
- count_now,
- reply=reply)
- count_now += count
- if count == 0:
- break
- else:
- print(message)
- reply = get_reply(message)
- print(reply)
- session["count_now"] = count_now
- session["reply"] = reply
- return get_tokens_length(message), "", reply
- elif action == "获取一轮回复":
- data = read_xlsx_file(data_source, file.name)
- if count_now == 0:
- message, count = process_data(data_source, max_length, data,
- message_first, len(data))
- else:
- message, count = process_data(data_source,
- max_length,
- data,
- message_after,
- len(data),
- count_now,
- reply=reply)
- count_now += count
- reply = get_reply(message)
- session["count_now"] = count_now
- session["reply"] = reply
- return get_tokens_length(message), message, reply
- iface = gr.Interface(
- fn=submit,
- inputs=[
- gr.inputs.Dropdown(choices=["预览消息", "获取最终回复(耗时较长)", "获取一轮回复"],
- label="操作",
- default="预览消息"),
- gr.inputs.Dropdown(choices=["七麦", "点点"], label="数据来源", default="七麦"),
- gr.inputs.File(label="上传 xlsx 文件"),
- gr.inputs.Number(default=2048, label="长度限制(中文建议最大4096)"),
- gr.inputs.Textbox(
- lines=2,
- label="第一轮预定义消息",
- default=
- "接下来输入第{comment_num_start}条-第{comment_num_end}条app store中对一款app的评论(共{all_num}条),请分条总结这款app的好评论与坏评论(各十条)(并在每条后面按照百分比给出这个观点的在好/坏评论中的当前占比),{data_string}"
- ),
- gr.inputs.Textbox(
- lines=2,
- label="后续预定义消息",
- default=
- "{reply_before},以上是对前{comment_num}条的分析结果,接下来分段输入第{comment_num_start}条-第{comment_num_end}条app store中对一款app的评论(共{all_num}条),请分条总结这款app的好评论与坏评论(各十条)(并在每条后面按照百分比给出这个观点的在好/坏评论中的当前占比),{data_string}"
- ),
- gr.inputs.Textbox(lines=1,
- label="session_key",
- default="new_session_id(用于记录会话))"),
- ],
- outputs=[
- gr.outputs.Textbox(label="Token长度"),
- gr.outputs.Textbox(label="GPT输入的字符串(Message)"),
- gr.outputs.Textbox(label="GPT输出的字符串(Reply)"),
- ],
- layout="vertical",
- title="GPT4Comment",
- description="上传xlsx文件并输入预定义的消息,然后点击发送使用GPT",
- )
- iface.launch(debug=True)
- # iface.launch(server_name="0.0.0.0", server_port=7881)
|