让AI给你写代码(10.1): 按接口编程的思想,统一利用内部和外部的接口,逐步扩展和提升AI编程能力

news2024/11/14 19:08:21

先总结一下AI编程小助手已具备的能力,目前AI小助手已经可以利用本地知识库和在线大模型(我们用的是qwen)生成可测试,可执行代码的能力(具体流程参考从让AI给你写代码(9.1)),并具备一定的知识库扩展能力(让AI给你写代码(9.3):一点改进,支持扩展本地知识库)
支持用户逐步丰富代码及相关描述。

但目前面临的问题有两方面:
1) 提示驱动(prompt)只能利用外部库(例如akshare),还不具备利用本地资源的能力,而外部库只能解决获得金融市场各种数据的能力,但数据再加工,快速读取,形成中间数据集就需要本地代码解决,如果每次都靠语言驱动重新生成本地代码,无论是代码稳定性,代码资产的复用性都不好,效率都很低, 因此我们需要进一步发展promt利用本地/外部资源的能力。

2) 更进一步,代码功能复杂化导致prompt也变得复杂,会带来稳定性,准确性和可执行性一系列问题,最终可能会使得AI编程效率低到还不如传统的硬编码,必须发展出一种方法,克服或者至少缓解这个问题,使得AI助手可以逐步形按较为简单的prompt成生成复杂代码的能力,使得编码用户能够更加聚焦于功能本身开发,而不是复杂繁琐的调试。

解决思路可以参照接口化编程的思想,具体如下:我们已经知道如果把中文提示(prompt)看成是一种中文编码方式,那么在线大模型(LLM)就充当了中文编码解释器的作用,把中文需求转换为标准代码,更进一步,利用提示工程驱动LLM的方法基于代码生成一个标准化接口(interface)和一个调用该接口的标准化需求prompt,保存到本地知识库, 并把该标准化接口对应的代码,保存到代码库; 那么下次利用中文提示开发时,就可以在提示中直接引用该接口完成指定的工作,LLM生成代码后,可以通过import方式直接调用该接口执行,然后可以再次驱动LLM基于新代码生成一个标准化接口(interface)和一个调用该接口的标准化需求prompt,以此类推,就可以逐步集成生成代码,利用接口访问,综合调用本地和外部资源,完成执行一些复杂功能,并且调用方便,具备“一句话”匹配本地知识库调用相关接口的能力。

升级后的小助手总体架构如下:
在这里插入图片描述

升级后的小助手分为两类主要功能:

  1. 蓝色部分——prompt匹配本地接口库,调用匹配到的接口方法,驱动对应代码库中的接口方法代码执行获得结果
  2. 红色部分——prompt驱动大模型生成新的接口方法的代码和调用提示的过程,具体如下,prompt中描述需要干的工作并完成该工作需要调用接口方法名,输入值和输出值,然后驱动LLM输出代码,并执行,然后再利用LLM驱动分析新的代码,获得接口函数(方法)名,代码功能说明,入参和返回值(出参),然后利用上述要素生成简单接口描述; 再有人工判断是否要存储接口函数及描述,如果需要还可以修改接口描述,然后分别把的代码存储到接口库中,并把接口描述存储到本地接口库中。

下面,我们先通过一个例子来看看工作流程和功能
基础配置:
1)本地库用的向量持久化工具: ES 7.9
2)本地库匹配使用的embedding: 抱脸虫HuggingFaceEmbeddings的paraphrase-multilingual-MiniLM-L12-v2
3)LLM 还是选qwen-max
以上和之前一致
4) 本地接口知识库: es_repository-interface
初始配置了4个接口方法的描述
在这里插入图片描述

1- akshare库的stock_zh_a_spot_em接口,获取全市场行情
2- akshare库的stock_zh_a_hist接口,获取历史行情
3- 本地pythonRepository库的getReportDataLocal接口,获得指定日期的全市场报业绩报表数据(本地)
4- 本币pythonRepository库的CalAnnualRatio接口,根据指定日期和增长率,换算成年增长率
备注: 3是把akshare的报表下载库函数包装后,进行下载并指定调用打开方法(报表包含季报),4是把季报数据进行年化处理

  1. 本地代码库: pythonRepository目录:
    在这里插入图片描述
    其中fetch_stock_financial_reports.py对应的getReportDataLocal接口代码(3)
    calculate_annual_growth_rate.py对应的是CalAnnualRatio接口(4)
    下面我们逐步利用以上资产,让AI小助手为我们编写更加复杂功能的代码
    任务简介
    第一步: 获取沪深300指数的成份股列表,并返回这些股票的代码
