当前位置:首页>python>2python之tenant_llm更新及zero2报109处理

2python之tenant_llm更新及zero2报109处理

  • 2026-10-11 05:53:11
2python之tenant_llm更新及zero2报109处理

写在前面的话

金钱的诱惑。之前头条推广,联系上了小学女同学。她和老公在北京做建材生意,现在她主要负责在家里带两个孩子,大的初三,小的快上幼儿园啦。我说:我现在做头条运营,你可以把号挂我这,每天几块零花钱。她问这问那,担心自己被骗,担心卡里的钱被转走。我说:没事,安全的很,你也可以介绍别人来我这挂号,你当团长,对每个号抽成。她说:我天天忙的要死,家里鸡飞狗跳,我哪有时间给你拉人啊,在北京我也不认识别人啊。这件事我把她拉进群,就放下了。后面我推出推荐上号给15块钱,再加上数据也可以。同学先是联系我上号,之后,又卡卡推了七八个人,推荐奖励就挣了一百多。我想:看来金钱的诱惑还是挺大的,之前的借口全不存在啦。

[184+100]-------->底部有张生活照片(头条号运营:大家想全托管上号的联系我哦,每天让你得个早餐钱,微信号: qhz_toutiao)

【关键词】python、ragflow、tenant_llm更新、109处理

一、tenant_llm更新(三级)

描述:现在需要更新tenant_llm,老失败处理一下。

开工:

第一步:原因(四级)

20250526周一时间段:09:51-11:00

底层函数错误,修改如下:

    @classmethod
    @DB.connection_context()
    def insert(cls, **kwargs):
        if "id" not in kwargs:
            kwargs["id"] = get_uuid()
        kwargs["create_time"] = current_timestamp()
        kwargs["create_date"] = datetime_format(datetime.now())
        kwargs["update_time"] = current_timestamp()
        kwargs["update_date"] = datetime_format(datetime.now())
        sample_obj = cls.model(**kwargs).save(force_insert=True)
        return sample_obj

修改为:

    @classmethod
    @DB.connection_context()
    def insert2(cls, **kwargs):
        kwargs["create_time"] = current_timestamp()
        kwargs["create_date"] = datetime_format(datetime.now())
        kwargs["update_time"] = current_timestamp()
        kwargs["update_date"] = datetime_format(datetime.now())
        sample_obj = cls.model(**kwargs).save(force_insert=True)
        return sample_obj    

注:这个是自己加的 kwargs["id"],昨天找了半天。修改后测试下,结果还可以。

第二步:测试

测试没问题

二、zero2报109处理(三级)

描述:现在需要zero2正式服上,用户扫码登录,报109错误,需要处理一下。

开工:

第一步:原因(四级)

20250526周一时间段:11:29-13:00

注册没成功,需要把昨天改那一套注册逻辑干过去。

第二步:部分更新(四级)

20250526周一时间段:11:29-13:00

先在数据库里加点数据试试,不行,再更新部分代码。

{
'open_id': '61ae544b8559734250fcd3435930c670',
'token': '61ae544b8559734250fcd3435930c670:::ac8b0af0268a35aaf85accf711dab686'
}

注:把数据库里的注册删除,重新注册就可以了。接下来,看搜索问题。

三、搜索问题(三级)

描述:现在zero4上搜索有问题,需要看一下。截图如下:

图2c-1

开工:

第一步:看接口(四级)

20250526周一时间段:13:42-15:00

看下调的哪个接口,本地测一下。

调的接口及参数如下:

图2c-2

注:接下来,本地写个测试用例测一下。

第二步:本地测试(四级)

20250526周一时间段:13:48-15:00

测试用例如下:

def test_conversation_ask(client):
    log.info("test_conversation_ask")
    '''
    测试web页面搜索
    '''
    json_data = {
        "kb_ids": [
            "bf5b0a6eff1211ef94e1acde48001122"
        ],
        "question": "55"
    }

    url = f"/v1/conversation/ask"
    resp = client.post(
        url,
        json=json_data,
        headers={
            "Content-type": "application/json",
            "Authorization": "Bearer ragflow-UxOGYzZjUwYjMwOTExZWZiODc0MDI0Mm"
        }
    )
    if not 200 <= resp.status_code < 300:
        raise Exception(f"GET {url} status_code {resp.status_code}.")

    # received_data = []
    for chunk in resp.iter_encoded():
        answer = chunk.decode('utf-8').strip()
        log.info(f"\n\n answer: {answer} \n\n")   

