AI大模型教程
一起来学习

部署人工智能财务分析 API:利用百度文心一言的实践指南(二)

第一篇博客中,我们介绍了如何基于 Flask 部署一个利用百度文心一言模型生成财务分析报告的 API,包括初步准备、代码结构与功能分析、部署和测试以及一个简单的示例。然而,正如我们在第一篇博客结尾提到的,该 API 存在一些不足之处,例如财务数据分析过于简单,报告格式不够理想。在这篇博客中,我们将重点介绍如何改进这些方面,使 API 更加实用和强大。

一、调教百度文心一言大模型参数

在利用百度文心一言模型生成财务分析报告的过程中,合理的模型调教参数设置对于提高报告质量至关重要。以下是针对本项目中模型调教的具体策略和示例:

1.确认模型参数种类

首先要确认所使用的模型有哪些参数,如本项目所使用的模型为 ERNIE-4.0-8K ,对应参数可在示例代码中心查看,其参数如下:

2.参数调教及设置

2.1 参数调教

在百度智能云的千帆大模型平台上,提供了在线调试工具,可用于对模型进行测试和参数调整。 首先在示例代码中心选择自己使用的大模型,调试工具就在页面中间,如下图:

可以选择适当的输入内容及参数设置,点击调试按钮后,模型反馈会及时显示在屏幕右侧。通过在线调试,可以根据实际应用场景和需求,找到更适合的参数组合,以获得更符合期望的模型输出效果。

2.2 参数调整

  1. 温度(temperature)参数
    为了在保证报告准确性的同时,使模型输出具有一定的灵活性和多样性,我们将温度参数设置为0.5。这个值相对较低,使得模型的回答更倾向于基于已有的知识和数据进行合理推测,减少随机生成不合理内容的可能性。

  2. top_p 参数
    top_p参数设置为0.75,以平衡输出文本的多样性和相关性。在生成财务分析报告时,模型能够在考虑多种相关因素的基础上,提供丰富但不过于分散的分析内容。

  3. penalty_score 参数
    为了减少报告中的重复语句,提高内容的精炼度,我们将penalty_score参数提高到1.5。这样,模型在生成文本时会对重复的词汇或短语进行一定程度的惩罚,促使其生成更简洁、准确的表述。例如,在描述收入趋势时,不会反复使用相同的句式来解释预测结果。

  4. system 字段:在system字段中明确设定模型人设为 “你是一位专业的财务分析师,精通各类财务分析方法和指标,能够根据提供的财务数据生成详细、准确、具有实用价值的财务分析报告。你善于用简洁明了的语言阐述复杂的财务概念和分析结果,注重数据的准确性和逻辑的严密性。” 这有助于引导模型按照专业财务分析的规范和风格生成报告。

  5. disable_search 参数:设置disable_search = True,关闭实时搜索功能。因为我们主要依赖于上传的财务数据进行分析,外部搜索信息可能会干扰分析的准确性和一致性,确保模型专注于内部数据处理。

  6. enable_citation 参数:开启enable_citation = True,使模型有概率返回搜索溯源信息。在财务分析报告中,这可以为数据来源或分析依据提供一定的参考依据,增加报告的可信度和透明度。

  7. max_output_tokens 参数:根据预期报告的长度和详细程度,将max_output_tokens设置为1800。这样既能保证报告包含足够丰富的财务分析内容,又不会使报告过于冗长,便于用户阅读和理解。

文章来源于互联网:部署人工智能财务分析 API:利用百度文心一言的实践指南(二)

相关推荐: IntelliJ IDEA(2024版) 的安装、配置与使用教程:常用配置、创建工程等操作(很详细,你想要的都在这里)

Ⅰ、IDEA 的安装: 1、IDEA 的下载地址(官网): 点击可到官网下载地址 2、IDEA 分为两个版本:旗舰版 (Ultimate) 和 社区版 (Community) 旗舰版收费(限 30 天免费试用),社区版免费,这和 Eclipse 有很大区别。 …

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 部署人工智能财务分析 API:利用百度文心一言的实践指南(二)

部署人工智能财务分析 API:利用百度文心一言的实践指南(一)

