f36e2104d8
sep-tests / ragflow_preflight (push) Waiting to run
sep-tests / ragflow_tests_infinity (push) Blocked by required conditions
sep-tests / ragflow_tests_elasticsearch (push) Blocked by required conditions
tests / ragflow_preflight (push) Waiting to run
tests / ragflow_tests_infinity (push) Blocked by required conditions
tests / ragflow_tests_elasticsearch (push) Blocked by required conditions
80 lines
3.5 KiB
Python
80 lines
3.5 KiB
Python
#
|
|
# Copyright 2026 The InfiniFlow Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
import json
|
|
import importlib.util
|
|
from pathlib import Path
|
|
|
|
|
|
def _load_template_utils():
|
|
repo_root = Path(__file__).resolve().parents[1]
|
|
module_path = repo_root / "api" / "db" / "template_utils.py"
|
|
spec = importlib.util.spec_from_file_location("template_utils", module_path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def _load_cajal_template():
|
|
repo_root = Path(__file__).resolve().parents[1]
|
|
template_path = repo_root / "agent" / "templates" / "cajal_scientific_paper_agent.json"
|
|
with template_path.open(encoding="utf-8") as template_file:
|
|
return _load_template_utils().normalize_canvas_template_categories(json.load(template_file))
|
|
|
|
|
|
def test_cajal_template_exposes_local_ollama_model_and_agent_categories():
|
|
template = _load_cajal_template()
|
|
|
|
assert template["id"] == "41"
|
|
assert template["title"]["en"] == "CAJAL scientific paper agent"
|
|
assert template["canvas_type"] == "Agent"
|
|
assert template["canvas_types"] == ["Agent", "Recommended"]
|
|
|
|
agent_params = template["dsl"]["components"]["Agent:NewPumasLick"]["obj"]["params"]
|
|
assert agent_params["llm_id"] == "agnuxo/cajal-4b-p2pclaw@Ollama"
|
|
assert agent_params["max_tokens"] == 32768
|
|
assert "Agnuxo/CAJAL-4B-P2PCLAW" in agent_params["sys_prompt"]
|
|
assert "LaTeX" in agent_params["sys_prompt"]
|
|
|
|
|
|
def test_cajal_template_keeps_retrieval_grounding_and_graph_form_in_sync():
|
|
template = _load_cajal_template()
|
|
agent_params = template["dsl"]["components"]["Agent:NewPumasLick"]["obj"]["params"]
|
|
retrieval_tools = [tool for tool in agent_params["tools"] if tool["component_name"] == "Retrieval"]
|
|
|
|
assert len(retrieval_tools) == 1
|
|
assert retrieval_tools[0]["params"]["top_n"] == 10
|
|
assert "ground" in retrieval_tools[0]["params"]["description"].lower()
|
|
assert "{sys.query}" in agent_params["prompts"][0]["content"]
|
|
|
|
agent_node = next(node for node in template["dsl"]["graph"]["nodes"] if node["id"] == "Agent:NewPumasLick")
|
|
begin_node = next(node for node in template["dsl"]["graph"]["nodes"] if node["id"] == "begin")
|
|
|
|
assert agent_node["data"]["form"]["llm_id"] == agent_params["llm_id"]
|
|
assert agent_node["data"]["form"]["sys_prompt"] == agent_params["sys_prompt"]
|
|
assert "CAJAL" in begin_node["data"]["form"]["prologue"]
|
|
|
|
|
|
def test_cajal_is_registered_as_a_known_ollama_chat_model():
|
|
repo_root = Path(__file__).resolve().parents[1]
|
|
factories_path = repo_root / "conf" / "llm_factories.json"
|
|
factories = json.loads(factories_path.read_text(encoding="utf-8"))
|
|
ollama = next(factory for factory in factories["factory_llm_infos"] if factory["name"] == "Ollama")
|
|
cajal = next(model for model in ollama["llm"] if model["llm_name"] == "agnuxo/cajal-4b-p2pclaw")
|
|
|
|
assert cajal["model_type"] == "chat"
|
|
assert cajal["max_tokens"] == 32768
|
|
assert "SCIENTIFIC_WRITING" in cajal["tags"]
|