#!/usr/bin/env python3 # -*- coding: utf-8 -*- """专题十三 · 步骤 1:确认现状(Rerank 开启前的基线)。""" from __future__ import annotations import json import sys import _bootstrap # noqa: F401 import _config as C from dify_api import Dify, pp def main() -> int: print("=== 1/4 Xinference 容器与内存(在 207 上 ssh 执行 docker 命令)===") d = Dify(C.DIFY_EMAIL, C.DIFY_PASSWORD) try: for cmd in [ "docker ps --filter name=%s --format '{{.Names}} {{.Status}} {{.Ports}}'" % C.XF_CONTAINER, "docker stats %s --no-stream --format '{{.MemUsage}} CPU={{.CPUPerc}}'" % C.XF_CONTAINER, "free -h", ]: out, err = d.sh(cmd) print(out or err) print("\n=== 2/4 Xinference 已加载模型(应只有 bge-m3 embedding)===") out, err = d.sh( "curl -s -H 'Authorization: Bearer %s' %s/v1/models" % (C.XF_KEY, C.XF_URL) ) print(out or err) try: models = json.loads(out) for m in models.get("data", models if isinstance(models, list) else []): if isinstance(m, dict): print(" -", m.get("id"), m.get("model_type"), m.get("accelerators")) except Exception: pass print("\n=== 3/4 登录 Dify,读知识库 retrieval_model ===") ok, _, csrf = d.login() print("login ok:", ok, "csrf:", bool(csrf)) r = d.get("/datasets/%s" % C.DS_ID) pp("dataset retrieval_model_dict", r) retr = (r.get("json") or {}).get("retrieval_model_dict") or {} if retr.get("reranking_enable"): print("[WARN] 知识库已开 Rerank,不是「修改前」基线") print("\n=== 4/4 Agent 快照 knowledge.sets[0].retrieval + rerank 模型列表 ===") sql = ( "docker exec docker-db_postgres-1 psql -U postgres -d dify -t -A -c " "\"SELECT config_snapshot::jsonb -> 'knowledge' -> 'sets' -> 0 -> 'retrieval' " "FROM agent_config_snapshots WHERE id='%s';\"" % C.SNAP_ID ) out, err = d.sh(sql) print("agent retrieval:", out.strip() or err) r2 = d.get("/workspaces/current/models/model-types/rerank") pp("model-types/rerank(期望 data 为空)", r2) return 0 finally: d.close() if __name__ == "__main__": sys.exit(main())