在当今数字化的商业环境中,财务分析对于企业决策至关重要。本文章将介绍如何部署一个基于 Flask 的智能财务分析 API,它利用了百度文心一言大模型来生成智能分析报告。该文章将分为两部分,第一部分主要介绍该API使用的核心代码及其部署测试。第二部分将会在一个月后上传,将会专注于提升该API生成的报告的准确性,并尝试为其添加Wed页面以方便用户使用。

一、前期准备

  • 安装必要的库

 你需要确保已经安装了以下 Python 库:flaskpandasstatsmodelsrequestsjson。可以使用pip install命令来安装它们。

pip install flask pandas statsmodels requests

                                                                                                                

  • 获取 API 密钥

百度智能云千帆平台申请并获取API_keysecret_key,这两个密钥将用于获取访问令牌(access_token)以调用文心一言的 ModelBuilder API。关于如何注册百度账号并获取模型密钥的文章已经很多,本文不再赘述,具体操作方法可以参考另一篇blog

二、代码结构与功能解析

  • 框架选择——Flask

在构建财务分析 API 时,选择 Flask 主要因其具备多方面优势。Flask 极为轻量,核心代码简洁易懂,像创建基本应用仅需寥寥数行代码,使开发人员可快速搭建 API 基础架构。尤其适合对Python编程熟练度较低的新手。同时其灵活性很高,能与诸如 pandasstatsmodelsrequests 等多种库自由集成,在处理数据、分析及与百度千帆通信时,不会受框架限制,方便按业务逻辑操作。

最重要的是,使用 Flask 可以让我们后续为该财务分析 API 添加 Web 界面时更加便捷。其路由(Routing)机制可以将 URL 与特定的 Python 函数关联起来。它决定了当用户访问某个特定 URL 时,应用程序应该执行什么逻辑。比如我们后续可以新增/dashboard等路由展示分析结果,增强用户体验。

  • Flask 应用初始化

我们首先创建一个 Flask 应用实例

from flask import Flask, request, jsonify
app = Flask(__name__)

这是整个 API 的基础框架,后续所有的路由和功能都将围绕这个app展开。 

  • 获取访问令牌

在调用大模型之前,需要使用 API Key,Secret Key 获取access_token。因此我们需要首先定义get_access_token()函数并向百度千帆平台发送请求以获取访问令牌,该令牌将用于后续的 API 调用。

def get_access_token():
    """
    使用 API Key,Secret Key 替换下列示例中的 client_id 与 client_secret
    """

    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=cL8yxxxx9ReF&client_secret=Y3QPxxxxexUo"

    payload = json.dumps("")
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=payload)
    return response.json().get("access_token")

其中不同模型的请求地址(url)均不同,可以在示例代码中心 查看你想要调用的具体模型的要求。本文使用的模型为 ERNIE-4.0-8K

  • 财务分析函数

由于文心一言是一款人工智能大语言模型,并非专为数据处理设计,擅长的是自然语言处理,因此其缺乏数据分析和计算能力的精准性。相比于直接将完整的财务报表传输给文心一言,更明智的做法是利用数据处理工具对财务报表进行数据分析,再结合具体分析结果让人工智能生成更加精准的财务分析报告。

因此我定义了三个函数分别对财务报表中的收入,成本以及负债进行初步的数据分析。

def analyze_revenue_trend(data):
    """
    收入趋势分析:使用指数平滑模型预测未来收入。
    """
    try:
        model = ExponentialSmoothing(data['Revenue'], trend='add', seasonal=None).fit()
        forecast = model.forecast(3)  # 预测未来3期收入
        return {
            'current_revenue': int(data['Revenue'].iloc[-1]),  
            'forecast': list(map(int, forecast))  
        }
    except Exception as e:
        return {'error': f'Revenue trend analysis failed: {str(e)}'}


def analyze_cost(data):
    """
    成本优化建议:计算过去12个月的平均成本比例,提出优化建议。
    """
    try:
        data['Cost_Percentage'] = data['Cost'] / data['Revenue']
        avg_cost_percentage = data['Cost_Percentage'].mean()
        suggestion = "Reduce operational costs by 5%" if avg_cost_percentage > 0.5 else "Cost structure is optimal"
        return {
            'average_cost_percentage': float(avg_cost_percentage),  
            'suggestion': suggestion
        }
    except Exception as e:
        return {'error': f'Cost analysis failed: {str(e)}'}


