Commit a59352e2 authored by 于飞's avatar 于飞

添加聊天历史资源代码

parent f793c556
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/2/24 10:21
# @File : crud.py
# @IDE : PyCharm
# @desc : 增删改查
from typing import Any
from redis.asyncio import Redis
from fastapi import UploadFile
from sqlalchemy.exc import StatementError
from sqlalchemy.orm import joinedload, aliased
from sqlalchemy.orm.strategy_options import _AbstractLoad, contains_eager
from dbgpt.app.apps.core.exception import CustomException
from fastapi.encoders import jsonable_encoder
from sqlalchemy import select, false, and_, update
from dbgpt.app.apps.core.crud import DalBase
from sqlalchemy.ext.asyncio import AsyncSession
from dbgpt.app.apps.core.validator import vali_telephone
# from dbgpt.app.apps.utils.file.aliyun_oss import AliyunOSS, BucketConf
from dbgpt.app.apps.utils.excel.import_manage import ImportManage, FieldType
from dbgpt.app.apps.utils.excel.write_xlsx import WriteXlsx
# from dbgpt.app.apps.utils.send_email import EmailSender
# from dbgpt.app.apps.utils.sms.reset_passwd import ResetPasswordSMS
from dbgpt.app.apps.utils.tools import test_password
from .models.chathistory import VadminChatHistory
from .params.chathistory import ChatHistoryParams
from .schemas.chathistory import ChatHistorySchemas, ChatHistoryIn, ChatHistoryUpdate, ChatHistoryInDic
from dbgpt.app.apps.config import settings
from dbgpt.app.apps.utils.excel.excel_manage import ExcelManage
from dbgpt.app.apps.system import crud as vadmin_system_crud
import copy
from dbgpt.app.apps.utils import status
from datetime import datetime
from typing import List
class ChatHistoryDal(DalBase):
def __init__(self, db: AsyncSession):
super(ChatHistoryDal, self).__init__()
self.db = db
self.model = VadminChatHistory
self.schema = ChatHistoryInDic
async def create_data(
self,
data: ChatHistorySchemas,
v_options: list[_AbstractLoad] = None,
v_return_obj: bool = False,
v_schema: Any = None
) -> Any:
"""
创建
:param data:
:param v_options:
:param v_return_obj:
:param v_schema:
:return:
"""
if data is None:
raise CustomException("data is None!", code=status.HTTP_ERROR)
"""
unique = await self.get_data(conv_uid=data.conv_uid, v_return_none=True)
if unique:
raise CustomException("会话已存在!", code=status.HTTP_ERROR)
"""
print(f"-------打印会话ID----->:{data.conv_uid}")
obj = self.model()
obj.conv_uid = data.conv_uid
obj.message_medias = data.message_medias
await self.flush(obj)
return await self.out_dict(obj, v_options, v_return_obj, v_schema)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/7/7 13:41
# @File : chathistory.py
# @IDE : PyCharm
# @desc : 聊天历史资源模型
from datetime import datetime
from sqlalchemy.orm import relationship, Mapped, mapped_column
from sqlalchemy import Column, DateTime, Integer, String, Text, func
from dbgpt.app.apps.db.db_base import BaseModel
class VadminChatHistory(BaseModel):
__tablename__ = "vadmin_chat_history"
__table_args__ = ({'comment': '聊天历史资源表'})
conv_uid: Mapped[str] = mapped_column(String(255), index=True, unique=False, nullable=False, comment="会话ID")
message_medias: Mapped[str] = mapped_column(Text(length=2 ** 31 - 1), index=True, nullable=False, comment="聊天历史资源数据")
\ No newline at end of file
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2021/10/18 22:19
# @File : chathistory.py
# @IDE : PyCharm
# @desc : 查询参数-类依赖项
"""
类依赖项-官方文档:https://fastapi.tiangolo.com/zh/tutorial/dependencies/classes-as-dependencies/
"""
from fastapi import Depends, Query
from dbgpt.app.apps.core.dependencies import Paging, QueryParams
class ChatHistoryParams(QueryParams):
"""
列表分页
"""
def __init__(
self,
conv_uid: str | None = Query(None, title="会话ID"),
message_medias: str | None = Query(None, title="聊天历史资源数据"),
params: Paging = Depends()
):
super().__init__(params)
self.conv_uid = conv_uid
self.message_medias = ("like", message_medias)
from .chathistory import ChatHistoryIn
\ No newline at end of file
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2021/10/18 22:19
# @File : chathistory.py
# @IDE : PyCharm
# @desc : pydantic 模型,用于数据库序列化操作
from datetime import datetime
from pydantic import BaseModel, ConfigDict, field_validator
from pydantic_core.core_schema import FieldValidationInfo
class ChatHistorySchemas(BaseModel):
conv_uid: str | None = ""
message_medias: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class ChatHistoryInDic(ChatHistorySchemas):
model_config = ConfigDict(from_attributes=True)
id: int
conv_uid: str | None = ""
message_medias: str | None = ""
class ChatHistoryIn(ChatHistorySchemas):
"""
创建
"""
conv_uid: str | None = ""
message_medias: str | None = ""
class ChatHistoryOut(ChatHistorySchemas):
conv_uid: str | None = ""
message_medias: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class ChatHistoryUpdate(ChatHistorySchemas):
"""
更新
"""
conv_uid: str | None = ""
message_medias: str | None = ""
from redis.asyncio import Redis
from fastapi import APIRouter, Depends, Body, UploadFile, Request
from dbgpt.app.apps.utils.response import SuccessResponse, ErrorResponse
from dbgpt.app.apps.vadmin.auth.utils.current import AllUserAuth, FullAdminAuth, OpenAuth
from dbgpt.app.apps.vadmin.auth.utils.validation.auth import Auth
from . import schemas, crud, models
from dbgpt.app.apps.vadmin.chathistory.models.chathistory import VadminChatHistory
from dbgpt.app.apps.vadmin.chathistory.params.chathistory import ChatHistoryParams
from dbgpt.app.apps.vadmin.chathistory.schemas.chathistory import ChatHistorySchemas, ChatHistoryIn,ChatHistoryUpdate
from dbgpt.app.apps.vadmin.chathistory import crud
from fastapi.encoders import jsonable_encoder
from ...core.dependencies import IdList
router = APIRouter()
###########################################################
# 聊天记录资源管理
###########################################################
@router.get("/get_chat_history", summary="获取聊天历史资源列表")
async def get_chat_history(para: ChatHistoryParams = Depends(), auth: Auth = Depends(OpenAuth())):
print(f"---打印输入参数--->:{para.dict()}")
v_schema = schemas.chathistory.ChatHistoryInDic
datas, count = await crud.ChatHistoryDal(auth.db).get_datas(
**para.dict(),
v_schema=v_schema,
v_return_count=True
)
return SuccessResponse(datas, count=count)
@router.post("/create_chat_history", summary="创建聊天历史资源")
async def create_chat_history(qdata: Request, auth: Auth = Depends(OpenAuth())):
if qdata is None:
print('create_chat_history is None')
else:
print(f"req会话ID:{qdata.query_params['conv_uid']} req会话历史资源:{qdata.query_params['message_medias']} ")
simi_data = ChatHistorySchemas()
simi_data.conv_uid = qdata.query_params['conv_uid']
simi_data.message_medias = qdata.query_params['message_medias']
return SuccessResponse(await crud.ChatHistoryDal(auth.db).create_data(data=simi_data))
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment