python记账小程序接入千帆大模型做账单优化

 所需板块:

import os
import requests
import json

 wenxin()类:

其中包含了三个方法,分别是:

__init__(self,api_key,secret_key):

用于初始化wenxin()类中的基本变量

access_token(self):

用于向千帆大模型发起请求,获得对应的TOOKEN,并且将获得的TOOKEN返回给__init__方法进行初始化赋值

hui(self,text):

用于进行文本聊天的补全。该方法接受一个文本参数,构建请求的payload并发送请求,最后返回完整的聊天内容

class wenxin():
    def __init__(self, api_key, secret_key):
        self.API_KEY = api_key
        self.SECRET_KEY = secret_key
        self.ACCESS_TOKEN = self.access_token()

    def access_token(self):
        url = "https://aip.baidubce.com/oauth/2.0/token"
        params = {
            "grant_type": "client_credentials",
            "client_id": self.API_KEY,
            "client_secret": self.SECRET_KEY
        }
        TOKEN = requests.post(url, params=params).json()
        return str(TOKEN.get("access_token"))

    def hui(self, text):
        url = ("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token="+ self.ACCESS_TOKEN)

        payload = json.dumps({"messages": [{"role": "user", "content": text}]})
        headers = {"Content-Type": "application/json"}

        response = requests.request("POST", url, headers=headers, data=payload).json()
        return response["result"]

 shuanchu:

这段代码定义了一个名为shanchu的类,其中包含了一个初始化方法__init__和一个方法wen。该类的目的是用于删除特定日期的文本文件。

在__init__方法中,类接受三个参数year、month和day,并将它们以"Date:"为键值创建了一个字典self.cidian。然后将日期字符串保存在self.mzi中,并构建了一个文件路径self.file

在wen方法中,尝试使用os模块的remove函数删除一个名为"{self.file}.txt"的文件。如果文件不存在,则会捕获FileNotFoundError并打印出错误消息。

class shanchu:
    def __init__(self,year,month,day):
        self.cidian={"Date:":year+"-"+month+"-"+day}
        self.mzi=self.cidian["Date:"]
        self.file=os.path.join(chuangjian,self.mzi)
    def wen(self):
        try:
            os.remove(f"{self.file}.txt")
        except FileNotFoundError as e:
            print(f"文件不存在:{e}\n")

mulu:

这段代码定义了一个名为mulu的类,该类包含两方法。在 __init__ 方法中,定义了一个属性wenj,其值为未定义的chuangjian变量。在 duqu 方法中,首先判断chuangjian变量指定的路径是否存在且是否是一个目录,然后遍历该目录下的所有文件和子目录,并打印它们的名称。

class mulu:
    def __int__(self):
        self.wenj=chuangjian

    def duqu(self):
        if os.path.exists(chuangjian) and os.path.isdir(chuangjian):
            for i in os.listdir(chuangjian):
                print(i)

xieru:

这段代码定义了一个名为xieru的类,具有以下功能:

