如何优化FinguAI模型生成理财建议的提示词工程?
个人理财应用模型输出优化问题
问题概述
我正在开发一款个人理财应用,采用FinguAI语言模型,基于用户提供的支出数据生成个性化理财洞察与建议。但目前模型输出存在三类核心问题:数据不准确、遗漏关键分析细节、给出非定制化的通用建议。
已尝试的优化措施
- 简化输入数据并将其格式化为JSON格式
- 迭代测试多种提示词,明确指令要求与期望输出格式
- 调整生成参数(temperature、top-p)
尽管实施了以上方案,模型响应的问题仍未得到解决。
实现代码
import torch from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer import pandas as pd from datetime import datetime, timedelta import random import json # 定义支出类别 categories = ["Groceries", "Utilities", "Entertainment", "Transport", "Rent", "Miscellaneous"] # 生成模拟数据(后续替换为真实用户数据) data = [] for i in range(30): date = (datetime.now() - timedelta(days=i)).strftime("%Y-%m-%d") category = random.choice(categories) amount = round(random.uniform(100, 1000), 2) # 可调整金额范围以贴近真实场景 description = f"{category} expense" data.append([date, category, amount, description]) df = pd.DataFrame(data, columns=["Date", "Category", "Amount", "Description"]) category_totals = df.groupby('Category')['Amount'].sum().to_dict() # --- 可配置变量 --- monthly_income = 5000 # 替换为用户实际月收入(单位:₹) # --- 配置结束 --- # 格式化支出数据用于提示词 category_totals_string = "\n".join([f"- {category}: ₹{amount:.2f}" for category, amount in category_totals.items()]) # 加载模型与分词器 model_id = 'FINGU-AI/FinguAI-Chat-v1' model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16) tokenizer = AutoTokenizer.from_pretrained(model_id) streamer = TextStreamer(tokenizer) model.to('cuda') # 若有GPU则移至GPU运行 # 构建优化后的提示词模板 prompt_template = """你是印度地区的理财顾问,正在分析一位月收入₹{income}用户的月度支出,用户目标是改善财务健康状况。 请分析以下支出数据(单位:₹): {expenses_string} 需提供个性化洞察与可执行建议,重点覆盖: 1. 支出最高的2个类别,针对每个类别给出2-3条具体、可落地的缩减方案; 2. 支出最低的类别,判断是否需要调整; 3. 结合收入与支出,制定合理的月度储蓄目标; 4. 整体财务健康评估,包括优势、劣势与潜在风险。 """ prompt = prompt_template.format(income=monthly_income, expenses_string=category_totals_string) # 输入分词处理 tokenized_chat = tokenizer.apply_chat_template([{"role": "user", "content": prompt}], tokenize=True, add_generation_prompt=True, return_tensors="pt").to("cuda") # 设置生成参数 generation_params = { 'max_new_tokens': 250, 'use_cache': True, 'do_sample': True, 'temperature': 0.7, 'top_p': 0.95, 'top_k': 50, 'eos_token_id': tokenizer.eos_token_id, } # 生成理财洞察 outputs = model.generate(tokenized_chat, **generation_params, streamer=streamer) decoded_outputs = tokenizer.batch_decode(outputs) print(decoded_outputs[0])
模型输出示例
用户月度支出数据评估:
- 娱乐(Entertainment):该类别支出显著,约为1013.13印度卢比(原文标注错误为“姬ar Rupee ($)”)。可通过选择符合个人兴趣的低成本休闲活动缩减支出,例如订阅Netflix或逛本地市场作为替代。此外,合理分配娱乐预算可平衡生活品质与财务目标,需定期追踪支出以确保符合财务规划。2. 食品杂货(Groceries):支出约为2590.55印度卢比(原文标注错误为“姬ar Rupee ($)”)。可采用按比例分配预算的方式缩减开支,例如每月分配50印度卢比用于采购[输出不完整]
内容的提问来源于stack exchange,提问作者Ramesh Adhikari
相关产品推荐
相关产品推荐