def predict_debt_risk(data):
    """
    债务风险预测:根据债务与收入比例,评估风险等级。
    """
    try:
        debt_to_revenue_ratio = data['Debt'] / data['Revenue']
        avg_ratio = debt_to_revenue_ratio.mean()
        risk_level = (
            "High Risk" if avg_ratio > 0.8 else
            "Moderate Risk" if avg_ratio > 0.5 else
            "Low Risk"
        )
        return {
            'average_debt_to_revenue_ratio': float(avg_ratio),  t
            'risk_level': risk_level
        }
    except Exception as e:
        return {'error': f'Debt risk prediction failed: {str(e)}'}

注:这三个函数只是对财务报表做了最为简单的收入预测以及风险分析,后续具体使用时可根据不同公司的具体要求对其进行修正。

  • 调用文心一言生成财务报告

在对数据进行分析之后,就可以将分析结果传输给文心一言,由他生成一篇完整的财务报告。

def generate_report(revenue_analysis, cost_analysis, debt_analysis):
    url = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token={get_access_token()}"
    prompt = f"""
    收入分析:当前收入 {revenue_analysis['current_revenue']},预测 {revenue_analysis['forecast']}。
    成本分析:平均成本比例 {cost_analysis['average_cost_percentage']:.2f}。
    债务分析:风险等级 {debt_analysis['risk_level']}。

    请生成一份简洁的财务分析报告,包含总结和可执行建议。
    """
    payload = json.dumps({"messages": [{"role": "user", "content": prompt}]})
    headers = {'Content-Type': 'application/json'}
    response = requests.post(url, headers=headers, data=payload)
    return response.json().get('result', 'Error generating report')

对于不同的模型其对于payload, headers可能有不同的要求,仍然需要在示例代码中心查看不同模型的具体需求。对于本文使用的模型而言,要注意:message必须是奇数条,不然会报错。

  • /upload路由:接收和处理财务数据文件

通过 /upload 接口接收 CSV 数据文件,调用分析函数并返回结果:

@app.route('/upload', methods=['POST'])
def upload_file():

    if 'file' not in request.files:
        return jsonify({'error': 'No file uploaded'}), 400

    file = request.files['file']

    if not file.filename.endswith('.csv'):
        return jsonify({'error': 'Only CSV files are supported'}), 400

    try:
        # 读取 CSV 数据
        data = pd.read_csv(file)
        if not {'Date', 'Revenue', 'Cost', 'Debt'}.issubset(data.columns):
            return jsonify({'error': 'File must contain Date, Revenue, Cost, Debt columns'}), 400

        # 数据预处理
        data['Date'] = pd.to_datetime(data['Date'])
        data = data.sort_values('Date')

        # 调用分析函数
        revenue_analysis = analyze_revenue_trend(data)
        cost_analysis = analyze_cost(data)
        debt_analysis = predict_debt_risk(data)

        # 结合文心一言生成分析报告
        report = generate_report(revenue_analysis, cost_analysis, debt_analysis)

        return jsonify({
            '收入分析': revenue_analysis,
            '成本分析': cost_analysis,
            '债务分析': debt_analysis,
            '财务分析报告(文心一言)': report
        })

    except Exception as e:
        return jsonify({'error': str(e)}), 500

这个路由函数用于接收用户上传的 CSV 格式的财务数据文件。它首先检查是否有文件上传,如果没有则返回错误信息。然后检查文件扩展名是否为.csv,如果不是也返回错误。
在读取 CSV 文件后,它会进一步检查数据中是否包含DateRevenueCostDebt这几个必要的列。如果数据格式正确,就会对数据进行预处理,包括将日期列转换为datetime类型并按照日期排序。
之后,它分别调用analyze_revenue_trendanalyze_costpredict_debt_risk这三个函数对收入趋势、成本和债务风险进行分析,并将结果传递给generate_report函数来生成最终的分析报告。最后,将所有分析结果以 JSON 格式返回给用户。

