多思考。今天给一位大姐上号,也可能是妹妹。因为现在上号者,不知年龄性别。之前,叫了两个月哥的上号者,后面说,我有个姐妹要上号。我说不好意思,姐,以为你是男士。她说:头像是老公和孩子,我今年26岁。我说我今年40,以后喊你妹妹。今天这位女士上完号,怎么也找不到创作中心。我在开会她给我打了七八个视频,后面她说,不上了,你是不是限制我号了,我这没有创作中心,我朋友就有创作中心。开完会,我耐心地给她说:其实,你自己就发现问题了,你朋友有,你没有,会不会是你手机问题呢。我引导她在她朋友的手机上登了一下头条,立马找到了创作中心。遇事要多思考,不要急躁,现在有AI,每个人都差不多,一味的求别人只能耽误时间。
[183+100]-------->底部有张生活照片(头条号运营:大家想全托管上号的联系我哦,每天让你得个地铁钱,微信号: qhz_toutiao)
【关键词】python、ragflow、知识库、用户模型
描述:现在web端知识库搜索报错,需要处理一下。
开工:
20250527周二时间段:11:37-13:00现在报错,截图如下:

图3a-1
注:打断点看下。
20250527周二时间段:11:40-13:00把243127387@qq.com的数据库表tenant_llm中的数据,更新了一下,再次运行,效果如下:

图3a-2
注:改了之后,发现可以了,就是说报错的原因是模型配置的不正确,接下来,要做一件事,就是写个脚本,把用户配置不正确的给它修复一下,不传参就都修复一下,传参就针对传参用户进行修复。
描述:写一个修复脚本,就是把模型等和公共租户不一致的,更新成一致。
开工:
20250527周二时间段:14:36-15:00写执行脚本,不要写成接口,看下之前那个同步es数据的脚本是怎么写的,可以参考下。
找到了,在这个文件夹下,截图如下:

图3b-1
注:接下来,做一个事,看下怎么连接mysql的。
20250527周二时间段:15:52-17:00打断点,找下怎么连接mysql的,登录注册那个接口就可以。
测试用例如下:
def test_register_login(client):
"""
测试扫码注册登录接口
"""
json_param = {
"open_id": "oi87O6xKvGO_LwalOFaXmJ8Yswi8",
"token": "oi87O6xKvGO_LwalOFaXmJ8Yswi8:::0988e07b422ce3ec6a2a662c4698ea6e"
}
# json_param = {
# "open_id": "4a34e72fed1eade2db571dc5d5501807",
# "token": "4a34e72fed1eade2db571dc5d5501807:::31698706deaf678922b8cd7bf765feca"
# }
response = client.post("/v1/user/register_login",
headers = {
"Content-type": "application/json"
},
json=json_param)
print(f"response:{response}")
assert response.status_code == 200
res_json = response.json
print(f"res_json:{res_json}")
# assert res_json['code'] == 0
注:运行,找到连接代码如下:

图3b-2
注:断点打到这里就可以,找一下,相关的连接代码如下:
我不需要找原始的连接地方,直接调用相关模型即可,我傻了。也就两张表,一张tenant,一张tenant_llm,这两个。先查tenant表。
20250527周二时间段:16:15-17:00写脚本程序如下:
def migrate_data(common_tenant_id:str,user_id: str ):
"""
根据公共租户id,更新tenant、tenant_llm中的数据
请求:
python rag/svr/update_tenant_svr.py --common-tenant-id 7d19a176807611efb0f80242ac120006 --user-id a9904fbcb2e711efb3e5f020ff63f4c4
"""
log.info(f"开始更新tenant、tenant_llm中的数据")
log.info(f"common_tenant_id: {common_tenant_id}")
log.info(f"user_id: {user_id}")
try:
##查询tenant表中的数据
tenant_list = TenantService.get_all()
log.info(f"tenant_list: {tenant_list}")
return tenant_list
except Exception as e:
log.error(f"全局错误: {str(e)}", exc_info=True)
return jsonify({
"code": 500,
"message": f"Internal error: {str(e)}",
"data": None
}), 500
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--common-tenant-id", type=str,
default=0,
help="公共租户id")
parser.add_argument("--user-id", type=str,
default=0,
help="普通租户id")
args = parser.parse_args()
app = Flask(__name__)
with app.app_context():
migrate_data(args.common_tenant_id, args.user_id) # 传递两个参数
if __name__ == "__main__":
main()
注:运行效果如下:

