当前位置:首页>python>6python之获取会话列表接口及新建会话接口

6python之获取会话列表接口及新建会话接口

  • 2026-09-06 23:21:34
6python之获取会话列表接口及新建会话接口

写在前面的话

原谅他吧。昨天,表哥打来视频,说想三舅了。我赶紧去老爸屋,老爸一直摆手,表达不接的意思。我说,我爸睡了,我给你叫起来。老爸无奈接了下,和表哥聊起来,聊了一会,我感觉不对劲,老爸一句,你今天喝了多少假酒啊,想起来给我打电话了。我明白了,表哥喝醉了。我听他们聊到我奶埋新疆不合适,到时,他过来走亲戚,想给我奶烧纸都没地方烧,还提到一个表弟在家盖了2.5层的小楼,他拉的沙石料,提到大爷找了新老伴,都是一些家常事。挂了电话,老爸说,这孩子不是喝醉也不会给我打电话,言语中充满了埋怨。我说,酒后吐真言,酒后能想到你,说明人家心里真的有你。老妈说,我带海振婶子几个孩子好几年,如今都出嫁了,过年也一个电话没有啊,如果海振是北京市市长,你看她们电话打的勤不勤。我说,去睡觉吧,我当不了市长的。

[327]-------->底部有张生活照片和昨日花销

【关键词】python、获取会话、会话列表、新建会话

一、chat_serve相关

1.获取会话列表接口

描述:需要写一个获取会话列表的接口,应该是多条。

开工:

第一步:分析原接口

a.找原接口地址

20241210时间段:0931-0940

原接口地址:

http://localhost:9222/v1/conversation/list?dialog_id=34bb8d02b30911ef9c3b0242ac120006

注:接下来,分析下原接口代码。

b.原接口代码分析

20241210时间段:0933-0940

原代码如下:

@manager.route('/list', methods=['GET'])
@login_required
def list_convsersation():
    dialog_id = request.args["dialog_id"]
    try:
        tenant_id = UserTenantService.get_tenant_id(current_user.id)
        if not tenant_id:
            return get_data_error_result(retmsg="Tenant not found!")
        if not DialogService.query(tenant_id=tenant_id, id=dialog_id):
            return get_json_result(
                data=False, retmsg=f'Only owner of dialog authorized for this operation.',
                retcode=RetCode.OPERATING_ERROR)
        convs = ConversationService.query(
            dialog_id=dialog_id,
            order_by=ConversationService.model.create_time,
            reverse=True)
        convs = [d.to_dict() for d in convs]
        return get_json_result(data=convs)
    except Exception as e:
        return server_error_response(e)

注:这个请求是get请求。dialog_id相关于用户id,一个dialog_id对应多个conversation_id.输入dialog_id,返回多个conversation_id,组成一个列表。

有用的就是如下几行:

convs = ConversationService.query(
            dialog_id=dialog_id,
            order_by=ConversationService.model.create_time,
            reverse=True)

注:拿过来运行一下。

第二步:写会话列表接口

a.写接口

20241210时间段:1018-1020

写接口如下:

@router.get('/list_convsersation')
async def list_convsersation(dialog_id:str):
    try:
        # tenant_id = UserTenantService.get_tenant_id(current_user.id)
        # if not tenant_id:
        #     return get_data_error_result(retmsg="Tenant not found!")
        # if not DialogService.query(tenant_id=tenant_id, id=dialog_id):
        #     return get_json_result(
        #         data=False, retmsg=f'Only owner of dialog authorized for this operation.',
        #         retcode=RetCode.OPERATING_ERROR)
        convs = ConversationService.query(
            dialog_id=dialog_id,
            order_by=ConversationService.model.create_time,
            reverse=True)
        convs = [d.to_dict() for d in convs]
        return ok(convs)
    except Exception as e:

运行效果如下:

图6a-1

注:从结果来看,message/reference不需要,去掉。

b.去掉message/reference

20241210时间段:1020-1040

分析:这个要从查询时去掉,不获取这两个字段。

实现不了的话,就把结果进行循环,去掉这两个字段。

最终采用的方法是输出后处理,修改代码如下:

图6a-2

注:可能查询时也可以限制,但没找到合适的方法,先这样,实现再说,后期再管查询的效率。

c.代码上线

20241210时间段:1041-1100

代码上线没有问题,接下来,写下接口文档。

对入参进行优化,修改程序如下:

图6a-3

注:做了两点优化,一是dialog_id不传的话,默认为空,二是为空的话,会报错,提示:dialog_id是必传字段。另外还对dialog_id的长度进行了限制,最大100字节。接下来,就是新建会话了。

2.新建会话接口

描述:就像用大模型查询一样,可以在会话列表选一个继续问,也可以新建会话,重新开始问。截图如下:

图6a-4

开工:

第一步:分析原接口

a.找原接口地址

20241210时间段:1101-1120

原接口地址:

http://localhost:9222/v1/conversation/set