运行下,看看效果,效果如下:

图2c-4

注:这个提到集群不健康,而集群不健康,需要配置一个项目是用集群还是用单集点,而访问配置接口,发现返回的字段不全。所以,接下来,先解决配置接口返回字段不全的问题。

现在这个问题不报了,而是报模型问题,错误如下:

2025-05-27 11:22:40.707 | INFO | es_conn.py:__init__:45 - Connecting_qhz to Elasticsearch http://es-alone:9200...
2025-05-27 11:22:40.889 | INFO | llm_service.py:get_api_key:54 - tenant_id: a9904fbcb2e711efb3e5f020ff63f4c4
2025-05-27 11:22:40.895 | WARNING | llm_service.py:model_instance:143 - NOT FOUND model_config with tenant_id='a9904fbcb2e711efb3e5f020ff63f4c4',mdlnm='cabelo/clinical-br-mistral-7b-0.2:latest',fid='Ollama'
2025-05-27 11:22:40.899 | INFO | test_conversation_app.py:test_conversation_ask:184 - 

 answer: data:{"retcode": 500, "message": "Model(cabelo/clinical-br-mistral-7b-0.2:latest) not authorized", "data": {"answer": "**ERROR**: Model(cabelo/clinical-br-mistral-7b-0.2:latest) not authorized", "reference": []}} 


2025-05-27 11:22:40.899 | INFO | test_conversation_app.py:test_conversation_ask:184 - 

 answer: data:{"retcode": 0, "message": "", "data": true} 

四、配置接口(三级)

描述:现在配置接口返回字段不全,需要处理一下。

开工:

第一步:配置接口(四级)

20250506周一时间段:19:07-21:00

现在配置接口返回字段如下:

图2d-1

注:接下来,跑测试用例,看看哪里的问题。

第二步:测试用例(四级)

20250506周一时间段:19:09-21:00

测试用例如下:

def test_user_config(client):

    # 1. 登录并获取 session_cookie 和 authorization
    login_resp = client.post('/v1/user/login', 
        headers={"Content-type": "application/json"},
        json={
            "email": "oi87O6xKvGO_LwalOFaXmJ8Yswi8@qq.com",
            "password": "IzTOtCTI+Qh2l5fp5Web+9EVNNHCNTZ7cCIh8u7JosTPJSkhM3072NxW68un4X62ehuxdFfVx3zUx2H/xq38zIY4rTe3FnFkYOMI8pnoAb/nI8MxezuDaK/i6kluNcdNcvPL9DrR8p+akPvrDrsa6vD9x9y8Sdn++LrMweBspCegCM00T6zzQAxm9nfG7Rd7kezhC+Dx5CUjv2xrBT3pR30XW1bsTYN8sx7nsKfeRC4MoT5sbLJnyAymFcl3HB/6Lg+fFYR5WgqWIlsqvLaHLNbeV6W6QwR8Ex+041gzD2N+yH2HU4b774ie9FgpcjB24wvSKN2H+qDWxIXu3qquRg=="
        }
    )
    log.info(f"login_resp.text:{login_resp.text}")

    # 获取 Set-Cookie(服务器返回的 Cookie)
    set_cookie_header = login_resp.headers.get('Set-Cookie')
    print(f"Set-Cookie: {set_cookie_header}")  # 例如: "session=xxx; HttpOnly; Path=/"

    # 提取纯 Cookie 值(去掉 "; HttpOnly; Path=/" 等部分)
    session_cookie = set_cookie_header.split(';')[0] if set_cookie_header else None
    print(f"Pure session cookie===========================================================: {session_cookie}")  # 例如: "session=xxx"

    # 获取 Authorization
    authorization = login_resp.headers.get('Authorization')
    print(f"Authorization=================================================================: {authorization}")

    #
