当前位置:首页>python>1python之web端跳转问题及重构分科

1python之web端跳转问题及重构分科

  • 2026-10-11 08:24:11
1python之web端跳转问题及重构分科

写在前面的话

无心插柳。昨天,该睡觉了,刷朋友圈,看到一位之前卖题的网友,发了一条朋友圈图文,贴了一个加群的二维码,大意是:加群找他往数据库录入题有优惠,这是个很简单的需求,往数据库录题,入门级程序员都会。这不是我观注的点,我关注的是:我是不是也可以向他学习,把头条运营群的二维码以朋友圈的形式发出去,就像戏文:庄稼活,不用学,人家咋着咱咋着。于是我也发了条朋友圈,贴了今日头条的码,就洗洗准备睡了。由于我发时,已经晚上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

《本文完》

最新文章

随机文章