图3b-3
注:接下来,更新tenant表数据,先删除,后插入。
更新程序如下:
def migrate_data(common_tenant_id:str,tenant_id2: str ):
"""
根据公共租户id,更新tenant、tenant_llm中的数据
请求:
python rag/svr/update_tenant_svr.py --common-tenant-id 7d19a176807611efb0f80242ac120006 --tenant-id2 a9904fbcb2e711efb3e5f020ff63f4c4
"""
log.info(f"开始更新tenant、tenant_llm中的数据")
log.info(f"common_tenant_id: {common_tenant_id}")
log.info(f"tenant_id2: {tenant_id2}")
try:
#1.更新tenant数据
common_tenant_info = TenantService.get_info_by(common_tenant_id)[0]
tenant_data = common_tenant_info
tenant_data['id'] = tenant_id2
fields_to_remove = ["name", "role", "tenant_id"] # 添加tenant_id到删除列表
for field in fields_to_remove:
if field in tenant_data:
del tenant_data[field]
if not TenantService.update_by_id(tenant_id2,tenant_data):
return "Fail to update a new tenant!"
##2.更新tenant_llm数据,先删除,后添加
try:
TenantLLM.delete().where(TenantLLM.tenant_id == tenant_id2).execute()
except Exception as e:
print(f"删除失败: {str(e)}") # 捕获并打印具体错误
##查出common_tenant_id下的tenant_llm数据,并添加到tenant_id2下
tenant_llms = TenantLLMService.filter_scope_list(in_key="tenant_id",in_filters_list=[common_tenant_id],filters=None,cols=None)
for tenant_llm in tenant_llms:
tenant_llm = tenant_llm.to_dict()
tenant_llm["tenant_id"] = tenant_id2
if not TenantLLMService.insert2(**tenant_llm):
return "Fail to add data to tenantllm!"
log.info(f"更新tenant、tenant_llm中的数据成功")
except Exception as e:
log.error(f"全局错误: {str(e)}", exc_info=True)
return jsonify({
"code": 500,
"message": f"Internal error: {str(e)}",
"data": None
}), 500
注:这个测试没有问题,截图如下:

图3b-4
注:接下来,批量修改脚本问题。
20250527周二时间段:18:11-20:00第三步是单个修改,如果批量修改,应该怎么办呢,需要再写个程序。
写批量修改的程序。
描述:图片不解析,两种情况,一是小模型没调,所以不解析。二是小模型没调,又没开启多模态,所以不解析。需要排查一下。
开工:
20250527周二时间段:16:18-17:00把错误复现一下,复现过程中,盯着日志看看情况,如下:

图3c-1
注:这个走的直接诊断,看下里面有没有小模型。
这个龙哥接手解决了,先这样。
def update_tenant_data(common_tenant_id:str,tenant_id2: str ):
"""
根据公共租户id,更新tenant、tenant_llm中的配置数据
请求:
python rag/svr/update_tenant_svr.py --common-tenant-id 7d19a176807611efb0f80242ac120006 --tenant-id2 a9904fbcb2e711efb3e5f020ff63f4c4
"""
log.info(f"开始更新tenant、tenant_llm中的数据")
log.info(f"common_tenant_id: {common_tenant_id}")
log.info(f"tenant_id2: {tenant_id2}")
if common_tenant_id == None :
log.error(f"common_tenant_id cannot be empty!")
return "common_tenant_id cannot be empty!"
if tenant_id2:
log.info(f"开始更新租户{tenant_id2}:tenant、tenant_llm中的数据")
update_single_tenant_data(common_tenant_id,tenant_id2)
else:
log.info(f"开始更新所有租户:tenant、tenant_llm中的数据")
##从tenant表中获取不包括公共租户的租户数据
tenants = Tenant.select(Tenant.id, Tenant.name).where(Tenant.id != common_tenant_id).execute()
for tenant in tenants:
update_single_tenant_data(common_tenant_id,tenant.id)
log.info(f"更新租户======{tenant.id}:tenant、tenant_llm的数据成功")
return "更新所有租户:tenant、tenant_llm中的数据成功"
注:这个兼容了传tenant_id2和不传,传的话就用tenant_id2,只更新一个用户,不传的话,更新除公共用户外的所有用户。
昨日数据来啦,昨日总收入:1274.5,昨日总播放:1116.6万,软件截图如下:

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

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

图3d-3
拍摄于2025年8月3日,18:05:22,带媳妇和二宝去海淀公园玩,当时二宝两岁十个月。其实,做一件事,比如头条运营,第一步:肯定要吸收行业现有经验,多向别人打听,但要做成,一定要自己总结,遇到封号问题,掉号问题,申诉技巧问题,在打听的同时,自己要多想。就拿昨天来说,一个用户的号限流了,说是侵犯别人肖像权,我当时太忙,就让豆包写了个文案,让团长通知团员去申诉,最后,申诉失败。后面我一看,豆包写的文案是:没有侵权,属于系统误判。这不扯淡吗,用了人家的照片,名字,一定是侵权了呀。这时,不应该嘴硬,应该写个认错版,说意识到了错误,下架视频,立马整改,恳请放行。这些问题,需要自己总结与试探,不能一味的相信AI与别人,做事不思考,一定做不好。有人说:我原模原样照搬别人经验,为啥别人成功了,我没成功。因为环境变了,人变了,可以参考别人经验,但在实施过程中一定要动脑子,要不然,99.9%会失败。

图3e-1
《本文完》