【用户-提出需求】:
请输入您的问题:获得沪深300成份股列表,生成getHS300List(),无入参,按akshare库的index_stock_cons(symbol="000300")接口获得沪深300成份股生成df_hs300_list,其中列名重新定为[‘股票代码‘、‘股票简称’、‘纳入日期’],打印并返回df_hs300_list['股票代码']

【AI-判断是否和本地库匹配,不匹配】
raw_code:: 与上下文无关。

【AI-提交给LLM生成代码】
根据您的要求,以下是使用akshare库获取沪深300成份股列表,并按照指定方式处理数据的Python代码示例:

```python
import akshare as ak

def getHS300List():
    # 使用akshare的index_stock_cons接口获取沪深300成份股数据
    df_hs300 = ak.index_stock_cons(symbol="000300")
    
    # 重命名列名
    df_hs300.columns = ['股票代码', '股票简称', '纳入日期']
    
    # 打印df_hs300的股票代码列
    print(df_hs300['股票代码'])
    
    # 返回股票代码列
    return df_hs300['股票代码']

# 调用函数
getHS300List()
这段代码首先导入了`akshare`库,并定义了一个函数`getHS300List`来获取沪深300指数的成份股列表。通过调用`ak.index_stock_cons(symbol="000300")`接口获取数据,然后重命名DataFrame的列名,并打印及返回股票代码列。

【AI-执行代码,并返回结果】
开始执行...
0      600415
1      300418
2      600161
3      688082
4      688009
        ...  
295    000425
296    000157
297    000063
298    000001
299    000002
Name: 股票代码, Length: 300, dtype: object
执行成功: None
result:: {'exec_res': None, 'code': '\nimport akshare as ak\n\ndef getHS300List():\n    # 使用akshare的index_stock_cons接口获取沪深300成份股数据\n    df_hs300 = ak.index_stock_cons(symbol="000300")\n    \n    # 重命名列名\n    df_hs300.columns = [\'股票代码\', \'股票简称\', \'纳入日期\']\n    \n    # 打印df_hs300的股票代码列\n    print(df_hs300[\'股票代码\'])\n    \n    # 返回股票代码列\n    return df_hs300[\'股票代码\']\n\n# 调用函数\ngetHS300List()\n', 'exec_succ': True}

【AI-询问是否将接口代码保存的到代码库(接口仓库),用户回复  yes】
是否需要将接口函数保存到接口仓库?(y/n): y

【AI-需求入库】
开始存需求库
prompt:: 
        请根据
import akshare as ak

def getHS300List():
    # 使用akshare的index_stock_cons接口获取沪深300成份股数据
    df_hs300 = ak.index_stock_cons(symbol="000300")
    
    # 重命名列名
    df_hs300.columns = ['股票代码', '股票简称', '纳入日期']
    
    # 打印df_hs300的股票代码列
    print(df_hs300['股票代码'])
    
    # 返回股票代码列
    return df_hs300['股票代码']

# 调用函数
getHS300List()
所示代码起一个合适英语文件名
file_name:: fetch_HS300_constituents.py

文件保存成功
m_name:: fetch_HS300_constituents
保存接口函数成功

【AI-分析代码形成接口描述建议】
module_name:: pythonRepository.fetch_HS300_constituents
导入接口函数成功
raw_doc:: ```
主要功能: 获取沪深300指数的成份股列表,并返回这些股票的代码。

函数名: getHS300List

入参: 无

返回值: 返回一个包含沪深300指数所有成份股股票代码的Series对象。

code_desc(接口方法提示建议):: 获取沪深300指数的成份股列表,并返回这些股票的代码。可以使用pythonRepository库的getHS300List接口,入参无,返回值是返回一个包含沪深300指数所有成份股股票代码的Series对象。使用python编码,打印返回值,代码格式为```python...```

【AI-询问是否要讲接口描述插入接口知识库 -   用户回复 yes】
是否需要将接口需求插入知识库?(y/n): y
{'name': 'node-1', 'cluster_name': 'elasticsearch', 'cluster_uuid': 'F6X7HlMMS-eYJlzY8Tg3Mw', 'version': {'number': '7.9.2', 'build_flavor': 'default', 'build_type': 'tar', 'build_hash': 'd34da0ea4a966c4e49417f2da2f244e3e97b4e6e', 'build_date': '2020-09-23T00:45:33.626720Z', 'build_snapshot': False, 'lucene_version': '8.6.2', 'minimum_wire_compatibility_version': '6.8.0', 'minimum_index_compatibility_version': '6.0.0-beta1'}, 'tagline': 'You Know, for Search'}
需求插入知识库成功
本轮处理完毕-处理完毕

