TableGPT2-7B 是由浙江大学开发的大规模解码器,专为数据密集型任务设计,特别强调处理和分析表格数据。该模型旨在填补传统大语言模型(LLM)能力和实际需求之间的差距,特别是在商业智能(BI)、自动数据驱动分析以及涉及数据库或数据仓库的任务中表现出色。
首先,确保安装了 transformers 库:
pipinstalltransformers>=4.37.0
fromtransformersimportAutoModelForCausalLM,AutoTokenizer
importpandasaspd
fromioimportStringIO
#示例表格数据
EXAMPLE_CSV_CONTENT="""
"Loss","Date","Score","Opponent","Record","Attendance"
"Hampton(14–12)","September25","8–7","
adres","67–84","31,193"
"Speier(5–3)","September26","3–1","
adres","67–85","30,711"
"Elarton(4–9)","September22","3–1","@Expos","65–83","9,707"
"Lundquist(0–1)","September24","15–11","
adres","67–83","30,774"
"Hampton(13–11)","September6","9–5","Dodgers","61–78","31,407"
"""
#读取表格数据
csv_file=StringIO(EXAMPLE_CSV_CONTENT)
df=pd.read_csv(csv_file)
#加载模型和分词器
model_name="tablegpt/TableGPT2-7B"
model=AutoModelForCausalLM.from_pretrained(
model_name,torch_dtype="auto",device_map="auto"
)
tokenizer=AutoTokenizer.from_pretrained(model_name)
#构建提示
example_prompt_template="""Givenaccesstoseveralpandasdataframes,writethePythoncodetoanswertheuser'squestion.
/*
"{var_name}.head(5).to_string(index=False)"asfollows:
{df_info}
*/
Question:{user_question}
"""
question="哪些比赛的战绩达到了40胜40负?"
prompt=example_prompt_template.format(
var_name="df",
df_info=df.head(5).to_string(index=False),
user_question=question,
)
#生成响应
messages=[
{"role":"system","content":"Youareahelpfulassistant."},
{"role":"user","content":prompt},
]
text=tokenizer.apply_chat_template(
messages,tokenize=False,add_generation_prompt=True
)
model_inputs=tokenizer([text],return_tensors="pt").to(model.device)
generated_ids=model.generate(**model_inputs,max_new_tokens=512)
generated_ids=[
output_ids[len(input_ids):]
forinput_ids,output_idsinzip(model_inputs.input_ids,generated_ids)
]
response=tokenizer.batch_decode(generated_ids,skip_special_tokens=True)[0]
print(response)
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |