from peewee import SqliteDatabase, Model, CharField, TextField, ForeignKeyField, DateTimeField,IntegerField,AutoField import datetime from init import * # 创建一个 SQLite 数据库实例 db = SqliteDatabase(f"{gcfg['fs']['path']}/db/k_database.db") # 连接到数据库 db.connect() #并发操作 db.execute_sql("PRAGMA journal_mode=WAL;") class BaseModel(Model): class Meta: database = db #知识库文档 class Doc(BaseModel): base = CharField() #知识库 abs_path = CharField(unique=True) f_name = CharField() f_up_at = DateTimeField(default=datetime.datetime.now) #文件更新时间 f_size = IntegerField(default=0) #文件大小 f_sec = IntegerField(default=1) #点赞数 author= CharField(null = True) #作者 ctype = CharField(null = True) #Content-Type catalog = CharField(null = True) level = IntegerField(default=1) meta = TextField(null = True) #知识百科 class BaiKe(BaseModel): id = AutoField(primary_key=True) title = CharField() catalog = CharField() html = TextField() c_time = DateTimeField(default=datetime.datetime.now) m_time = DateTimeField(default=datetime.datetime.now) #浏览次数 view_count = IntegerField(default=0) #全文id full_id = IntegerField(default=0) creator = TextField(default="管理员") modifier = TextField(default="管理员") #知识百科的分类 class BaiKe_Catalog(BaseModel): id = AutoField(primary_key=True) catalog = CharField() demo = CharField() c_time = DateTimeField(default=datetime.datetime.now) #百科条数 doc_count = IntegerField(default=0) #知识广场的知识体的仓库,助手,智能体 class KAgent(BaseModel): id = AutoField(primary_key=True) title = CharField() #标题 demo = CharField() #介绍 guide = CharField() #引导语 kasn = CharField() #生成一个随机数的,用来标识KAgent atype = IntegerField(default=0) #agent 类型,0-检索知识库,1-动态检索,2-上传文件,100-不检索 files = TextField(null = True) #文件列表 prompt = TextField() #提示词 c_time = DateTimeField(default=datetime.datetime.now) m_time = DateTimeField(default=datetime.datetime.now) icon = CharField(null = True) # 图标 catalog = CharField(null = True) #分类 baike = CharField(null = True) #百科 oth = TextField(null = True) #未来 creator = TextField(default="管理员") modifier = TextField(default="管理员") #用户列表 class User(BaseModel): userid = TextField() #自动生成,可保唯一, username = TextField() #显示名 telphone = TextField() #手机号码,需要唯一 email = CharField(null = True) city = CharField(null = True) #个人的订阅的智能体 org = CharField(null = True) dep = CharField(null = True) #个人的服务能力设置,如访问次数等 title = CharField(null = True) #手机号的hash值 ref = CharField(null = True) #注册方式 c_time = DateTimeField(default=datetime.datetime.now) # 创建一个 SQLite 数据库实例 log_db = SqliteDatabase(f"{gcfg['fs']['path']}/db/logs.db") # 连接到数据库 log_db.connect() #并发操作 log_db.execute_sql("PRAGMA journal_mode=WAL;") class LogBaseModel(Model): class Meta: database = log_db #登录日志 class Login(LogBaseModel): userid = TextField(null = True) username = TextField(null = True) action = TextField(null = True) #登录,退出,等 pt =TextField(null = True) #访问的平台或知识体的sn,或内容 ref = CharField(null = True) #登录方式 client_ip = CharField(null = True) c_time = DateTimeField(default=datetime.datetime.now) #知识对话日志 class QA(LogBaseModel): userid = TextField(null = True) username = TextField(null = True) question = TextField() answer = TextField() ref = CharField(null = True) client_ip = CharField(null = True) c_time = DateTimeField(default=datetime.datetime.now) #超级个人助理agent日志 class SuperManAgent(LogBaseModel): chatid = TextField(null = True) username = TextField(null = True) question = TextField() answer = TextField() #规划的路径 prompt = TextField() #可用的prompt score = IntegerField(default=60) #自动评分 human = IntegerField(default=0) #手工点赞100或点踩-100 c_time = DateTimeField(default=datetime.datetime.now) #自动创建 log_db.create_tables([QA,Login,SuperManAgent]) def init_data(): baike = BaiKe.create(title="k3GPT大模型是什么",catalog="词条/产品词条",html="""
k3GPT是一个大模型AI驱动的知识共享平台,通过知识搜索、知识对话、知识创作、知识广场等功能,实现知识从汇聚沉淀、加工创作,到流动共享的全过程管理,因此称为知识knowledge x 3的GPT平台, 名曰: k3GPT.
让私域知识文档轻松的聚合沉淀,让人更好的使用和创造知识,让知识流动起来!让工作高效起来!
标记 - 注意
标记来表示引用内容或重要内容 - 记住:不用生成PPT的目录,智能体会根据标记自动生成成目录 """) kasn= secrets.token_urlsafe(8) k4 = KAgent.create(atype=2,title="海报文案助手",demo="支持海报文案的生成", guide="你好!我是一个海报生成助手,我可以根据你提供的文字和要求来生成一个海报的文案。", kasn=kasn, files="海报文案助手", prompt=""" # 你是一个海报文案生成助手 ## 现在是{now},可以根据此作出时间上的判断 ## 海报文案结构标记 海报文案结构的具体标记,请按如下的格式进行生成 - 海报的主标题使用h1标记(必须),如:
海报的主标题
- 海报的副标题使用h3标记(必须),如:海报的副标题
- 海报内容是一个列表,可以有多个内容块组成 - 每个内容块有一个主标题和一个副标题 - 海报内容块的主标题使用h2标记(必须),如:行动计划
- 海报内容块的副标题使用h3标记(可选),如:执行到底
- 内容块信息列表至多分为三级,一级用标记,二级用
标记,三级用 标记 - 海报内容的摘要用
标记 - 海报的报尾需要使用
表示,注脚内容用标记支持多个 ## 海报文案样例
海报主标题
海报副标题
海报内容1主标题
海报内容1副标题
一级内容
二级内容1 三级级内容1
海报内容2主标题
海报内容2副标题
海报摘要
海报报尾
""") kasn= secrets.token_urlsafe(8) k5 = KAgent.create(title="智能翻译",demo="自动实现中文到英文,英文到中文的的翻译",guide="你好,我是中英文语言翻译的专家,直接输入中文则翻译输出英文,输入英文则翻译输出中文",atype=100,kasn=kasn,prompt=""" 你是一个中英文语言翻译的专家,直接输入中文则翻译输出英文,输入英文则翻译输出中文 """) if __name__ == '__main__': print(f"{gcfg['fs']['path']}/db/k_database.db") #创建表 db.drop_tables([Doc,BaiKe,BaiKe_Catalog,KAgent,User]) db.create_tables([Doc,BaiKe,BaiKe_Catalog,KAgent,User]) init_data() db.close() log_db.create_tables([QA,Login]) #log_db.close()