处理完之后本地接口库(知识库)
在这里插入图片描述新增了getHS300List接口描述,对应代码库如红框所示
在这里插入图片描述
验证: 我们尝试用简单的中文提示来匹配本地知识库,调用本地代码库的getHS300List接口获取300成份股指数

【用户-提出中文要求】
请输入您的问题:获得沪深300成份股列表

【AI-匹配本地库成功】
raw_code:: 与上下文有关。

根据提供的信息,要获得沪深300指数的成份股列表并返回这些股票的代码,你可以使用`pythonRepository`库中的`getHS300List`接口。这个接口无需任何输入参数,它会返回一个包含沪深300指数所有成份股股票代码的`Series`对象。以下是使用Python进行此操作的示例代码:

```python
from pythonRepository import getHS300List

# 调用getHS300List接口获取沪深300指数成份股列表
hs300_stock_codes = getHS300List()

# 打印返回的股票代码列表
print(hs300_stock_codes)
请注意,实际使用时需要确保你的环境中已经安装了`pythonRepository`这个库,如果未安装,可以通过pip等包管理工具进行安装。此外,上述代码中的库名和函数名需确认在实际环境中是否存在且正确,因为“pythonRepository”看起来像是一个示例或虚构的库名,实际应用中可能需要替换为正确的库名,如`tushare``akshare`等,这些库通常提供了获取市场数据的功能。

【AI-执行】
开始执行...
0      600415
1      300418
2      600161
3      688082
4      688009
        ...  
295    000425
296    000157
297    000063
298    000001
299    000002
Name: 股票代码, Length: 300, dtype: object
0      600415
1      300418
2      600161
3      688082
4      688009
        ...  
295    000425
296    000157
297    000063
298    000001
299    000002
Name: 股票代码, Length: 300, dtype: object
0      600415
1      300418
2      600161
3      688082
4      688009
        ...  
295    000425
296    000157
297    000063
298    000001
299    000002
Name: 股票代码, Length: 300, dtype: object
执行成功: None
result:: {'exec_res': None, 'code': '\nfrom pythonRepository import getHS300List\n\n# 调用getHS300List接口获取沪深300指数成份股列表\nhs300_stock_codes = getHS300List()\n\n# 打印返回的股票代码列表\nprint(hs300_stock_codes)\n', 'exec_succ': True}
【AI-取文件名,并判断不是函数(没有def特征)】
所示代码起一个合适英语文件名

file_name:: fetch_HS300_stocks.py
不是函数

【AI-分析代码,但用户确认不入库】
raw_doc:: ```
主要功能: 获取沪深300指数的成份股列表。

函数名: getHS300List

入参: 无

返回值: 返回一个列表,包含沪深300指数的所有成份股代码。

code_desc:: 获取沪深300指数的成份股列表。可以使用pythonRepository库的getHS300List接口,入参无,返回值是返回一个列表,包含沪深300指数的所有成份股代码。使用python编码,打印返回值,代码格式为```python...```
是否需要将接口需求插入知识库?(y/n): n
不插入知识库
是否需要将接口需求插入知识库?(y/n): n
不插入知识库
本轮处理完毕

我们先归纳一下驱动AI编写本地接口的步骤:

  1. 中文编写需求,类似于详细设计,中间步骤需明确调用知识库已有接口方法
  2. AI会生成标准代码,并尝试执行,并会给代码自动起文件名,并保存到临时目录
  3. 然后AI会分析代码,归纳为一个判断,4个要素—— 一个判断是,代码是不是(接口)函数; 4个要素是,1) 功能说明, 2) 函数名 3) 入参 4)返回值, 并在4要素的基础上拼接一段 “接口提示”
  4. AI 会咨询用户,1) 代码是否保存到本地代码库, 2) 是否把接口提示存入本地接口库,用户如果觉得运行的满足要求,可以选择是,当然如果接口提示不合理,还可以人工修改; 否则选择否。
  5. 最后用户可以通过中文提示匹配本地接口库,调用新接口生成验证代码,看看是否能得到预想而结果,来验证是否准确

第二步: 在第一步的基础上,让AI小助手完成复杂功能,按输入的日期,计算年化每股收益(EPS)
1) 中文编写需求,类似于详细设计,中间步骤需明确调用知识库已有接口方法

