add new py file for file process
This commit is contained in:
parent
4a1ba8b8fd
commit
89689559d1
@ -7,6 +7,13 @@ from dashscope import Generation
|
||||
dashscope.api_key = 'sk-73e9b0452a7e40048495d8ac8ab1afe4' # Vincent's API key
|
||||
|
||||
|
||||
def pross_instruction(system, rag_dict):
|
||||
"""
|
||||
使用format_map()替换字符串中的变量。
|
||||
"""
|
||||
return system.format_map(rag_dict)
|
||||
|
||||
|
||||
def response(prompt, instruction):
|
||||
messages = [{'role': 'system', 'content': instruction},
|
||||
{'role': 'user', 'content': prompt}]
|
||||
|
104
testGrDownload.py
Normal file
104
testGrDownload.py
Normal file
@ -0,0 +1,104 @@
|
||||
import gradio as gr
|
||||
import pandas as pd
|
||||
import tempfile
|
||||
import csv
|
||||
from http import HTTPStatus
|
||||
import dashscope
|
||||
from dashscope import Generation
|
||||
|
||||
|
||||
|
||||
|
||||
def pross_instruction(system, rag_dict):
|
||||
"""
|
||||
使用format_map()替换字符串中的变量。
|
||||
"""
|
||||
return system.format_map(rag_dict)
|
||||
|
||||
|
||||
def response(prompt, instruction):
|
||||
messages = [{'role': 'system', 'content': instruction},
|
||||
{'role': 'user', 'content': prompt}]
|
||||
|
||||
response = Generation.call(model='qwen-plus',
|
||||
messages=messages,
|
||||
seed=1234,
|
||||
result_format='message',
|
||||
stream=False,
|
||||
incremental_output=False,
|
||||
temperature=1.8,
|
||||
top_p=0.9,
|
||||
top_k=999
|
||||
)
|
||||
if response.status_code == HTTPStatus.OK:
|
||||
message = response.output.choices[0]['message']['content']
|
||||
return message
|
||||
else:
|
||||
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
|
||||
response.request_id, response.status_code,
|
||||
response.code, response.message
|
||||
))
|
||||
return f"Error: Could not generate response with Status code: {response.status_code}, error code: {response.code}"
|
||||
|
||||
|
||||
def format_full_prompt(df):
|
||||
# 为每个 row 创建 context
|
||||
df['context'] = df.apply(lambda row: f"{row['RAG1']}-{row['RAG2']}", axis=1)
|
||||
|
||||
# 准备用于 format 的字典
|
||||
format_dict = df[['business_use_mark', 'context', 'question']].apply(lambda x: dict(zip(x.index, x)), axis=1)
|
||||
|
||||
# 使用 apply() 和 lambda 函数格式化 full_prompt 列
|
||||
df['full_prompt'] = df.apply(lambda row: row['full_prompt'].format(**format_dict[row.name]), axis=1)
|
||||
|
||||
# 可选:删除临时创建的 context 列
|
||||
df.drop(columns=['context'], inplace=True)
|
||||
return df
|
||||
|
||||
|
||||
def process_xlsx(xlsx_file, instruction):
|
||||
# 读取xlsx文件到pandas DataFrame
|
||||
df = pd.read_excel(xlsx_file)
|
||||
|
||||
# 格式化prompts
|
||||
formatted_df = format_full_prompt(df)
|
||||
|
||||
# 假设我们要处理的提示是DataFrame的'full_prompt'列
|
||||
formatted_df['Response'] = formatted_df['full_prompt'].apply(lambda prompt: response(prompt, instruction))
|
||||
|
||||
# 使用tempfile创建一个临时文件路径保存处理后的xlsx
|
||||
tmp_path = tempfile.NamedTemporaryFile(delete=True, suffix='.xlsx').name
|
||||
formatted_df.to_excel(tmp_path, index=False, engine='openpyxl')
|
||||
|
||||
return formatted_df, tmp_path
|
||||
|
||||
|
||||
def main():
|
||||
with gr.Blocks() as demo:
|
||||
gr.Markdown("### 大模型xlsx处理工具")
|
||||
with gr.Accordion("输入说明"):
|
||||
gr.Markdown("请上传一个xlsx文件,文件应包含prompts。")
|
||||
system_instruction = gr.Textbox(label="System Instruction", lines=2,
|
||||
value="A conversation between a user and an LLM-based AI assistant. The assistant gives helpful and honest answers.")
|
||||
|
||||
file_input = gr.File(label="上传xlsx文件")
|
||||
submit_button = gr.Button("处理xlsx")
|
||||
|
||||
output_table = gr.Dataframe(label="处理后的数据")
|
||||
output_file = gr.File(label="下载处理后的文件")
|
||||
clear_data = gr.ClearButton(components=[output_table, output_file], value="Clear processed data")
|
||||
clear_all = gr.ClearButton(components=[file_input, output_table, output_file], value="Clear console")
|
||||
def update_output(xlsx_file, instruction):
|
||||
if xlsx_file is not None:
|
||||
formatted_df, tmp_path = process_xlsx(xlsx_file, instruction)
|
||||
return formatted_df, tmp_path # 返回DataFrame和文件路径
|
||||
|
||||
submit_button.click(fn=update_output, inputs=[file_input, system_instruction],
|
||||
outputs=[output_table, output_file])
|
||||
|
||||
demo.launch()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user