#2.调用接口
    response = client.post("/v1/user/user_config",
            headers={
                "Cookie": session_cookie,          # 携带 session cookie
                "Authorization": authorization,    # 携带 JWT(如果有)
            })
    assert response.status_code == 200
    # json =  response.json()
    #assert json['code'] == 0
    print(f"response:{response}")   
    # print(f"response.data:{response.data}")   
    json =  response.json
    print(f"json:{json}")
    # assert json['code'] == 0

注:运行结果如下:

json:{'code': 0, 'data': {'app_name': 'PetDoctor', 'login_description': '顶级 RAG 技术,利用顶级AI来创建宠物大模型', 'welcome': '我是您的专业宠物医生,很高兴为您解答问题'}, 'message': 'success'}

注:我知道了,应该是我把获取公共租户的逻辑删除导致的。看下代码。

第三步:看代码(四级)

20250506周一时间段:19:19-21:00

这个我知道原因了,如下:

图2d-2

注:这个是因为没设默认值,龙哥说不需要设默认值,而网址是local_host,拿不到是正常的。接下来,配置es。

五、配置ES(三级)

描述:需要配置下es,看访问时走单节点,还是集群。

开工:

第一步:配置(四级)

20250506周一时间段:19:27-21:00

配置下Es,如下:

tenants:
  - domain: "test_pet.bitzero.cn"
    tenant_name: "ragflow‘s Kingdom"
    welcome : "我是您的宠粮助手,很高兴为您服务"
    background_image: "/static/login-background.117236ea.webp"
    logo: "/static/logos1.76a7cb8a.png"
    is_use_single_es: 1  ##  是否使用单节点es
    is_open_pet_archives: 1  ## 是否开启宠物档案

注:增加了两项配置,一是集群的,二是宠物档案的。接下来,看下怎么使用。

第二步:使用单节点配置(四级)

20250506周一时间段:19:37-21:00

先找到集群不健康的地方,如下:

图2e-1

注:龙哥说这个走系统配置,也就是这里,关键是这里环境变量认吗,应该是认的,测一下。

先设环境变量:

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


192.168.31.110 zero1
192.168.31.111 zero2
192.168.31.95 zero3
192.168.31.236 zero4


192.168.31.236 es01 mysql minio redis es-alone
192.168.31.110 ollama
192.168.31.236 neo4j

注:就是说把es-alone定位到zero4,看下访问有没有问题。

第三步:访问(四级)

20250527周二时间段:11:16-13:00

访问效果现在还看不了,应该是可以了,接下来就是处理搜索遇到的问题。

六、头条战果汇报

昨日数据来啦,昨日总收入:1240.5,昨日总播放:1226.6万,软件截图如下:

图2f-1

注:想要全脱管运营头条号的联系我,你出账号,我来运营,保你天天有钱花,咨询电话: 17701328814(微信同号),也可以加群先了解一下。

图2f-2

注:个人微信如下,欢迎骚扰。

图2f-3

七、生活照片

拍摄于‎2025‎年‎7‎月‎6‎日,‏‎20:12:37,带二宝去中关村1号玩拍的,小家伙好可爱,但我没太多时间陪他,也是遗憾。其实,之前很多事做不成,现在复盘一下,觉得自己好幼稚。就像开始做头条推广时,和一个在一起工作三四年的同事,聊了三个多小时,手机发烫到没电,各种技巧展示,想让他上号或者帮忙拉别人上号,但最后同事婉拒了。后来我还自责自己可能哪里说的不到位,现在想想,首先刚开始推,同事不相信能挣到钱,其次,他帮我拉人,能得到什么好处。我一味的说我俩关系多好多好,我的人品多棒多棒,没啥用,需要做的是:让他看到我挣钱,其次,想让他拉人,直接标价,说拉一个人给你15块、20块。这两项达成了,不用催他就去做了。现在这社会,想做成事,就得谈钱,用钱去诱惑,是最好的药方。

图2g-1

《本文完》

最新文章

随机文章