请输入您的问题:请给出python代码,引入本地库pythonRepository计算沪深300成份股业绩增长,
生成genHS300EPS函数,入参是指定报表日期report_date,使用getReportDataLocal(report_date="20240331")接口,
获得业绩报表df_report,然后用同样的接口按前一年报表日期(last_report_datee="20230331")获得业绩报表df_last_report; 
再使用getHS300List()获得股票代码列表stock_list并打印;然后遍历stock_list,
按每个股票代码('股票代码'),分别在业绩报表df_report和df_last_report中获得对应的每股收益('每股收益'),
然后按{report_date}_每股收益和上一年的{last_report_date}_每股收益,计算每股收益的增长率ratio,
再使用CalAnnualRatio(report_date,ratio)计算年化每股收益增长率,遍历完成后按[股票代码,{last_report_date}_每股收益,{report_date}_每股收益,
每股收益增长率,年化每股收益增长率]转换成Dataframe格式的df_eps,并打印结果然后返回df_eps

这里使用了getReportDataLocal,getHS300List、CalAnnualRatio所有的本地接口

2.1 ) AI生成代码

raw_code:: 根据提供的上下文,信息是相关的。这里是一个基于您的要求实现的Python代码示例,它引入了`pythonRepository`本地库来计算沪深300成份股的业绩增长,并生成了`genHS300EPS`函数。请注意,此代码示例假设`pythonRepository`库已经包含了所提到的所有方法(如`getReportDataLocal`, `getHS300List`, 以及`CalAnnualRatio`),并且这些方法的功能正如您描述的那样工作。

```python
import pandas as pd
from pythonRepository import getReportDataLocal, getHS300List, CalAnnualRatio

def genHS300EPS(report_date):
    """
    计算沪深300成份股的业绩增长。
    
    参数:
    report_date (str): 报表日期,格式为"YYYYMMDD""""
    # 获取当前报表日期的业绩报表
    df_report = getReportDataLocal(report_date=report_date)
    # 获取上一年同一时期的业绩报表
    last_report_date = str(int(report_date[:4]) - 1) + report_date[4:]
    df_last_report = getReportDataLocal(report_date=last_report_date)
    
    # 获取沪深300成份股的股票代码列表并打印
    stock_list = getHS300List()
    print("沪深300成份股列表:", stock_list)
    
    # 初始化一个DataFrame用于存储结果
    results = []
    
    for stock_code in stock_list:
        # 获取当前报表和上一年报表的每股收益
        current_eps = df_report[df_report['股票代码'] == stock_code]['每股收益'].values[0]
        last_eps = df_last_report[df_last_report['股票代码'] == stock_code]['每股收益'].values[0]
        
        # 计算每股收益增长率
        ratio = (current_eps - last_eps) / last_eps
        
        # 计算年化每股收益增长率
        annual_growth_rate = CalAnnualRatio(report_date, ratio)
        
        # 将结果添加到列表中
        results.append([stock_code, last_eps, current_eps, ratio, annual_growth_rate])
    
    # 转换为DataFrame
    df_eps = pd.DataFrame(results, columns=['股票代码', f'{last_report_date}_每股收益', f'{report_date}_每股收益', '每股收益增长率', '年化每股收益增长率'])
    
    # 打印结果并返回
    print(df_eps)
    return df_eps

# 示例调用
genHS300EPS("20240331")

这段代码首先定义了一个`genHS300EPS`函数,该函数接收一个报表日期作为参数,然后按照您的要求执行一系列操作:获取指定日期及上一年同期的业绩报表、获取沪深300成分股列表、计算每只股票的每股收益增长率和年化增长率,并最终将所有数据整合到一个DataFrame中输出和返回。请注意,实际应用时需确保`pythonRepository`库可用且正确实现了上述提及的方法。

2.2) AI执行代码

开始执行...
从本地加载数据。
        序号    股票代码   股票简称    每股收益  ...  每股经营现金流量      销售毛利率   所处行业      最新公告日期
0        1  301552   科力装备  0.7100  ...  0.478079  41.920010   玻璃玻纤  2024-06-27
1        2  873805   双达股份  0.0300  ... -0.113605  30.416262   None  2024-06-26
2        3  873731   纬诚科技  0.1600  ... -0.168320  43.817607   None  2024-06-26
3        4  833755   扬德环能  0.0600  ...  0.078080  38.176760   None  2024-06-26
4        5  301099   雅创电子  0.2300  ...  0.109560  19.059485   贸易行业  2024-06-26
...    ...     ...    ...     ...  ...       ...        ...    ...         ...
5609  5610  300076  GQY视讯 -0.0002  ... -0.054076  23.557389  光学光电子  2024-04-10
5610  5611  002644   佛慈制药  0.0360  ... -0.031478  31.096057     中药  2024-04-10
5611  5612  603058   永吉股份  0.0970  ... -0.053076  40.440418   造纸印刷  2024-04-09
5612  5613  600873   梅花生物  0.2600  ... -0.010329  19.331521   食品饮料  2024-04-09
5613  5614  000818   航锦科技  0.0700  ... -0.163269  11.821246   化学原料  2024-04-03

[5614 rows x 16 columns]
从本地加载数据。
        序号    股票代码  股票简称    每股收益  ...  每股经营现金流量       销售毛利率  所处行业      最新公告日期
0        1  301099  雅创电子  0.1300  ... -0.744205   18.405659  贸易行业  2024-06-26
1        2  874232  晶华光学 -0.0400  ... -1.156202   30.990060  None  2024-06-25
2        3  873760  华兴股份  0.1400  ... -0.006184   16.052689  None  2024-06-25
3        4  873739  大鹏工业  0.2500  ... -0.264696   27.887279  None  2024-06-25
4        5  873688  宇星股份  0.1000  ... -0.500923   16.154411  None  2024-06-25
...    ...     ...   ...     ...  ...       ...         ...   ...         ...
5840  5841  836161  一万节能  0.0922  ... -0.334162   15.076727  None  2023-04-21
5841  5842  834701  鑫考股份  0.0800  ... -0.332865   37.305867  None  2023-04-20
5842  5843  400066  R鹍鹏1 -0.0197  ... -0.001599 -109.743796  None  2023-04-20
5843  5844  400210   博天5  0.0100  ...  0.069445   31.338692  None  2023-04-18
5844  5845  871484  聚合电力  0.0000  ... -0.182208   31.577320  None  2023-04-04

中间步骤

...
报告日期为20240331,对应的增长率为0.19827586206896552,年化增长率为0.7931034482758621
报告日期为20240331,对应的增长率为0.1999999999999999,年化增长率为0.7999999999999996
报告日期为20240331,对应的增长率为0.7500000000000001,年化增长率为3.0000000000000004
...
股票代码  20230331_每股收益  20240331_每股收益   每股收益增长率  年化每股收益增长率
0    600415         0.2200         0.1300 -0.409091  -1.636364
1    300418         0.1800        -0.1500 -1.833333  -7.333333
2    600161         0.1600         0.1900  0.187500   0.750000
3    688082         0.3000         0.1800 -0.400000  -1.600000
4    688009         0.0600         0.0600  0.000000   0.000000
..      ...            ...            ...       ...        ...
295  000425         0.1290         0.1350  0.046512   0.186047
296  000157         0.1000         0.1100  0.100000   0.400000
297  000063         0.5600         0.5700  0.017857   0.071429
298  000001         0.6500         0.6600  0.015385   0.061538
299  000002         0.1251        -0.0305 -1.243805  -4.975220
执行成功: None
result::...

2.3) 起一个文件名,并保存到临时目录

所示代码起一个合适英语文件名
file_name:: calculate_HS300_EPS_Growth.py
储存代码:: /home/cfets/gitea/myAIassistant/testtool/calculate_HS300_EPS_Growth.py
文件保存成功

3.1) AI分析代码

code_prompt::  
 
        按代码
import pandas as pd
from pythonRepository import getReportDataLocal, getHS300List, CalAnnualRatio
...
分析代码功能,以markdown格式输出,输出包含‘‘‘接口函数名、代码功能说明、入参、返回值说明’’’等4项内容,每项以##开头
        
raw_interface_desc:: ```markdown
## 接口函数名
genHS300EPS

