import json from dify_api import Dify EMAIL = "38205036@qq.com" PW = "Difyai123456" PROVIDER = "langgenius/openai/openai" MODEL = "qwen3.6-27b" NEW_CTX = 64000 # 不要在这里加 max_tokens;max_tokens 是 parameter_rule,不是 model_properties。 # Dify API 端 ModelPropertyKey 枚举不含 MAX_TOKENS,写进去会触发 schema 校验失败。 d = Dify(EMAIL, PW) ok, resp, csrf = d.login() print("LOGIN ok=%s" % ok) if not ok: d.close(); raise SystemExit("login failed") # 1) GET current credential (decrypted) + credential_id r = d.get("/workspaces/current/model-providers/%s/models/credentials?model_type=llm&model=%s" % (PROVIDER, MODEL)) js = r["json"] or {} print("GET cred HTTP", r["code"]) cur_cred = js.get("credentials") or {} cid = js.get("current_credential_id") print("current_credential_id:", cid) print("existing model_properties:", cur_cred.get("model_properties")) # 2) inject/overwrite model_properties (只保留 context_size) cred = dict(cur_cred) cred["model_properties"] = { "context_size": NEW_CTX, } name = js.get("current_credential_name") or "Qwen3.6-27b" # 3) PUT update r = d.req("PUT", "/workspaces/current/model-providers/%s/models/credentials" % PROVIDER, body={ "model": MODEL, "model_type": "llm", "credential_id": cid, "credentials": cred, "name": name, }) print("\nPUT cred HTTP", r["code"], r["text"][:200]) # 4) verify schema context_size via model list import time; time.sleep(2) r = d.get("/workspaces/current/models/model-types/llm") js = r["json"] or {} for p in js.get("data", []): if p.get("provider") == PROVIDER: for m in p.get("models", []): if m.get("model") == MODEL: mp = m.get("model_properties") or {} print("\nVERIFY model=%s status=%s mode=%s context_size=%s" % (m.get("model"), m.get("status"), mp.get("mode"), mp.get("context_size"))) d.close() print("\nALIGN_DONE")