#coding=utf-8

import random
from http import HTTPStatus
from dashscope import Generation
from datetime import datetime

# 文本和表格数据给大模型，返回大模型抽取原始指标列表
def get_measure_from_llm(user_prompt):
    """
    :return: 文本和表格数据给大模型，返回大模型抽取原始指标列表
    """
    llm_measure_list = []
    system_prompt = '''
            你是一个优秀的金融分析师，从给定的数据报告中自动提取以下关键财务指标。指标包括：
            2023年营业收入
            2022年营业收入
            2021年营业收入
            2023年第一季度营业收入
            2023年第二季度营业收入
            2023年第三季度营业收入
            2023年第四季度营业收入
            营业收入同比变动
            2023年归母净利润
            2022年归母净利润
            2021年归母净利润
            2023年第一季度归母净利润
            2023年第二季度归母净利润
            2023年第三季度归母净利润
            2023年第四季度归母净利润
            归母净利润同比变动
            2023年扣非净利润
            2022年扣非净利润
            2021年扣非净利润
            2023年第一季度扣非净利润
            2023年第二季度扣非净利润
            2023年第三季度扣非净利润
            2023年第四季度扣非净利润
            扣非净利润同比变动
            2023年经营活动现金流净额
            2022年经营活动现金流净额
            2021年经营活动现金流净额
            经营活动现金流净额同比变动
            2023年筹资活动现金流净额
            2022年筹资活动现金流净额
            2021年筹资活动现金流净额
            2023年投资活动现金流净额
            2022年投资活动现金流净额
            2021年投资活动现金流净额
            2023年非经常性损益
            2022年非经常性损益
            2021年非经常性损益
            2023年基本每股收益
            2022年基本每股收益
            2021年基本每股收益
            2023年稀释每股收益
            2022年稀释每股收益
            2021年稀释每股收益
            2023年加权平均净资产收益率
            2022年加权平均净资产收益率
            2021年加权平均净资产收益率
            2023年扣非加权平均净资产收益率
            2022年扣非加权平均净资产收益率
            2021年扣非加权平均净资产收益率
            <数据报告>
            <user_prompt>
            </数据报告>
            '''
    system_prompt = system_prompt.replace('<user_prompt>', user_prompt)
    response = Generation.call(
                                model='qwen-plus',
                                prompt = system_prompt,
                                seed=random.randint(1, 10000),
                                top_p=0.8,
                                result_format='message',
                                enable_search=False,
                                max_tokens=1500,
                                temperature=0.85,
                                repetition_penalty=1.0
                            )
    if response.status_code == HTTPStatus.OK:
        result = response['output']['choices'][0]['message']['content']
        llm_measure_list = result.split('\n')
        return llm_measure_list
    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 "llm_error"

if __name__ == '__main__':
    user_prompt = '''
                二、 经营情况回顾 (一) 经营计划 2023 年，在国际环境复杂多变以及全球经济依旧下行的形势下，公司严格按照既定发展战略和经营计划，狠抓落实，迎难而上，业务经营整体保持稳定，如期完成全年既定经营目标。在全体职员的共同努力下，公司的营业收入、净利润等各项指标再创历史新高，营业收入较上年同期实现15.43%的增长，归属于上市公司股东的净利润较上年同期实现 26.47%的增长。 1、财务状况 报告期末，公司资产总额为 1,473,271,310.23 元，增幅为 19.17%，主要系：一方面随着销售规模的不断增长，公司应收账款及合同资产等流动资产增幅较大，另一方面，为解决基于销售规模扩大引致的产能跟不上的瓶颈，公司上马扩产建设项目，导致在建工程、固定资产等非流动资产增幅较报告期末公司负债总额为 800,619,067.70 元，增幅为 26.12%，主要系随着销售规模增加、工程建设项目推进、固定资产购置等，公司采购数额大幅增加，公司通过银行借款等方式筹集资金，导致长短期贷款期末余额增幅较大。 报告期末，归属于上市公司股东的净资产为 670,316,339.35 元，增幅为 11.45%，主要系报告期内经营积累。 2、经营成果 报告期内，公司实现营业收入 1,003,535,799.51 元，增幅为 15.43%。主要系公司本期持续优化生产经营，大力推进产品研发和创新，抓住“双碳”政策以及“能效”提升产生的市场需求旺盛的有利时机，且随着公司北交所上市，产品品牌效应凸显，产能增加，订单获取能力增强，变压器及户外成套设备销售增长较多。 营业成本为 810,779,075.89 元，增幅为 15.33%，主要系报告期内销售增长及主要原材料价格变动所致。归属于上市公司股东的净利润为 73,033,633.31 元，增幅为 26.47%，主要系：1）公司持续优化生产经营，大力推进产品研发和创新，抓住“双碳”政策以及“能效”提升产生的市场需求旺盛的有利时机，生产和销售均呈稳定增长；2）本期处置开源路 1-1 号土地及建筑物及其他附属物等，结转资产处置收益同比增加。 
            '''
    measure_list = get_measure_from_llm(user_prompt)
    print(measure_list)