## 代码功能说明
此函数计算沪深300指数成分股在指定报告日期的每股收益(EPS)增长情况,包括每股收益增长率及年化每股收益增长率。首先,它获取当前报告期与上一报告期的财务数据;接着,基于这些数据计算每只成分股的业绩增长指标;最后,汇总这些信息至一个DataFrame中并返回。

## 入参
- `report_date` (str): 报表日期,格式为"YYYYMMDD"。表示要分析的财务报告的日期,用于确定当前报告期以及对比的上一报告期。

## 返回值说明
函数返回一个Pandas DataFrame,其中包含以下列:
- `股票代码`: 成分股的股票代码。
- `{last_report_date}_每股收益`: 上一报告期的每股收益。
- `{report_date}_每股收益`: 当前报告期的每股收益。
- `每股收益增长率`: 当前报告期相较于上一报告期每股收益的增长比例。
- `年化每股收益增长率`: 根据`CalAnnualRatio`函数计算得出的年化每股收益增长率。

此外,函数在执行过程中会打印出沪深300成分股列表及最终计算的每股收益增长情况的DataFrame,便于直接查看结果。
接口函数说明: 此函数计算沪深300指数成分股在指定报告日期的每股收益(EPS)增长情况,包括每股收益增长率及年化每股收益增长率。首先,它获取当前报告期与上一报告期的财务数据;接着,基于这些数据计算每只成分股的业绩增长指标;最后,汇总这些信息至一个DataFrame中并返回。可以使用pythonRepository库的genHS300EPS接口,入参是`report_date`(str)报表日期,格式为"YYYYMMDD"。表示要分析的财务报告的日期,用于确定当前报告期以及对比的上一报告期。,返回值是函数返回一个PandasDataFrame,其中包含以下列`股票代码`成分股的股票代码。`{last_report_date}_每股收益`上一报告期的每股收益。`{report_date}_每股收益`当前报告期的每股收益。`每股收益增长率`当前报告期相较于上一报告期每股收益的增长比例。`年化每股收益增长率`根据`CalAnnualRatio`函数计算得出的年化每股收益增长率。此外,函数在执行过程中会打印出沪深300成分股列表及最终计算的每股收益增长情况的DataFrame,便于直接查看结果。使用python编码,打印返回值,代码格式为```python...```