三、部署与测试

  • 运行Flask应用

if __name__ == '__main__': app.run(debug=True, port=5000)

在本地运行该代码,该API服务即被启动。你的应用将运行在http://127.0.0.1:5000(这是 Flask 应用默认的本地运行地址)。

  • 测试

可以使用cURL命令行工具测试该API。在命令行(Windows)或终端(MacOS)中运行如下代码:

curl -X POST -F "file=@data.csv" http://127.0.0.1:5000/upload

其中,data.csv为你想要上传的财务数据文件。 

当我们执行上述curl命令后,会在命令行(或终端)得到 API 的响应。如果一切正常,响应将是一个 JSON 格式的数据,包含收入分析、成本分析、债务风险分析和文心一言生成的财务报告等内容。

四、示例

上传的 CSV 文件如下:

Date Revenue Cost Debt
2024/1/1 100000 50000 20000
2024/2/1 110000 55000 22000
2024/3/1 120000 60000 25000
2024/4/1 130000 65000 27000
2024/5/1 140000 70000 30000

最终生成的报告如下:

{
  "财务报告(文心一言)": "**财务分析报告**nn**一、概述**nn本报告基于最新的财务数据,对收入、成本及债务状况进行了全面分析,旨在为管理层提供决策支持,确保公司的财务健康与持续增长。nn**二、收入分析**nn- **当前收入状况**:公司当前收入达到140,000元,显示出稳健的经营能力。n- **未来收入预测**:根据预测数据,未来三期收入将分别增长至[149,390元, 159,016元, 168,642元],呈现逐步上升的趋势,预示着积极的市场前景和业务拓展成果。nn**三、成本分析**nn- **成本结构**:公司平均成本比例为0.50,表明成本控制得当,资源配置效率较高。n- **建议**:成本结构已经处于最优状态,建议继续保持并监控成本变动,以确保持续的成本优势。nn**四、债务分析**nn- **债务收入比**:平均债务收入比为0.21,显示出较低的债务负担。n- **风险等级**:经评估,公司的债务风险等级为“低风险”,表明公司具有稳健的偿债能力,财务风险可控。nn**五、总结**nn综合以上分析,公司财务状况健康,收入稳步增长,成本结构合理,债务风险低。这些积极因素为公司未来的发展奠定了坚实基础,提供了有力的财务保障。nn**六、可执行建议**nn1. **收入提升策略**:继续加强市场开拓,优化产品和服务,以维持并加速收入增长势头。n2. **成本控制措施**:持续监控成本动态,通过技术创新和管理优化进一步降低成本,提升盈利能力。n3. **债务管理规划**:在保持低债务风险的同时,合理利用财务杠杆,优化债务结构,以支持公司的扩张和发展战略。",
  "成本分析": {
    "平均成本比例": 0.5,
    "建议": "成本结构最优"
  },
  "债务分析": {
    "平均收入比例": 0.206062271062271,
    "风险等级": "低风险"
  },
  "收入分析": {
    "当前收入": 140000,
    "预测": [149390, 159016, 168642]
  }
}

五、下一步工作

经过上述步骤,我们的API现在有了基本的财务数据分析和财务报告生成功能。然而,我们意识到财务数据分析步骤过于简单,仅仅使用了指数平滑模型来预测收入。此外,生成的报告信息有些简陋,并且格式不太适合阅读。因此,我们需要改变输出格式,使用户更容易使用报告信息。在接下来的工作中,我们将专注于提高报告的准确性,并为API添加一个Web页面,以便用户可以更方便地使用它。

文章来源于互联网:部署人工智能财务分析 API:利用百度文心一言的实践指南(一)

相关推荐: IDEA 编译报错 “java: 常量字符串过长” 的解决办法

在线文本换行工具: https://lzltool.cn/Toolkit/WrapWordsInText 一、问题描述 今天在开发过程中,由于尝试将一个文件的 Base64 字符串设置为常量,结果导致 IDEA 编译的时候出现了如下报错: java: 常量字符…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 部署人工智能财务分析 API:利用百度文心一言的实践指南(一)
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们