这个是post传输,参数如下:

图6a-5

注:这下dialog_id,name是必传的,一个是在哪个用户下创建,一个是创建新会话的名字。接下来,看下原来的代码。

b.参考原代码

20241210时间段:1114-1120

原代码如下:


@manager.route('/set', methods=['POST'])
@login_required
def set_conversation():
    req = request.json
    conv_id = req.get("conversation_id")
    if conv_id:
        del req["conversation_id"]
        try:
            if not ConversationService.update_by_id(conv_id, req):
                return get_data_error_result(retmsg="Conversation not found!")
            e, conv = ConversationService.get_by_id(conv_id)
            if not e:
                return get_data_error_result(
                    retmsg="Fail to update a conversation!")
            conv = conv.to_dict()
            return get_json_result(data=conv)
        except Exception as e:
            return server_error_response(e)

    try:
        e, dia = DialogService.get_by_id(req["dialog_id"])
        if not e:
            return get_data_error_result(retmsg="Dialog not found")
        conv = {
            "id": get_uuid(),
            "dialog_id": req["dialog_id"],
            "name": req.get("name", "New conversation"),
            "message": [{"role": "assistant", "content": dia.prompt_config["prologue"]}]
        }
        ConversationService.save(**conv)
        e, conv = ConversationService.get_by_id(conv["id"])
        if not e:
            return get_data_error_result(retmsg="Fail to new a conversation!")
        conv = conv.to_dict()
        return get_json_result(data=conv)
    except Exception as e:
        return server_error_response(e)

注:如果会话id存在,就查一下,删除,紧接着就建立,并返回默认提示语,比如:我是机器人,有什么需要帮助。

比着写一下。

c.写新接口

20241210时间段:1516-1540

写新接口如下:

图6a-6

注:这个程序运行报错,处理一下。报错如下:

图6a-7

注:追踪下看看。修改如下:

图6a-8

注:上述截图【图6a-7】用到了get_data_error_result,这个是flask的东西,去掉就可以。以上是更新会话,接下来,是新建会话。

d.新建会话

20241210时间段:1558-1620

其实还是这个接口,新建会话时,不要传conversation_id就可以了。修改程序如下:

图6a-9

注:现在保存报错,原因如下:

REPLACE INTO `conversation` (`id`, `create_time`, `create_date`, `update_time`, `update_date`, `dialog_id`, `name`, `message`, `reference`) VALUES ('c7f1fe4fb6d611efa2f3f020ff63f4c4', 1733821906600, 2024-12-10 17:11:46, 1733821906600, 2024-12-10 17:11:46, '34bb8d02b30911ef9c3b0242ac120006', '狗狗呕吐qhz1600', '[{"role": "assistant", "content": "\u4f60\u597d\uff01 \u6211\u662f\u4e13\u4e1a\u5ba0\u7269\u533b\u751f\uff0c\u6709\u4ec0\u4e48\u53ef\u4ee5\u5e2e\u5230\u4f60\u7684\u5417\uff1f"}]', [])  

注:原因是日期【2024-12-10 17:11:46】没加单引号,reference【[]】,没加单引号,需要处理一下。

处理reference如下:

图6a-10

注:这样处理一下reference,就可以了,发现日期之类的不用处理,也能插入成功,内部可能做了某种处理。

第二步:代码上线

代码上线并测试,结果还可以。写下文档。

二、生活照片

拍摄于‎2025‎年‎7‎月‎6‎日,‏‎20:00:26,带二宝出去玩拍的,当时,二宝两岁九个月。其实,怎么说呢,家家有本难念的经,老爸觉得表哥小的时候,姑身体不好,帮助他家干了不少活,应该经常问候,平常忙,最起码过年应该打个电话。但表哥一个人养四个孩子,表嫂子在家带孩子,表哥一个人在农村给别人拉沙子水泥挣点运输费养六口人,四个孩子都上学,吃喝学费都是不小的开支,一年忙到头,饥荒估计也还不完,哪还有意思给这个拜年,那个拜年呢。再说我妈帮一个叔带三四个孩子的事,叔生三个女儿,婶为了让叔有个儿子,在长期生病的情况下高危产子,结果要了性命,叔当时哭的不行,老爸看不过去,让老妈做饭,请叔一家几口去吃,日久天长,几个堂妹堂弟像认了门一样,天天来,老妈无形中担起了抚养责任,由于叔和老爸是一个爷的亲堂兄弟,也不好说啥,直到堂妹们一个个出嫁,堂弟毕业去打工,老妈来了北京才终止,但由于堂弟内向,二十五六了还没结婚,前年见叔都白头了,哪有心思打电话说感谢我妈的话。这些事,没法说,我的观点是付出时别想着回报,如果报着将来必须有回报的目的,最好起初就不要帮人家,免得得不到回报而伤心。

图6b-1

三、昨日花销

昨日花销截图如下:

图6c-1

《本文完》

最新文章

随机文章