产生了一个新的接口方法:genHS300EPS接口
4 ) 用户确认保存代码,并修改genHS300EPS接口提示说明,然后插入本地接口库

请确认分析内容接口函数说明是否准确,如果准确请输入y,否则请输入更改内容::
计算沪深300指数成分股在指定报告日期的业绩增长情况,包括上一年度与当前年度的每股收益(EPS)、每股收益增长率以及年化每股收益增长率。可以使用pythonRepository库的genHS300EPS接口,入参是`report_date`(str)当前报告期的日期,格式为\"YYYYMMDD\",,返回值是`df_eps`(DataFrame)返回一个DataFrame对象,包含以下列`股票代码`沪深300指数成分股的股票代码、`{last_report_date}每股收益`上一报告期的每股收益。`{report_date}每股收益`当前报告期的每股收益。`每股收益增长率`从上一报告期到当前报告期的每股收益增长率,使用python编码,打印返回值,代码格式为```python...```
是否需要将接口需求插入知识库?(y/n): y

需求插入知识库成功
本轮处理完毕

查看本地接口库(知识库),框住的就是新增genHS300EPS接口提示
在这里插入图片描述
查看已入库的 genHS300EPS代码
在这里插入图片描述
5) 验证

请输入您的问题:计算沪深300指数成分股在指定报告日期的业绩增长情况,指定日期为20240331
根据提供的信息,要计算沪深300指数成分股在指定报告日期(例如20240331)的业绩增长情况,您可以参考以下Python代码示例。请注意,实际执行此代码需要确保您已经安装了相应的pythonRepository库并且该库中确实包含了genHS300EPS这个接口。此代码是一个基于您描述的逻辑构建的示例,并未在真实的环境中测试过。

