放平心态。最近,头条运营收益不太理想,做事有点懈怠。尤其,今天一位阿姨掉号了,联系上号时,各种不会,我说:阿姨,你这是第三次掉号了,不能说你每次掉号我都得教一遍吧。阿姨越发紧张,说:不好意思,阿姨年纪大了,老记不住,不怕你笑话,每次你教完我,我都记本上,但老是对不上,给你添麻烦了,老了不中用了。我突然觉得有点心疼,如果我妈在外面被别人说,我肯定会血充进脑子,找人拼命的。我赶紧笑着说,没事阿姨,您知道吗,很多比你年轻的,上十来次号了,还是每次都问,不知怎么扫码,您表现算是比较优秀的呢,刚才我说话语气不对,阿姨千万别放在心上,对不起了,阿姨。最终,阿姨再一次的掉线上号成功,耗费我将近半个小时。后面想想,我要放平心态,如果一个搓澡工嫌客户身体脏,一个牙医嫌客人口臭,那肯定不是客人的问题呀。
[138+200]-------->底部有张生活照片(头条号运营:大家想全托管上号的联系我哦,每天让你得个地铁钱,微信号: qhz_toutiao)
关键词:python、ragflow、数据库表、配置文件
描述:需要把库表中的配置数据,加到conf中,选择的时机,接口user/user_config。
开工:
20250703周四时间段:15:41-16:00接口程序如下:
@manager.route("/user_config", methods=["POST","GET","OPTIONS"])
# @login_required
def get_user_config():
domain = get_domain(request)
#兼容 test* 和 api.* 情况,使用 end_with 而不是 ==
res_tenant = next((t for t in conf.tenants if domain.endswith(t.domain)), {})
# log.info(f"{request.headers=},{res_tenant=}")
# 合并系统配置和租户配置,合并的时候同时合并子节点
# 如果没有匹配到任何 res_tetant,那么使用默认app的配置。
user_config = {
t:deep_merge(dict(conf.get(t,{})),
dict(res_tenant.get(t,{})))
for t in ['app','llm','dialog']
}
log.info(f"{user_config=}")
return get_json_result(data=user_config)
写个测试用例,跑一下这个程序。
20250703周四时间段:16:03-18:00测试用例如下:
###获取用户配置信息
def test_user_config(client,login_header):
##1.调用接口
response = client.post("/v1/user/user_config",
headers={
**login_header
})
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
注:跑一下,看看效果,效果如下:

图6a-1
注:接下来,看下为啥没展示测试的配置,而是展示的一体机配置。
20250703周四时间段:16:32-18:00发现,展示不了测试的配置,因为这个测试用例没有域名,所以,找不到测试配置,只能用默认的。
截图如下:

图6a-2
注:接着看到conf.tenants怎么加载的,替换下该怎么改。
修改了程序,把租户配置去掉了,运行还能拿到,神奇了,原因是去掉租户信息是改的备份函数,不是正在运行的函数。
再次运行,看看效果,发现conf.tenants确实是空的,接下来,是空的情况下,怎么获取这个conf.tenants。
20250703周四时间段:18:44-20:00写个获取方法,如下:
@classmethod
@DB.connection_context()
def get_big_tenants_list(cls):
"""
获取大租户列表
"""
fields = [
cls.model.id.alias("tenant_id"),
cls.model.name.alias("tenant_name"),
cls.model.domain,
cls.model.app,
cls.model.llm,
cls.model.kb,
cls.model.dialog,
cls.model.use_kb
]
return list(cls.model.select(*fields)
.where(cls.model.is_big_tenant == 1).dicts())
注:引入看下效果,效果如下:

图6a-3
注:接上来,上测试服看看效果。效果如下:

图6a-4
注:没有走基础问询,是不对的,需要排查下。
20250703周四时间段:22:58-00:00跑一个测试用例,发现需要改程序,修改如下:

图6a-5
注:加了个获取租户信息配置信息的程序,运行,效果如下:
answer: data:{"retcode": 0, "retmsg": "", "data": {"answer": "\n**ERROR**: Error code: 400 - {'error': {'code': 'MissingParameter', 'message': 'The request failed because it is missing `messages.content` parameter. Request id: 021751557437353d4bf348bc0d6c878e089015bd6eda6fb649d7a', 'param': 'messages.content', 'type': 'BadRequest'}}"}}
注:接下来,处理下这个报错。
20250703周四时间段:23:48-00:00排查下为啥会出现这个问题,打日志打了一圈,没找到原因,查下是不是欠费了。
这个先暂停,现在线上报错了。需要处理一下。
20250703周四时间段:16:16-17:00截图如下:

图6a-6
注:看下为啥没走,跑测试用例,打断点看看。
可能还是数据库的配置文件的问题,没有写入到conf中。
描述:现在线上问一个问题,停住了,需要处理一下。
开工:
20250703周四时间段:17:49-18:00测试用例如下:
def test_multi_chat(client,login_header):
log.info("test_multi_chat0034")
'''
测试多轮对话-包括三轮对话场景====加入了模拟登录
'''
########调用接口
json_data = {
"conversation_id": '605f2736370511f0bf8e75026f04980c',
"question": '我家狗拉肚子',
}
###测试专家诊断
json_data = {
"conversation_id": 'd34e3194fe3c11ef9d070242ac120006',
"question": '结束基础问询,请直接给出结果',
}
###测试专家诊断
json_data = {
"conversation_id": 'd34e3194fe3c11ef9d070242ac120006',
"question": 'Ok, how to calculate the VHS ratio?',
}
##### 调用多轮对话接口
url = "/v1/conversation/multi_chat"
resp = client.post(
url,
json=json_data,
headers={
**login_header
}
)
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")
注:运行一下,看看效果,还是卡住,原因是少个else,修改程序如下:

图6b-1
注:这样改了之后,应该就有了。
20250704周五时间段:10:24-11:00报错说max_tokens太大了,应该是没获取到配置中的8000,处理一下,修改程序如下:

图6b-2
注:运行效果如下:

图6b-3
注:还可以,接下来,遇到个小问题,就是is_base_query传参不对,需要处理一下。
20250704周五时间段:11:19-13:00接收到的参数应该是true,实际上接收到的是question_finish,追踪下原因。

图6b-4
注:是因为传参错误导致的,先这样,上线,全流程测一下。
20250704周五时间段:11:38-13:00测试没有问题,接下来,搞一下测试服的问题,处理完之后,再搞一下文件引用问题。
昨日数据来啦,昨日总收入:605.10块,昨日总播放:367.57万次,软件截图如下:

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

图6c-2
注:个人微信如下,欢迎骚扰。

图6c-3
拍摄于2025年6月1日,13:15:48,带二宝在门口玩水气球,当时二宝两岁八个月。其实,为什么有句话是:干一行爱一行,实际上每个人对自己干的工作,很多都是厌恶的,所以,要提倡既然干了,就爱吧。我们老家有一种说法是:卖啥不吃啥,比如卖猪肉的,不喜欢吃猪肉,卖羊肉的很少吃羊肉,因为吃的多了,闻的多了,就腻了。之前,我看视频,感觉一个人驾车或者骑车甚至徒步去西藏,不可接受,我觉得这不是浪费生命吗,现在我的想法改变了,可能人家干一个工作几十年,太厌恶了,徒步去西藏,换换口味,陶冶一下情操,这是多好的事啊。也许我哪一天,突然放下所有工作,骑摩托车去西藏了,谁知道呢?

图6d-1
《本文完》