初始化方法__init__接受参数year, month, day, weather, shuju, xiaofei, mony,并将这些参数存储在对象的属性中。

  • 创建了一个字典cidian,其中包含日期和天气信息。
  • 计算了剩余活动资金shengy,即初始资金减去消费的金额。
  • 构建了文件路径file,用于存储数据文件。
  • 定义了一个名为wen的方法,用于将数据写入文件:
    1. 首先尝试打开文件进行写入操作,将日期和天气信息写入文件。
    2. 然后逐行写入shuju中的信息,以及消费金额、初始资金和剩余资金等信息。
    3. 捕获可能出现的文件不存在和其他异常,并输出对应的错误信息。
    4. 最后无论如何都会输出“写入成功”和“写入结束”的信息。
    class xieru:
        def __init__(self,year,month,day,weather,shuju,xiaofei,mony):
            self.cidian={"Date:":year+"-"+month+"-"+day,"weather:":weather}
            self.mzi=self.cidian["Date:"]
            self.shuju=shuju
            self.xiaofei=xiaofei
            self.mony=mony
            self.shengy=float(self.mony)-float(self.xiaofei)
            self.shengyu=float(self.shengy)
            self.file=os.path.join(chuangjian,self.mzi)
    
        def wen(self):
            try:
                with open(f"{self.file}.txt","w") as fill:
                    fill.write(self.cidian["Date:"]+"------"+self.cidian["weather:"])
                with open(f"{self.file}.txt","a") as fi:
                     for i in self.shuju:
                        fi.write(f"\n{i}\n")
                     fi.write(f"\n一共花费:{self.xiaofei}元\n")
                     fi.write(f"\n今天活动资金:{self.mony}元\n")
                     fi.write(f"\n剩余活动资金:{self.shengyu}元\n")
    
            except FileNotFoundError as e:
                print(f"文件不存在:{e}\n")
            except Exception as e:
                print(e+"\n")
            else:
                print("写入成功\n")
            finally:
                print("写入结束\n")
    

     caozuo:

    这段代码定义了一个名为caozuo的类,其中包括以下方法:

    1. __init__(self): 初始化方法,创建一个空列表self.yuansu来存储元素。

    2. jilu(self): 这个方法允许用户输入今日的花销,格式为“物品:价格”。输入的元素会添加到self.yuansu列表中,直到用户输入'done'为止。最后,返回记录的元素列表。

    总体来说,这段代码实现了一个记录花销的功能,用户可以逐个输入花销信息,直到输入'done'结束,最后返回记录的花销信息列表。

    class caozuo:
        def __init__(self):
            self.yuansu=[]
        def jilu(self):
            elements = self.yuansu
            while True:
                element  = input("请输入今日花销(物品:价格):")
                if element == 'done':
                    break
                elements.append(element)
            return elements

    duqu: 

    这段代码定义了一个名为duqu的类,其中包含了一个初始化方法__init__和一个名为wen的方法。

    在初始化方法中,传入参数yearmonthday用于构建一个字典self.cidian,键为"Date:",值为年月日格式的日期字符串。然后通过os.path.join方法将路径chuangjian与日期字符串拼接,赋值给self.file属性。

    wen方法中,尝试以只读模式打开以日期字符串命名的txt文件。如果文件不存在,会捕获FileNotFoundError异常并打印一条包含具体异常信息的消息。

    class duqu:
        def __init__(self,year,month,day):
            self.cidian={"Date:":year+"-"+month+"-"+day}
            self.mzi=self.cidian["Date:"]
            self.file=os.path.join(chuangjian,self.mzi)
        def wen(self):    
            try:
                with open(f"{self.file}.txt","r") as file:
                    return file.read()
            except FileNotFoundError as e:
                print(f"文件不存在:{e}\n")
    

     以下为完整代码:

    import os
    import requests
    import json
    
    class wenxin():
        def __init__(self, api_key, secret_key):
            self.API_KEY = api_key
            self.SECRET_KEY = secret_key
            self.ACCESS_TOKEN = self.access_token()
    
        def access_token(self):
            url = "https://aip.baidubce.com/oauth/2.0/token"
            params = {
                "grant_type": "client_credentials",
                "client_id": self.API_KEY,
                "client_secret": self.SECRET_KEY
            }
            TOKEN = requests.post(url, params=params).json()
            return str(TOKEN.get("access_token"))
    
        def hui(self, text):
            url = ("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token="+ self.ACCESS_TOKEN)
    
            payload = json.dumps({"messages": [{"role": "user", "content": text}]})
            headers = {"Content-Type": "application/json"}
    
            response = requests.request("POST", url, headers=headers, data=payload).json()
            return response["result"]
    
    
    
    class shanchu:
        def __init__(self,year,month,day):
            self.cidian={"Date:":year+"-"+month+"-"+day}
            self.mzi=self.cidian["Date:"]
            self.file=os.path.join(chuangjian,self.mzi)
        def wen(self):
            try:
                os.remove(f"{self.file}.txt")
            except FileNotFoundError as e:
                print(f"文件不存在:{e}\n")
    
    
    class mulu:
        def __int__(self):
            self.wenj=chuangjian
    
        def duqu(self):
            if os.path.exists(chuangjian) and os.path.isdir(chuangjian):
                for i in os.listdir(chuangjian):
                    print(i)
                    
    
    class xieru:
        def __init__(self,year,month,day,weather,shuju,xiaofei,mony):
            self.cidian={"Date:":year+"-"+month+"-"+day,"weather:":weather}
            self.mzi=self.cidian["Date:"]
            self.shuju=shuju
            self.xiaofei=xiaofei
            self.mony=mony
            self.shengy=float(self.mony)-float(self.xiaofei)
            self.shengyu=float(self.shengy)
            self.file=os.path.join(chuangjian,self.mzi)
    
        def wen(self):
            try:
                with open(f"{self.file}.txt","w") as fill:
                    fill.write(self.cidian["Date:"]+"------"+self.cidian["weather:"])
                with open(f"{self.file}.txt","a") as fi:
                     for i in self.shuju:
                        fi.write(f"\n{i}\n")
                     fi.write(f"\n一共花费:{self.xiaofei}元\n")
                     fi.write(f"\n今天活动资金:{self.mony}元\n")
                     fi.write(f"\n剩余活动资金:{self.shengyu}元\n")
    
            except FileNotFoundError as e:
                print(f"文件不存在:{e}\n")
            except Exception as e:
                print(e+"\n")
            else:
                print("写入成功\n")
            finally:
                print("写入结束\n")
    
    
    class caozuo:
        def __init__(self):
            self.yuansu=[]
        def jilu(self):
            elements = self.yuansu
            while True:
                element  = input("请输入今日花销(物品:价格):")
                if element == 'done':
                    break
                elements.append(element)
            return elements
    
    
    class duqu:
        def __init__(self,year,month,day):
            self.cidian={"Date:":year+"-"+month+"-"+day}
            self.mzi=self.cidian["Date:"]
            self.file=os.path.join(chuangjian,self.mzi)
        def wen(self):    
            try:
                with open(f"{self.file}.txt","r") as file:
                    return file.read()
            except FileNotFoundError as e:
                print(f"文件不存在:{e}\n")
    
    if __name__ == "__main__":
        dangqin=os.getcwd()
        print(dangqin)
        mz="日记2"
        dian={"wenjianjia:":dangqin+"\\"+mz+"\\"}
        chuangjian= dian["wenjianjia:"]
        
        try:
                os.makedirs(chuangjian,exist_ok=True)
        except FileExistsError as e:
                print(f"文件夹已存在:{e}\n")
    
        print("欢迎使用记账本")
        print("1.写入记账")
        print("2.读取记账")
        print("3.删除记账")
        print("4.优化账单")
        print("5.退出")
        while True:
            try:
                a=int(input("请输入你的选择:"))
                if a==1:
                   year=input("请输入年份:")
                   month=input("请输入月份:")
                   day=input("请输入日期:")
                   weather=input("请输入天气:")
                   mony=input("请输入今日活动资金:")
                   n=caozuo()
                   c=n.jilu()
                   def jisuan(c):
                       a=0
                       for i in c:
                           chuli=i.split(":")
                           a+=float(chuli[1])
                       return a
                   xiaofei=jisuan(c)
                   shuju=c
                   x=xieru(year,month,day,weather,shuju,xiaofei,mony)
                   x.wen()
    
    
                if a==2:
                    print("__________")
                    print("目录:\n")
                    mulu().duqu()
                    print("__________")
    
                    year=input("请输入年份:")
                    month=input("请输入月份:")
                    day=input("请输入日期:")
                    x=duqu(year,month,day)
                    print(x.wen())
                
                if a==3:
                    print("__________")
                    print("目录:\n")
                    mulu().duqu()
                    print("__________")
    
                    year=input("请输入年份:")
                    month=input("请输入月份:")
                    day=input("请输入日期:")
                    x=shanchu(year,month,day)
                    x.wen()
    
    
                if a==4:
                    promate=(
                        "背景:你是一个专业的财务专家\n"
                        "任务:现在给你一个账单,请你优化账单,让账单更准确,更真实,让账单更符合你的生活,让账单更真实,让账单更真实,让账单更真实,让账单更真实,让账单更真实,让账单更真实,让账单更真实,让账单更真实,让账单更真实,让账单更真实,让账单更真实"
                        "备注:只输出优化后的账单,不要输出其他内容"
                    )
                    print("__________")
                    print("目录:\n")
                    mulu().duqu()
                    print("__________")
                    year=input("请输入年份:")
                    month=input("请输入月份:")
                    day=input("请输入日期:")
                    x=duqu(year,month,day)
                    x.wen()
                    key={
                    "apikey":"API_KEY",
                    "serkry":"SECRET_KEY"
                    }
                    y=wenxin(key["apikey"],key["serkry"])
                    fen=x.wen().split("\n")
                    print(str(fen))
                    print(y.hui(str(fen)+promate))
    
    
    
                if a==5:
                    print("退出成功")
                    break    
                   
    
            except ValueError as e:
                print(f"输入错误:{e}\n")

    作者:X_UN

    物联沃分享整理
    物联沃-IOTWORD物联网 » python记账小程序接入千帆大模型做账单优化

    发表回复