```python
from pythonRepository import genHS300EPS

# 指定报告日期
report_date = "20240331"

# 调用接口计算业绩增长情况
df_eps = genHS300EPS(report_date)

# 打印返回的DataFrame信息
print(df_eps)

这段代码首先定义了报告日期变量`report_date`"20240331",然后调用了`genHS300EPS`函数并将报告日期作为参数传递。函数执行后,会返回一个包含沪深300指数成分股在该报告日期业绩增长情况的DataFrame对象,最后通过`print`函数打印出这个DataFrame的内容。

请确保在实际应用前验证库的可用性及函数的正确性,并适当处理可能出现的异常情况。

执行情况

开始执行...
0      600415
1      300418
2      600161
3      688082
4      688009
...
Name: 股票代码, Length: 300, dtype: object
从本地加载数据。
        序号    股票代码   股票简称    每股收益  ...  每股经营现金流量      销售毛利率   所处行业      最新公告日期
0        1  301552   科力装备  0.7100  ...  0.478079  41.920010   玻璃玻纤  2024-06-27
1        2  873805   双达股份  0.0300  ... -0.113605  30.416262   None  2024-06-26
2        3  873731   纬诚科技  0.1600  ... -0.168320  43.817607   None  2024-06-26
3        4  833755   扬德环能  0.0600  ...  0.078080  38.176760   None  2024-06-26
4        5  301099   雅创电子  0.2300  ...  0.109560  19.059485   贸易行业  2024-06-26
...    ...     ...    ...     ...  ...       ...        ...    ...         ...
5609  5610  300076  GQY视讯 -0.0002  ... -0.054076  23.557389  光学光电子  2024-04-10
5610  5611  002644   佛慈制药  0.0360  ... -0.031478  31.096057     中药  2024-04-10
5611  5612  603058   永吉股份  0.0970  ... -0.053076  40.440418   造纸印刷  2024-04-09
5612  5613  600873   梅花生物  0.2600  ... -0.010329  19.331521   食品饮料  2024-04-09
5613  5614  000818   航锦科技  0.0700  ... -0.163269  11.821246   化学原料  2024-04-03
...
报告日期为20240331,对应的增长率为0.19969040247678016,年化增长率为0.7987616099071206
报告日期为20240331,对应的增长率为0.31764705882352945,年化增长率为1.2705882352941178
报告日期为20240331,对应的增长率为-0.06372549019607855,年化增长率为-0.2549019607843142
报告日期为20240331,对应的增长率为-0.08860759493670883,年化增长率为-0.35443037974683533
...
 股票代码  20230331_每股收益  20240331_每股收益   每股收益增长率  年化每股收益增长率
0    600415         0.2200         0.1300 -0.409091  -1.636364
1    300418         0.1800        -0.1500 -1.833333  -7.333333
2    600161         0.1600         0.1900  0.187500   0.750000
3    688082         0.3000         0.1800 -0.400000  -1.600000
4    688009         0.0600         0.0600  0.000000   0.000000
..      ...            ...            ...       ...        ...
295  000425         0.1290         0.1350  0.046512   0.186047
296  000157         0.1000         0.1100  0.100000   0.400000
297  000063         0.5600         0.5700  0.017857   0.071429
298  000001         0.6500         0.6600  0.015385   0.061538
299  000002         0.1251        -0.0305 -1.243805  -4.975220
...
执行成功: None
result:: {'exec_res': None, 'code': '\nfrom pythonRepository import genHS300EPS\n\n# 指定报告日期\nreport_date = "20240331"\n\n# 调用接口计算业绩增长情况\ndf_eps = genHS300EPS(report_date)\n\n# 打印返回的DataFrame信息\nprint(df_eps)\n', 'exec_succ': True}
...
是否需要生成接口函数说明,如果需要请输入Y/y,否则请输入N/n ::n
本轮处理完毕

至此已成功验证 genHS300EPS接口方法

下一篇我们将比较详细介绍改进后的AI小助手代码,后续我将采取,进展和思路分析,案例分析将继续采用免费分享交流,相关源代码及详细说明会使用VIP服务,请大家继续理解支持,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

※※Leetcode Hot 100刷题记录 -Day8(和为k的子数组)

问题描述: 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入&#xff1a…

java开发面试:AOT有什么优缺点/适用于什么场景/AOT和JIT的对比、逃逸分析和对象存储在堆上的关系、高并发中的集合有哪些问题

JDK9引入了AOT编译模式。 AOT 有什么优点?适用于什么场景? JDK 9 引入了一种新的编译模式 AOT(Ahead of Time Compilation) 。 和 JIT 不同的是,这种编译模式会在程序被执行前就将其编译成机器码,属于静态编译(C、 C…

【Redis详解】Redis安装+主从复制+哨兵模式+Redis Cluster

目录 一、Redis简介 1.1 关系型数据库和NoSQL数据库 二、Redis安装 2.1 rpm 安装 2.2 源码安装 三、Redis基本操作 四、Redis主从复制 4.1 配置主从同步 4.2 主从同步过程 五、Redis高可用--哨兵模式 5.1 哨兵的实验过程 六、数据保留 七、Redis Cluster 7.1 部署…

【办公软件】Excel如何开n次方根

在文章:【分立元件】电阻的基础知识中我们学习电阻值、电阻值容差标注相关标准。知道了标准将电阻值标准数列化。因此电阻值并非1Ω、2Ω、3Ω那样的整数,而是2.2Ω、4.7Ω那样的小数。 这是因为电阻值以标准数(E系列)为准。系列的“E”是Exponent(指数)…

鸿蒙开发占多列的瀑布流

鸿蒙开发占多列的瀑布流 正常样式的瀑布流没什么好说,大家看下官方文档应该都写得来。关键是有些item要占多列,整行的效果 先看下效果图: 还有底部的效果图的,就不放了,你们应该也看得懂的 思路: 关键在…

libtorch---day04[MNIST数据集]

参考pytorch。 数据集读取 MNIST数据集是一个广泛使用的手写数字识别数据集,包含 60,000张训练图像和10,000张测试图像。每张图像是一个 28 28 28\times 28 2828像素的灰度图像,标签是一个 0到9之间的数字,表示图像中的手写数字。 MNIST …

使用Aqua进行WebUI测试(Pytest)——介绍篇(附汉化教程)

一、在创建时选择Selenium with Pytest 如果选择的是Selenium,则只能选择Java类语言 选择selenium with Pytest,则可以选择Python类语言 Environment 其中的【Environment】可选New 和 Existing New :选择这个选项意味着你希望工具为你创…

常用企业技术架构开发速查工具列表

对于Java开发者来说,不光要关注业务代码也要注重架构的修炼。日常用到的工具组件都是我们架构中重要的元素,服务于应用系统。我们应该选择适合应用体量的架构避免过度设计,最简单的方式就是矩阵方式去分析每个组件的适用场景优缺点,从而综合评估做好决策。 程序员大多数时间…

一次性说清楚,微软Mos国际认证

简介: Microsoft Office Specialist(MOS)中文称之为“微软办公软件国际认证”,是微软为全球所认可的Office软件国际性专业认证,全球有168个国家地区认可,每年有近百万人次参加考试,它能有效证明…

Elasticsearch集群架构

Elasticsearch是一种分布式搜索引擎,基于Apache Lucene构建,支持全文搜索、结构化搜索、分析和实时数据处理。 节点(Node) 节点是集群中的一台服务器。根据节点的角色,可以分为以下几种类型: 主节点&#…

uniapp中slot插槽用法

1.slot的用法 1.1 简单概念 元素作为组件模板之中的内容分发插槽&#xff0c;<slot> 元素自身将被替换 是不是这段话听着有点迷? 那么直接开始上代码 此时创建一个简单的页面&#xff0c;在中间写上一个<slot></slot>标签&#xff0c;标签内并没有数据 …

MySQL——隔离级别及解决方案

CRUD不加控制&#xff0c;会有什么问题&#xff1f; 比如上图场景&#xff0c;当我们的客户端A发现还有一张票的时候&#xff0c;将票卖掉&#xff0c;嗨还没有执行更新数据库的时候&#xff0c;客户端B又检查票数&#xff0c;发现票数大于0&#xff0c;又卖掉了一张票。然后客…

基于FPGA实现SD NAND FLASH的SPI协议读写

基于FPGA实现SD NAND FLASH的SPI协议读写 在此介绍的是使用FPGA实现SD NAND FLASH的读写操作&#xff0c;以雷龙发展提供的CS创世SD NAND FLASH样品为例&#xff0c;分别讲解电路连接、读写时序与仿真和实验结果。 目录 1 FLASH背景介绍 2 样品申请 3 电路结构与接口协议 …

微信管理工具真的那么好用么?

01 多号一个界面聚合聊天 可以同时登录多个微信号&#xff0c;不再需要频繁切换账号或使用多台设备在一个界面聚合聊天。 02 多号朋友圈同步发朋友圈 多个微信号可以即时发布或定时发布朋友圈&#xff0c;省去了逐个发送的繁琐。 03 机器人自动回复 不仅可以自动通过好友…

Android Camera系列(三):GLSurfaceView+Camera

人类的悲欢并不相通—鲁迅 Android Camera系列&#xff08;一&#xff09;&#xff1a;SurfaceViewCamera Android Camera系列&#xff08;二&#xff09;&#xff1a;TextureViewCamera Android Camera系列&#xff08;三&#xff09;&#xff1a;GLSurfaceViewCamera 本系…

Telephony SMS

1、短信的协议架构 如下图,参考3GPP 23.040 4.9节 Protocols and protocol architecture 1、SM-AL : 应用层 2、SM-TL :传输层 3、SM-RL :中继层 4、SM-LL :链路层 由于我们只关注手机终端,因此只需要关注SM-TL这一层即可 2、SM-TL分类 短信的协议架构参考3GPP 23.04…

猛兽财经:在股价创下历史新高后,5个因素将使Netflix股价进一步上涨

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 股价创三年来新高后&#xff0c; Netflix股价还会继续上涨 作为流媒体领域无可争议的领导者&#xff0c;Netflix(NFLX)的股价在上周再次创下了新高&#xff08;每股超过了700美元&#xff0c;这一涨幅已经超过了2021年底创…

[Linux] 项目自动化构建工具-make/Makefile

标题&#xff1a;[Linux] 项目自动化构建工具-make/Makefile 水墨不写bug 目录 一、什么是make/makefile 二、make/makefile语法 补充&#xff08;多文件标识&#xff09;&#xff1a; 三、make/makefile原理 四、make/makefile根据时间对文件选择操作 正文开始&#xff…

基于SpringBoot的校园闲置物品租售系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户管理界面 …

华为云征文|Flexus云服务X实例应用,通过QT连接华为云MySQL,进行数据库的操作,数据表的增删改查

引出 4核12G-100G-3M规格的Flexus X实例使用测评第3弹&#xff1a;Flexus云服务X实例应用&#xff0c;通过QT连接华为云MySQL&#xff0c;进行数据库的操作&#xff0c;数据表的增删改查 什么是Flexus云服务器X实例 官方解释&#xff1a; Flexus云服务器X实例是新一代面向中…