写在前面的话
无心插柳。昨天,该睡觉了,刷朋友圈,看到一位之前卖题的网友,发了一条朋友圈图文,贴了一个加群的二维码,大意是:加群找他往数据库录入题有优惠,这是个很简单的需求,往数据库录题,入门级程序员都会。这不是我观注的点,我关注的是:我是不是也可以向他学习,把头条运营群的二维码以朋友圈的形式发出去,就像戏文:庄稼活,不用学,人家咋着咱咋着。于是我也发了条朋友圈,贴了今日头条的码,就洗洗准备睡了。由于我发时,已经晚上11点多,但没过几分钟,就有两三个扫码加群的,这让我很欣喜,因为我正常推广,让别人加群,还要解释半天,别人也不一定理,但发个加群码,自己主动加群,我还挺意外,尤其是有一些我想让他们加群,又不知道怎么说的,他们扫码加了群,挺好的。所以,有些事,还是要多学习,多模仿,说不定有意外之喜,加油!
[241+100]-------底部有张生活照(
我现在做头条号运营:大家想全托管挂号的联系我哦,每天让你得个汉堡包钱,wx: qhz198607





)
【关键词】python、ragflow、跳转问题、重构分科
一、web端跳转问题(一级)
1.问题消失(二级)
描述:现在问一个问题,当回复到来时,把问题顶掉了,看下原因。
开工:
第一步:问题复现(三级)
20250327周四时间段:15:28-16:00
问题复现是这个样子,截图如下:
图1a-1
注:这个有一个操作,更新成功,我觉得是哪里影响的,找一下,在哪里。
第二步:【更新成功】影响(三级)
20250327周四时间段:15:33-16:00
捕捉到了,是683,截图如下:
图1a-2
注:找到相关代码,看都做了啥。找到相关代码如下:
图1a-3
注:这段代码,执行了更新操作,看下都做了啥,能不能不把问题充掉,而是保留。发现它没把问题冲掉,而是把【思考中。。】冲掉了,想办法不让它冲掉【思考中。。】
第三步:不能冲掉【思考中】(三级)
20250327周四时间段:15:57-16:00
20250327周四时间段:16:00-17:00
把这个文件和原版对比一下,看是不是需要修改点东西,对比如下:
图1a-4
注:看了下官网演示版本,发现人家提一个问题,更新后,【思考中】是不丢失的,看下【思考中】在哪里。
关键词在如下的地方:
图1a-5
注:相关的代码如下:
图1a-6
注:对比一下原版和现在的有啥区别,对比如下:
图1a-7
注:改了不少,复原的还有三个,先不管。跑一下看看效果,效果如下:
图1a-8
注:看下这个错误是怎么回事。
第四步:avatarDialog问题(三级)
20250327周四时间段:18:26-19:00
这个应该是哪个文件未引入,看下代码,把代码搞进去就好了,现在还是问题被冲掉。【是
不是接口的问题。这个问题先暂停,前端找到了一个临时解决方案。
二、重构分科(一级)
1.重构分科跑起来(二级)
描述:龙哥给了个例子,把重构分科跑起来,看看遇到什么问题不。
开工:
第一步:跑程序(三级)
20250327周四时间段:22:15-23:00
20250327周四时间段:23:04-00:00
先写个接口,调用一下。看看怎么调用,如下:
图1b-1
注:看下这个类怎么调用,这个类的文字版本如下:
from sentence_transformers import SentenceTransformer
class PetDepartmentClassifier:
def __init__(self):
self.model = SentenceTransformer('all-MiniLM-L6-v2')
self.departments = {...} # 同上
self._precompute_embeddings()
def _precompute_embeddings(self):
self.embeddings = {
dept: self.model.encode(desc, convert_to_tensor=True)
for dept, desc in self.department_descriptions.items()
}
def predict(self, query, top_k=3):
pass
# 实现预测逻辑pass
注:先改成单例模式。
第二步:单例模式(三级)
20250327周四时间段:23:14-00:00
问一下deepseek,如下:
使用类方法实现单例(推荐)
from sentence_transformers import SentenceTransformer
class PetDepartmentClassifier:
_instance = None
def __init__(self):
self.model = SentenceTransformer('all-MiniLM-L6-v2')
self.departments = {...} # 同上
self._precompute_embeddings()
@classmethod
def get_instance(cls):
if cls._instance is None:
cls._instance = cls()
return cls._instance
def _precompute_embeddings(self):
self.embeddings = {
dept: self.model.encode(desc, convert_to_tensor=True)
for dept, desc in self.department_descriptions.items()
}
def predict(self, query, top_k=3):
pass
# 实现预测逻辑pass
使用方法三时,你需要这样获取实例:
classifier = PetDepartmentClassifier.get_instance()
这三种方法都能实现单例模式,推荐使用方法三,因为它更明确地表达了单例的意图,并且避免了直接实例化类可能带来的问题。
注:接下来是怎么调用这个类中的方法。
第三步:调用类方法(三级)
20250327周四时间段:23:26-00:00
20250327周四时间段:00:18-01:00
写个接口,写个测试用例调用下这个类,调用例子如下:
# main.py
from classifier import PetDepartmentClassifier
# 获取单例实例
classifier = PetDepartmentClassifier.get_instance()
# 调用 predict 方法
result = classifier.predict("我的宠物狗生病了", top_k=2)
print(result) # 输出: ["department1", "department2"]
注:比着上述例子,写个接口方法程序如下:
@manager.route('/dispatch_recognize', methods=['POST'])
@validate_request("conversation_id", "question")
def dispatch_recognize():
"""
这个接口主要用于识别用户询问问题的分科室,关键点是本地模型的调用
"""
req = request.json
log.info(f"req: {req}")
question = req.get("question", '')
if not question:
return get_data_error_result(message="question is not found!")
result = classifier.predict("我的宠物狗生病了", top_k=2)
print(result) 注:接下来,写个测试用例,有个原则,能用测试用例的,不用postman。
第四步:测试用例(三级)
20250327周四时间段:23:49-00:00
写测试用例如下:
def test_dispatch_recognize(client):
'''
测试本地模型分科识别
'''
json_data = {
"question": '呕吐内容物是食物,呕吐的动作是剧烈呕吐,每天五次,呕吐只在饭后发生。'
}
url = f"/v1/conversation/dispatch_recognize"
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}.")
print(resp)
注:接下来,运行下这个测试用例,效果如下:
图1b-2
注:这个算是跑通了,接下来,写分科逻辑。
第五步:分科逻辑(三级)
20250328周五时间段:09:47-10:00
写分科逻辑如下:
def _precompute_embeddings(self):
# 为每个科室生成描述语句
self.department_descriptions = {
dept: f"宠物{dept}相关问题,包括但不限于:{', '.join(symptoms)}"
for dept, symptoms in self.departments.items()
}
# 预先计算所有科室描述的嵌入向量(保持为2D张量)
self.department_embeddings = {
dept: self.model.encode(desc, convert_to_tensor=True).unsqueeze(0)
for dept, desc in self.department_descriptions.items()
}
注:运行看效果,把相关问题处理一下。
三、头条号战果汇报
昨日总播放529.6万,总收入191.8块,累计收入:3622.57块,可提现1578.38块,软件截图如下:
图1c-1
注:想要全脱管运营头条号的联系我,你出账号,我来运营,收益四六分成(你六我四),你当甩手掌柜,每天都能得几块零花钱,财富wx: 17701328814
四、生活照片
拍摄于2026年4月6日,10:10:15,给二宝在家里拍的,哥哥惹他了,小家伙有点不开心,当时二宝三岁六个月。其实,活到老,学到老并不是一句空话,我现在满脑子都是头条号运营的事,但不怎么懂运营之道,也不怎么会与人打交道,程序员和机器打交道还行,和活生生的人打交道,总有各种心理障碍,但现在需要推广,需要自己运营,怎么办,学呗,先以自己知道的方式做推广,在推广中改进方法,进行学习,慢慢的就好了,谁一出生也不是啥都会。做一个事,关键是需要迈出第一步,如果顾前顾后,那趁早别干了。所以,要大胆干,细心学,变OK了。
图1d-1
《本文完》